Sessões fixas com cookies baseados em aplicativos - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Sessões fixas com cookies baseados em aplicativos

Quando você usa um Application Load Balancer com um cookie baseado em aplicativo:

  • O Application Load Balancer usa o peso do grupo-alvo para determinar como equilibrar o tráfego de entrada entre os grupos-alvo.

  • Por padrão, o Application Load Balancer usa o método round robin para encaminhar solicitações para as EC2 instâncias no grupo-alvo de destino.

  • Depois que o tráfego é roteado inicialmente para uma EC2 instância, a resposta do aplicativo da EC2 instância deve conter um cookie de aplicativo personalizado, que é enviado de volta ao cliente junto com um cookie automatizado do Application Load Balancer.

  • O tráfego subsequente permanecerá na EC2 instância se o cliente devolver o cookie do aplicativo e o cookie Application Load Balancer.

  • O cookie baseado no aplicativo expira após o não uso durante o período configurado.

Modelo: use o AWS CloudFormation modelo stickysessionsapp.yml (incluído no arquivo.zip do código de amostra) para experimentar sessões fixas com cookies baseados em aplicativos.

Casos de uso comuns

Use sessões fixas com cookies gerados pelo aplicativo quando quiser controle adicional nesses cenários:

  • Servidores web PHP

  • Servidores que mantêm dados temporários da sessão, como registros, carrinhos de compras ou conversas de bate-papo

Alterações no código de basic.yml

A única alteração no código está na configuração do grupo-alvo. Adicionamos uma configuração de aderência ao Application Load Balancer e aos atributos do grupo-alvo. A duração do cookie do aplicativo é especificada e o grupo-alvo tem a aderência do cookie do aplicativo ativada.

basic.yml stickysessionsapp.yml
TG1: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: TG1 Protocol: HTTP Port: 80 TargetType: instance Targets: - Id: !Ref Instance1 - Id: !Ref Instance2 VpcId: !Ref CustomVPC
TG1: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: TG1 Protocol: HTTP Port: 80 TargetType: instance Targets: - Id: !Ref Instance1 - Id: !Ref Instance2 VpcId: !Ref CustomVPC TargetGroupAttributes: - Key: stickiness.enabled Value: true - Key: stickiness.type Value: app_cookie - Key: stickiness.app_cookie.duration_seconds Value: 10 - Key: stickiness.app_cookie.cookie_name Value: TESTCOOKIE

Etapas

Observações
  • Os gateways NAT têm um custo pequeno.

  • Várias EC2 instâncias usarão suas horas de nível gratuito mais rápido do que uma única EC2 instância.

  1. Implante o CloudFormation modelo stickysessionslb.yml em um ambiente de laboratório.

  2. Espere até que o status de saúde das instâncias do seu grupo-alvo mude de inicial para íntegro.

  3. Navegue até o URL do Application Load Balancer em um navegador da Web, usando HTTP (TCP/80).

    Por exemplo: http://alb-123456789.us-east-1.elb.amazonaws.com/

    A página da Web exibe uma das seguintes opções: Instância 1 - TG1, Instância 2 - TG1, Instância 3 - TG2 ou Instância 4 - TG2.

  4. Atualize a página várias vezes.

Resultados esperados

nota

O CloudFormation modelo neste exemplo configurou a aderência para durar 10 segundos. A configuração válida da duração da aderência é entre 1 segundo e 1 semana.

A instância que carrega a página da Web deve permanecer a mesma, conforme indicado pelo texto da página.

A duração da aderência não é atualizada, mas é baseada na expiração configurada no Application Load Balancer para o cookie do aplicativo gerado pela instância. EC2

Exemplo 1: Aguarde 5 segundos para atualizar a página. A mesma instância será carregada e a aderência será atualizada por mais 10 segundos.

Exemplo 2: Aguarde mais de 10 segundos para recarregar a página. O cookie do aplicativo expira e você é direcionado para uma instância diferente EC2 . Essa nova instância gera outro cookie de aplicativo com duração de 10 segundos.

Como funciona

  • Neste exemplo, as EC2 instâncias têm um servidor web Apache (httpd) instalado. O httpd.conf arquivo está configurado para retornar um Set-Cookie valor estático ao cliente (seu navegador da web). O Set-Cookie valor está codificado para ser. TESTCOOKIE=<somevalue>

  • Abra a opção Inspecionar elemento do seu navegador, escolha a guia Rede e, em seguida, escolha o método Get, que carrega a página. Você verá uma guia Cookies.

  • O navegador é um aplicativo cliente configurado automaticamente para retornar quaisquer atualizações subsequentes ao servidor com os cookies que recebe na Set-Cookie resposta do servidor.

  • Quando você recarrega a página, os cookies recebidos no carregamento inicial da página são automaticamente enviados de volta ao Application Load Balancer.

    • Se o cookie tiver expirado (ou seja, 10 segundos se passaram desde que você fez a última chamada), o Application Load Balancer usa uma nova lógica para determinar para EC2 qual instância rotear o tráfego.

    • Se o cookie não tiver expirado, o Application Load Balancer direcionará o tráfego para a EC2 mesma instância.