Fair SPOP load balancing for SPOA agents

Hello :wave:,

I configured my HP load balancer with a SPOE frontend filter. This filter requests additional data for the calling IP to a SPOA agent.
The amount of SPOP requests to my SPOA is quite impressive. So I set up a dedicated HP load balancer in front of these agents to balance SPOP requests between many agents.

This load balancer balances requests in tcp mode (round-robin). I can see that every agent backend has the same amount of connections opened. But the amount of bytes exchanged is not balanced. If I dig the metrics of my SPOA agents, I can see that some of them receive much more SPOP requests than the others. I chose to have long TCP sessions opened as the client for this SPOA load balancer is only my own principal load balancer. I want to avoid non necessary close / open connections.

I understand that balancing is done at tcp level, not at SPOP one.

Is there something I am missing in Haproxy reference which would allow a fair balancing of SPOP requests between my SPOA agents ?

Additional detail :
version: 1.8.28
SPOA load balancer config:

global
    log 127.0.0.1 local1 info
    nbproc 8

defaults
    log global
    option redispatch
    balance roundrobin
    timeout connect 20ms
    option tcpka
    no option forceclose

frontend agent_spoa
    maxconn 140000
    mode tcp
    timeout client 60s
    bind *:12346 ssl no-sslv3 crt /etc/ssl/my.pem ciphers [...] no-tls-tickets
    default_backend server_spoa

backend server_spoa
    timeout server 60s
    timeout connect 3s
    server 10.x.x.x:12346 10.x.x.x:12346 check port 12346 send-proxy
    ...
    server 10.x.x.x:12346 10.x.x.x:12346 check port 12346 send-proxy
1 Like