Partilhar via


Visão geral da afinidade de sessão do Application Gateway for Containers

A afinidade de sessão, também conhecida como persistência de sessão ou sessões adesivas, é uma técnica usada no balanceamento de carga para garantir que as solicitações de um cliente sejam sempre enviadas para o mesmo servidor. Isso é importante para aplicativos que armazenam dados do usuário em variáveis de sessão ou em um cache local em um servidor específico (geralmente chamado de aplicativo com monitoração de estado).

Com afinidade de sessão, o Application Gateway for Containers apresenta um cookie no cabeçalho Set-Cookie da primeira resposta. Se o cliente apresentar o cookie em solicitações futuras, o Application Gateway for Containers reconhecerá o cookie e encaminhará o tráfego para o mesmo destino de back-end. Veja o seguinte cenário de exemplo:

Um diagrama que descreve a afinidade de sessão do Application Gateway for Containers.

As seguintes etapas são descritas no diagrama anterior:

  1. Um cliente inicia uma solicitação para um front-end do Application Gateway for Containers (Application Gateway for Containers).
  2. O Application Gateway for Containers seleciona um dos muitos pods disponíveis para balancear a carga da solicitação. Neste exemplo, assumimos que o Pod C está selecionado entre os quatro pods disponíveis.
  3. O Pod C retorna uma resposta ao Application Gateway for Containers.
  4. Além da resposta de back-end do Pod C, o Application Gateway for Containers adiciona um cabeçalho Set-Cookie contendo um hash gerado exclusivamente usado para roteamento.
  5. O cliente envia outra solicitação para o Application Gateway for Containers junto com o cookie de afinidade de sessão definido na etapa anterior.
  6. O Application Gateway for Containers deteta o cookie e seleciona o Pod C para atender à solicitação.
  7. O Pod C responde ao Application Gateway for Containers.
  8. O Application Gateway for Containers retorna a resposta ao cliente

Detalhes de utilização

A afinidade de sessão é definida pelas seguintes propriedades e características:

Nome Descrição
afinidadeTipo Os valores válidos são application-cookie ou managed-cookie.
cookieNome Obrigatório se affinityType for application-cookie. Este é o nome do cookie.
cookieDuração Obrigatório se affinityType for application-cookie. Esta é a duração (tempo de vida) do cookie em segundos.

No tipo de afinidade de cookie gerenciado, o Application Gateway usa valores predefinidos quando o cookie é oferecido ao cliente.

  • O nome do cookie é: AGCAffinity.
  • A duração (tempo de vida) do cookie é de 86.400 segundos (um dia).
  • As cookieName propriedades e valores e cookieDuration são descartados.

No tipo de afinidade de aplicativo, o nome do cookie e a duração (tempo de vida) devem ser explicitamente definidos.

Como configurar a afinidade de sessão

A afinidade de sessão pode ser definida em um recurso RoutePolicy , que tem como alvo um HTTPRoute definido. Você deve especificar sessionAffinity com um affinityType de ou application-cookie managed-cookie. Neste exemplo, usamos application-cookie como affinityType e definimos explicitamente um nome e um tempo de vida do cookie.

Exemplo de comando para criar um novo RoutePolicy com um cookie definido chamado nomnom com um tempo de vida de 3.600 segundos (1 hora).

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: RoutePolicy
metadata:
  name: session-affinity-route-policy
spec:
  targetRef:
    kind: HTTPRoute
    name: http-route
    namespace: test-infra
    group: ""
  default:
    sessionAffinity: 
      affinityType: "application-cookie"
      cookieName: "nomnom"
      cookieDuration: 3600
EOF