

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
<a name="app-cookies-stickiness"></a>

Quando você usa um Application Load Balancer com um cookie baseado em aplicativo:
+ O Application Load Balancer usa o [peso do grupo-alvo](https://aws.amazon.com/premiumsupport/knowledge-center/elb-make-weighted-target-groups-for-alb/) 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](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#modify-routing-algorithm) 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 CloudFormation modelo `stickysessionsapp.yml` (incluído no [arquivo.zip do código de amostra](samples/stickiness.zip)) para experimentar sessões fixas com cookies baseados em aplicativos. 

## Casos de uso comuns
<a name="app-cookies-use-cases"></a>

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 name="app-cookies-code-changes"></a>

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 | 
| <pre>TG1:<br />   Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'<br />   Properties:<br />     Name: TG1<br />     Protocol: HTTP<br />     Port: 80<br />     TargetType: instance<br />     Targets:<br />       - Id: !Ref Instance1<br />       - Id: !Ref Instance2<br />VpcId: !Ref CustomVPC</pre> | <pre>TG1:<br />  Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'<br />  Properties:<br />    Name: TG1<br />    Protocol: HTTP<br />    Port: 80<br />    TargetType: instance<br />    Targets:<br />      - Id: !Ref Instance1<br />      - Id: !Ref Instance2<br />    VpcId: !Ref CustomVPC<br />    TargetGroupAttributes:<br />      - Key: stickiness.enabled<br />        Value: true<br />      - Key: stickiness.type<br />        Value: app_cookie<br />      - Key: stickiness.app_cookie.duration_seconds<br />        Value: 10<br />      - Key: stickiness.app_cookie.cookie_name<br />        Value: TESTCOOKIE</pre> | 

## Etapas
<a name="app-cookies-steps"></a>

**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.

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

1. 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**.

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

## Resultados esperados
<a name="app-cookies-results"></a>

**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
<a name="app-cookies-how"></a>
+ 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.