Alguns aplicativos, como os que gerenciam carrinhos de compras, informações de login, preferências do usuário ou estados de jogos, exigem que as requisições de um único cliente sejam roteadas consistentemente para o mesmo servidor de backend. Se as requisições de um cliente forem distribuídas entre servidores diferentes, o estado da sessão poderá ser perdido, prejudicando a experiência do usuário. Ao ativar a persistência de sessão no Application Load Balancer (ALB), você garante que as requisições do mesmo cliente sejam encaminhadas para o mesmo servidor de backend, mantendo a integridade dos dados e uma experiência consistente.
Contexto
Por padrão, o ALB distribui requisições para diferentes servidores de backend. Após você ativar a persistência de sessão, as requisições do mesmo cliente são encaminhadas para o mesmo servidor de backend. Isso permite que o servidor de backend mantenha informações de status e forneça service contínuo ao cliente.
Persistência de sessão desativada: O ALB encaminha cada requisição do mesmo cliente de forma independente; portanto, requisições consecutivas desse cliente podem ser distribuídas para servidores de backend diferentes. Em alguns cenários, como aqueles em que você faz login em um servidor de backend para obter informações de interação, talvez seja necessário fazer login várias vezes.
Persistência de sessão ativada: As requisições do mesmo cliente são distribuídas para o mesmo servidor de backend do ALB. Em cenários onde é necessário fazer login em um servidor de backend para obter informações de interação, não há necessidade de repetir o processo de login múltiplas vezes.
Ao ativar a persistência de sessão para o ALB, selecione um método para manipulação de cookies. O ALB oferece suporte a dois métodos: inserir cookie e reescrever cookie.
-
Inserir cookie: Na primeira requisição do cliente, o ALB insere um cookie na resposta. Especificamente, o ALB insere dois cookies:
SERVERIDeSERVERCORSID. O cookieSERVERCORSIDbaseia-se noSERVERIDe inclui o atributosamesite=None. Quando o cliente faz requisições subsequentes que incluem esse cookie, o ALB direciona as requisições para o servidor de backend registrado anteriormente.NotaO método de inserção de cookie inclui automaticamente
SameSite=None, portanto, nenhuma configuração adicional é necessária. Isso resolve efetivamente problemas em que os navegadores não conseguem salvar o cookie em cenários de compartilhamento de recursos de origem cruzada (CORS) que envolvem regras de encaminhamento do ALB. Reescrever cookie: Quando o ALB detecta um cookie definido pelo usuário, ele reescreve o cookie original. Nas requisições subsequentes feitas pelo cliente com o novo cookie, o ALB direciona as requisições para o servidor de backend registrado anteriormente.
Limitações
A Edição Extensível do ALB não oferece suporte à persistência de sessão.
Grupos de servidores do Function Compute não exigem persistência de sessão. Para mais informações, consulte Criar e excluir um grupo de servidores.
Pré-requisitos
Você possui uma instância ALB voltada para a Internet com status Running. Para mais informações, consulte Criar e gerenciar uma instância ALB.
Você criou um grupo de servidores do tipo servidor ou do tipo IP. Para mais informações, consulte Criar e excluir um grupo de servidores.
Você criou dois servidores de backend, ECS01 e ECS02, para receber requisições. Cada instância executa um service de backend diferente para retornar uma resposta distinta. Por exemplo, uma requisição para o ECS01 retorna
"Hello World ! This is ECS01.", e uma requisição para o ECS02 retorna"Hello World ! This is ECS02.". Certifique-se de que o grupo de segurança permita tráfego de entrada nas portas de service necessárias.Você adicionou os servidores de backend ECS01 e ECS02 ao grupo de servidores. Para mais informações, consulte Adicionar e remover servidores de backend.
Você configurou um listener para a instância. Para mais informações, consulte Adicionar um listener HTTP, Adicionar um listener HTTPS ou Adicionar um listener QUIC.
Etapa 1: Configure persistência de sessão
Faça login no console do ALB.
Na barra de navegação superior, selecione a região onde o grupo de servidores está implantado.
No painel de navegação à esquerda, escolha .
Na página Server Groups, localize o grupo de servidores desejado e clique em Edit Server Group na coluna Actions.
-
Na caixa de diálogo Modify Basic Information, ative a persistência de sessão.
Ative a Session Persistence e selecione uma Cookie Option.
Selecione Insert Cookie, defina o Session Persistence Timeout Period e clique em Save.
-
Selecione Rewrite Cookie, defina o Nome do Cookie e clique em Save.
Neste exemplo, o nome do cookie está definido como
BACKEND_SERVER. Este nome serve apenas para fins de demonstração. Você pode especificar um nome personalizado.
(Opcional) Etapa 2: Configure cookies nos servidores de backend
Configure o cookie nos servidores de backend apenas se utilizar o método de reescrita de cookie para persistência de sessão.
Conecte-se à instância ECS. Para mais informações, consulte Guia de conexão para instâncias ECS.
-
Configure o cookie de acordo com seu servidor web.
NotaA configuração de cookies varia conforme o servidor web. Os exemplos a seguir abrangem servidores web comuns. Caso seu servidor web não esteja listado, consulte a documentação oficial dele para obter a configuração correta.
Nginx
Esta seção fornece um exemplo de como configurar um servidor NGINX 1.20.1 executado no CentOS 7.9. A configuração pode variar dependendo do seu ambiente.
-
Modifique e salve o arquivo de configuração do Nginx. Para as modificações necessárias, veja as instruções abaixo. Execute o comando
nginx -tpara visualizar o caminho do arquivo de configuração. Geralmente, o arquivo de configuração é onginx.confno diretório/etc/nginx, mas o caminho real pode variar conforme o ambiente.http { # ... server { listen 80; # Set BACKEND_SERVER to the cookie name that you specified when you configured the rewrite cookie method. You can use a custom string for the value. add_header Set-Cookie "BACKEND_SERVER=value"; # ... } } -
Execute o seguinte comando para recarregar o arquivo de configuração do NGINX:
sudo nginx -s reload
Apache
Esta seção apresenta um exemplo de configuração de um servidor Apache 2.4.6 executado no CentOS 7.9. A configuração pode variar dependendo do seu ambiente.
-
Modifique e salve o arquivo de configuração do service Apache. Para as alterações necessárias, consulte as instruções abaixo. O caminho padrão geralmente é
/etc/httpd/conf/httpd.conf, mas o caminho real depende do seu ambiente.# ... Listen 80 # Set BACKEND_SERVER to the cookie name that you specified when you configured the rewrite cookie method. You can use a custom string for the value. Header always set Set-Cookie "BACKEND_SERVER=value" # ... -
Execute o seguinte comando para recarregar o arquivo de configuração do Apache e aplicar as alterações:
sudo systemctl reload httpd.service
-
Repita as etapas anteriores para modificar as configurações dos outros servidores de backend no grupo de servidores.
Etapa 3: Verifique a persistência de sessão
Faça login no console do ALB.
Na barra de navegação superior, selecione uma região. Localize a instância ALB desejada e copie seu nome de domínio.
-
Em um navegador, insira o nome de domínio. Uma página de um dos seus servidores será exibida. Atualize a página várias vezes. O conteúdo da página deve permanecer o mesmo.
Por exemplo, se sua primeira requisição for roteada para o ECS01, todas as requisições subsequentes após atualizar a página também serão roteadas para o ECS01.
Se as respostas alternarem entre ECS01 e ECS02 após várias atualizações, a persistência de sessão não está funcionando corretamente. Verifique erros na configuração e teste novamente.
Documentos relacionados
Caso enfrente problemas durante a configuração, consulte Perguntas frequentes sobre o ALB.
Se encontrar um problema de verificação de integridade, consulte Solucionar problemas de verificação de integridade do ALB.