Problema de aderência da sessão do AWS quando vários cookies AWSELB existem em uma única solicitação

3

Eu tenho dois aplicativos da web - App-A & App-B - executado em 2 instâncias do EC2 (ambos os aplicativos da web estão sendo executados em ambas as instâncias) liderado por um ELB da AWS. A viscosidade da sessão é ativada usando "Aplicação de aderência de cookie gerada pelo aplicativo" e o cookie é definido como "JSESSIONID".

A seguir, o cenário:

1) O usuário primeiro tenta acessar a App-B. A solicitação vai para o Node-A e o aplicativo cria um JSESSIONID com o caminho "/ appb /" e o ELB gera um cookie AWSELB para o mesmo caminho.

Set-cookie headers chegando ao navegador:

Set-Cookie: JSESSIONID=8629A2C6FA26A99678599B0868511610; Path=/appb/; Secure; HttpOnly
Set-Cookie: AWSELB=B321B10B128ADF1E237E8419717E1CC409A63A5C6B3EA2E2C6CEE56E4F76FCE48DFDA95F1F20ED1ADEED570326993D2492C17C070ED41500F3EDC7EB993ED53188BF73D37301213483075952D1ADAD619C3C890672;PATH=/appb/;SECURE;HTTPONLY

2) Então o usuário tenta acessar o App-A. A solicitação vai para o Node-B e o aplicativo cria um JSESSIONID com o caminho "/" e o ELB gera um cookie AWSELB para o mesmo caminho.

Set-cookie headers chegando ao navegador:

Set-Cookie: JSESSIONID=5DA3507629D0CB34DE1B032FA71D1CB2; Path=/; Secure; HttpOnly
Set-Cookie: AWSELB=B321B10B128ADF1E237E8419717E1CC409A63A5C6BC5080020E5701A0FB3756B152B401A70BF4CA755D30D9B06C82E5C1EB2E81E99C160A62D108BDB79947DEF2E2421C11C513C2C7452FA63B46EE8DF693FB5ED03;PATH=/;SECURE;HTTPONLY

3) Agora o usuário tenta acessar a App-B novamente. O navegador envia os cookies JSESSIONID e os cookies 2 AWSELB para ele, porque os cookies da App-A são criados para "/". Tanto quanto eu sei, um cookie para o contexto raiz deve ser enviado para todos os outros contextos web no mesmo domínio.

A seguir, o cabeçalho do cookie que vai para o App-B:

Cookie: JSESSIONID=8629A2C6FA26A99678599B0868511610; AWSELB=B321B10B128ADF1E237E8419717E1CC409A63A5C6B3EA2E2C6CEE56E4F76FCE48DFDA95F1F20ED1ADEED570326993D2492C17C070ED41500F3EDC7EB993ED53188BF73D37301213483075952D1ADAD619C3C890672; JSESSIONID=5DA3507629D0CB34DE1B032FA71D1CB2; AWSELB=B321B10B128ADF1E237E8419717E1CC409A63A5C6BC5080020E5701A0FB3756B152B401A70BF4CA755D30D9B06C82E5C1EB2E81E99C160A62D108BDB79947DEF2E2421C11C513C2C7452FA63B46EE8DF693FB5ED03

Neste cenário, estou tendo problemas de viscosidade da sessão em que solicitações consecutivas de navegador para o App-B vão para os dois nós, em vez de apenas para o Nó-A.

Estou curioso em saber como o AWS ELB gerencia a viscosidade da sessão em tal situação. Com base no que seleciona 1 cookie AWSELB dos 2? Estou faltando alguma configuração no ELB?

Obrigado antecipadamente.

    
por drox 11.07.2014 / 13:49

1 resposta

3

Isso é simples, pela regra e pela prática padrão, é necessário usar um ELB para um aplicativo (mas nada impede que você use vários aplicativos de um ELB).

Solução Você precisa usar 2 ELBs para dois aplicativos diferentes

  • Explicação:

O propósito do ELB não é apenas distribuir a carga para nós diferentes, mas também manter a disponibilidade e o escalonamento (com servidores disponíveis altos).

Para obter a disponibilidade, você precisa fornecer uma estratégia de verificação de saúde que marcará um nó Fora de serviço se não estiver disponível. Se você for usar um ELB para vários aplicativos, qual será a verificação de saúde do aplicativo? O que basicamente derrotaria o propósito de alta disponibilidade.

Então, você precisa acabar criando ELBs individuais para cada aplicativo. o que resolveria o problema do cookie AWLELB comum. Como ambos terão cookies AWSELB diferentes conversando com ELBs diferentes.

Os BTW AWS ELBs não estão otimizados para fazer várias coisas como esta. Leia mais sobre isso em link

--- O Amazon ELB cola a solicitação quando o tráfego é gerado a partir do IP único - Esse ponto é uma surpresa para muitos usuários que usam o Amazon ELB. O Amazon ELB se comporta um pouco estranhamente quando o tráfego de entrada é originado de intervalos de IP Único ou Específico, ele não conclui com eficiência o round robin e adota o pedido.

    
por 07.04.2016 / 09:32