HAProxy e “sharding”

4

Estou comentando isso pelo estouro de pilha, pois foi sugerido que eu poderia obter uma resposta melhor aqui ...

Eu queria saber se alguém usou o HAProxy para sharding. Especificamente, eu gostaria de poder usar um cookie que defino com um identificador e ter qualquer cliente que apresente essa combinação de cookie / identificador direcionada para o mesmo servidor. Parece possível e meus testes preliminares parecem funcionar, mas não tenho certeza.

Minha configuração de escuta se parece com:

listen  appli1-rewrite 0.0.0.0:80
cookie  mysession= prefix
balance roundrobin
server  app1_1 192.168.0.1:80 cookie server01
server  app1_2 192.168.0.2:80 cookie server02
option  httpclose

No entanto, quando olho para os cabeçalhos de solicitação usando cabeçalhos Live Http, não vejo o cookie mysession indicando qual servidor ele irá, que é o que eu esperava com base na operação de prefixo. Eu sou muito novo no HAProxy, então qualquer ajuda / orientação seria ótima!

    
por PriceChild 26.06.2009 / 16:23

5 respostas

3

primeiro, remova o sinal de igual após o nome do cookie, caso contrário ele nunca será partida. Em segundo lugar, por favor, verifique se o seu servidor define corretamente a "mysessão" cookie, como o modo de prefixo do cookie depende do servidor para definir o cookie. E se não, use o modo de inserção em vez disso. Em terceiro lugar, por favor, adicione "opção httpclose" na sua configuração, porque se houver algum tipo de keepalive, o haproxy não verá o cookie (ou não conseguirá distorcê-lo).

Esperando que isso ajude,
Willy

    
por 16.07.2009 / 07:01
2

Sua configuração está OK. Você pode verificar nos logs que o cookie apresentado pelo cliente foi reconhecido e usado. Ele colocará a letra 'V' na primeira posição nas flags de status de 4 caracteres (por exemplo: VN--). Primeiras solicitações sem um cookie válido terão um 'N'. Por favor, verifique o documento para mais informações, você terá tudo isso na seção 8.5. Você também pode ativar a página de estatísticas e verificá-las enquanto navega. Você deve ver que a coluna "LbTot" só aumenta uma vez por novo cliente e não é mais incrementada para um mesmo cliente.

    
por 27.06.2009 / 23:17
1

Você pode experimentar o recurso de cookie de captura (tudo depende do aplicativo servido) em sua seção de escuta, consulte: link :

Only the first cookie is captured. Both the "cookie" request headers and the "set-cookie" response headers are monitored. This is particularly useful to check for application bugs causing session crossing or stealing between users, because generally the user's cookies can only change on a login page.

Example: capture cookie ASPSESSION len 32


Aliás, parece que a sua configuração está ok.

    
por 26.06.2009 / 16:39
1
listen corporate_web_live
  bind 1.2.3.4:80  # site1.com
  bind 1.2.3.5:80  # site2.com
    option httpchk HEAD /server.txt HTTP/1.0
    cookie HAPSRV insert postonly indirect
    server webapp-corp-1 10.0.0.1:80 weight 50 maxconn 150 slowstart 30s cookie WAC1 check
    server webapp-corp-2 10.0.0.2:80 weight 50 maxconn 150 slowstart 30s cookie WAC2 check
    server webapp-corp-3 10.0.0.3:80 weight 50 maxconn 150 slowstart 30s cookie WAC3 check
    server webapp-corp-4 10.0.0.4:80 weight 50 maxconn 150 slowstart 30s cookie WAC4 check
    server webapp-corp-5 10.0.0.5:80 weight 50 maxconn 150 slowstart 30s cookie WAC5 check
    server webapp-corp-6 10.0.0.6:80 weight 50 maxconn 150 slowstart 30s cookie WAC6 check

Observe o uso de 'insert', 'postonly' e 'indirect' no exemplo acima - isso faz com que o HAproxy lance um cookie conforme necessário para os fluxos que o atravessam.

    
por 28.06.2009 / 11:21
0

Eu testei a captura de cookies e ela não mostrou nenhuma diferença em relação ao que os cabeçalhos HTTP ao vivo estavam me mostrando ... Quando eu altero a configuração de modo que o haproxy insira seu próprio cookie, posso vê-lo nos cabeçalhos http ... Estou começando a acreditar que meus testes originais podem estar com defeito.

    
por 26.06.2009 / 19:41