O que é o HAProxy appsession request-learn?

2

Estou lendo o manual HAProxy e há uma parte que eu não sou compreensão:

request-learn
               If this option is specified, then haproxy will be able to learn
               the cookie found in the request in case the server does not
               specify any in response. This is typically what happens with
               PHPSESSID cookies, or when haproxy's session expires before
               the application's session and the correct server is selected.
               It is recommended to specify this option to improve reliability.

O que significa "caso o servidor não especifique nenhum em resposta", especificamente a que servidor está respondendo e qual é o objetivo de aprender um cookie se o servidor não especificar um?

A questão de "quando a sessão do haproxy expira antes da sessão do aplicativo" parece importante, mas seu tratamento pelo haproxy não faz sentido para mim aqui.

    
por Bijou Trouvaille 28.04.2012 / 21:25

1 resposta

2

Normalmente, quando você está usando um cookie, ele vem em uma resposta do servidor back-end com um cabeçalho "set-cookie". Isso geralmente é em resposta a um login. Se isso não acontecer, o HAProxy não conseguirá colocá-lo no mesmo servidor de back-end

Esta opção permite que o HAProxy "aprenda" sobre um cookie com base em uma solicitação HTTP e não apenas uma resposta HTTP com "set-cookie".

Para responder às suas perguntas específicas:

"O que o servidor está respondendo?" Qualquer solicitação HTTP

"Qual é o objetivo de aprender um cookie que o servidor não forneceu?" Ele permite que o HAProxy execute a aderência quando você tem um servidor que faz coisas não-padrão e não / não pode fornecer o cookie como esperado. Um exemplo que ele fornece é o cookie "PHPSESSID".

"A sessão do HAproxy expira antes da sessão do aplicativo?" O HAProxy armazena os cookies para executar a viscosidade. Eles têm um TTL antes que eles não sejam mais bons. No caso em que o TTL para o servidor de backend é maior que o TTL para HAProxy, o HAProxy esquecerá o cookie antes do servidor de backend. O cliente terá o Cookie na solicitação e o HAProxy poderá reaprender o cookie.

Seu ceticismo está bem colocado, porque se os servidores de back-end não replicarem as informações da sessão, essa opção terá utilidade limitada no caso de TTL. No entanto, ele ainda se aplica ao cenário de caso de cookie não padrão.

    
por 08.04.2016 / 18:53