Alguns aplicativos, como os que gerencie carrinhos de compras, informações de login, preferências do usuário ou status de jogos, exigem que as requisições de um único cliente sejam roteadas consistentemente para o mesmo servidor de backend. Se essas requisições forem distribuídas entre servidores diferentes, o status da sessão poderá ser perdido, degradando a experiência do usuário. Ao ative 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 proporcionando uma experiência de usuário consistente.
Contexto
Por padrão, o ALB distribui as requisições para diferentes servidores de backend. Após ative a persistência de sessão, as requisições de um mesmo cliente são encaminhadas para o mesmo servidor de backend. Isso permite que o servidor de backend mantenha as informações de status e forneça um service contínuo ao cliente.
Persistência de sessão desativada: O ALB encaminha cada requisição do mesmo cliente de forma independente, então, as requisições consecutivas desse cliente podem ser distribuídas para servidores de backend diferentes. Em alguns cenários, como ao fazer login em um servidor de backend para obter informações de interação, você talvez precise fazer login no servidor de backend 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 como ao fazer login em um servidor de backend para obter informações de interação, não é necessário fazer login no servidor várias vezes.
Ao ative a persistência de sessão no ALB, você deve selecione um método para o tratamento de cookies. O ALB oferece suporte a dois métodos: inserção de cookie e reescrita de cookie.
-
Inserção de cookie: Na primeira requisição do cliente, o ALB insere um cookie na resposta. Especificamente, o ALB insere dois cookies:
SERVERIDeSERVERCORSID. O cookieSERVERCORSIDtem como base oSERVERIDe inclui o atributosamesite=None. Quando o cliente envia requisições subsequentes com 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 eficazmente os problemas em que os navegadores não conseguem salvar o cookie em cenários de CORS (compartilhamento de recursos de origem cruzada) envolvendo regras de encaminhamento do ALB. Reescrita de cookie: Quando o ALB detecta um cookie defina pelo usuário, ele reescreve o cookie original. Quando o cliente envia requisições subsequentes com o novo cookie, o ALB direciona as requisições para o servidor de backend registrado anteriormente.
Limitações
O ALB Extensible Edition não oferece suporte à persistência de sessão.
A persistência de sessão não é necessária para grupos de servidores do Function Compute. Para mais informações, consulte crie e exclua um grupo de servidores.
Pré-requisitos
Você tem uma instância de ALB voltada para a Internet no status Running. Para mais informações, consulte crie e gerencie uma instância de ALB.
Você criou um grupo de servidores do tipo servidor ou do tipo IP. Para mais informações, consulte crie e exclua um grupo de servidores.
Você criou dois servidores de backend, ECS01 e ECS02, para receber requisições. Cada instância execute 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 o 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 a 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 de destino 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.
Recomendamos que o tempo limite de persistência de sessão corresponda ao ciclo de vida das sessões do seu aplicativo. Se o tempo limite for muito longo, o ALB não poderá encaminhar as requisições do cliente para servidores de backend recém-adicionados por um período prolongado, o que pode causar desequilíbrio de carga. Se o tempo limite for muito curto, a persistência de sessão poderá falhar.
-
selecione Rewrite Cookie, defina o Cookie Name e clique em Save.
Neste exemplo, o nome do cookie é definido como
BACKEND_SERVER. Este nome é apenas para fins de demonstração. Você pode especifique um nome personalizado.
-
(Opcional) Etapa 2: configure cookies nos servidores de backend
configure o cookie nos servidores de backend apenas se usar o método de reescrita de cookie para a 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 com base no seu servidor web.
NotaA configuração de cookies varia de acordo com o servidor web. Os exemplos a seguir abordam os servidores web mais comuns. Se o seu servidor web não estiver 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 em execução no CentOS 7.9. A configuração pode variar de acordo com o seu ambiente.
-
modifique e salve o arquivo de configuração do Nginx. Consulte as instruções abaixo para as modificações necessárias. execute o comando
nginx -tpara visualize o caminho do arquivo de configuração. O arquivo de configuração geralmente é onginx.confno diretório/etc/nginx, mas o caminho real pode variar dependendo do seu 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 comando a seguir para recarregar o arquivo de configuração do NGINX:
sudo nginx -s reload
Apache
Esta seção fornece um exemplo de como configurar um servidor Apache 2.4.6 em execução no CentOS 7.9. A configuração pode variar de acordo com o seu ambiente.
-
modifique e salve o arquivo de configuração do service Apache. Consulte as instruções abaixo para as alterações necessárias. 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 comando a seguir para recarregar o arquivo de configuração do Apache e aplicar as alterações:
sudo systemctl reload httpd.service
-
Repita as etapas anteriores para modifique 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 de destino e copie seu nome de domínio.
-
No navegador, insira o nome de domínio. O navegador exibirá uma página de um dos seus servidores. Atualize a página várias vezes. O conteúdo da página deve permanecer o mesmo.
Por exemplo, se a sua primeira requisição for roteada para o ECS01, todas as requisições subsequentes ao 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 se há erros na sua configuração e teste novamente.
Documentos relacionados
Se encontrar 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.