haproxy e conexões persistentes

1

Estou usando o HAproxy para balancear a carga entre mais servidores web. Esses servidores estão usando PHP e sessões para manter a sessão aberta.

Agora, eu acho que quando um usuário atualiza a página, ele é enviado para um desses servidores, mas, se ele é enviado para um servidor diferente, ele certamente perderá sua sessão, não?

A questão é principalmente: como fazer com que um cliente se conecte ao mesmo servidor?

Aqui está minha configuração para o back-end.

backend social_backend
mode http
option httplog
option http-server-close
option forceclose
no option httpclose
balance roundrobin
option forwardfor
timeout queue 5000
timeout server 86400000
timeout connect 86400000
timeout check 1s

server socket1 10.10.10.1:81 weight 1 maxconn 1024 check
server socket2 10.10.10.2:81 weight 1 maxconn 1024 check
server socket3 10.10.10.3:81 weight 1 maxconn 1024 check
    
por Enrico Tuttobene 21.04.2012 / 19:22

1 resposta

2

O que você está procurando é "sessões persistentes", e você pode usar o parâmetro appsession no HAProxy para habilitar isso:

appsession <cookie> len <length> timeout <holdtime> 
           [request-learn] [prefix] [mode <path-parameters|query-string>]

When an application cookie is defined in a backend, HAProxy will check when the server sets such a cookie, and will store its value in a table, and associate it with the server's identifier. Up to characters from the value will be retained. On each connection, haproxy will look for this cookie both in the "Cookie:" headers, and as a URL parameter (depending on the mode used). If a known value is found, the client will be directed to the server associated with this value. Otherwise, the load balancing algorithm is applied. Cookies are automatically removed from memory when they have been unused for a duration longer than .

The definition of an application cookie is limited to one per backend.

Example : appsession JSESSIONID len 52 timeout 3h

Consulte a documentação do HAProxy para mais detalhes.

    
por 21.04.2012 / 19:50