Temos um aplicativo Drupal que usa sso para fazer logon dos usuários.
Estamos usando os balanceadores de carga clássicos (ELB) da AWS, a AWS está nos dizendo que não há persistência de sessão no ELB.
O que estou tentando descobrir é como os cookies funcionam com não persistência nos balanceadores de carga clássicos.
O DNS example.com está apontado para o ELB. Existem 2 servidores no pool Server1 e Server2
O que queremos que aconteça é que, se um usuário acessar sua página inicial, http://example.com/user/12345/
digamos no servidor 1, se ainda não estiver logado, será redirecionado para a página sso http://example.com/user/login/sso
, fará login automaticamente e obterá um cookie SESS<hexnumber>
e, em seguida, redirecionará de volta parahttp://example.com/user/12345/
Não temos permissão para adicionar nenhum servidor de sessões (redis), qual é a garantia de que eles permanecerão no servidor 1 para ambos os redirecionamentos.
Que eu saiba, a cada ocorrência de 'example.com', o usuário pode terminar no servidor 1 ou no servidor 2.
Minha pergunta:
Se eles obtiverem o cookie no servidor1 e depois forem redirecionados para o servidor2, como o servidor2 saberá que um cookie já está atribuído a esse usuário no servidor1?
Eu pareço estar me pensando em círculos. Ao trabalhar com esse tipo de configuração no passado usando LBs sem persistência de sessão, usamos um servidor redis para manter as sessões e cada solicitação examinaria o servidor redis para obter as informações da sessão.
fonte
example.com
se os usuários receberem um cookie e mantê-los em www1.example.com ou www2.example.com?Se você não puder usar um banco de dados de gerenciamento de sessões como o Elasticache Redis (o Redis apenas para sessões não deve custar mais de US $ 15 por mês), a próxima melhor opção é ativar sessões permanentes no ELB;
https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html
Isso forçará os usuários a irem ao mesmo nó de back-end ao longo da sessão. Um "cookie gerado pelo balanceador de carga" com uma vida útil de 900 segundos deve ser bom o suficiente, mas você pode ajustar isso.
fonte