Como definir a afinidade da sessão (serviços)

Nesta página, mostramos como ativar a afinidade de sessão para sua revisão de serviço do Cloud Run.

Por padrão, a afinidade de sessão não está ativada. Portanto, as solicitações do mesmo cliente podem ser processadas por instâncias diferentes, conforme mostrado aqui: image

Se você ativar a afinidade de sessão, o Cloud Run encaminhará solicitações sequenciais de um determinado cliente para a mesma instância de contêiner de revisão. O Cloud Run usa um cookie de afinidade de sessão com um TTL de 30 dias e inspeciona o valor para identificar várias solicitações do mesmo cliente e direciona todas essas solicitações para a mesma instância, conforme mostrado aqui: image

Principais comportamentos importantes

Conforme mostrado no diagrama acima, com a afinidade de sessão ativada, um cliente alcançará a mesma instância. No entanto, a instância do contêiner pode receber solicitações de clientes diferentes. A afinidade da sessão não significa que a instância está dedicada apenas a um cliente.

Devido ao comportamento de escalonamento automático do Cloud Run, a afinidade da sessão é de melhor esforço. Se a instância for reiniciada, encerrada, sobrecarregada ou ficar indisponível como resultado do número de instâncias sendo escalonadas, a afinidade de sessão será interrompida e outras solicitações serão roteadas para uma instância diferente.

É possível armazenar em cache os dados da sessão do cliente na memória de instâncias, mas não é possível presumir que um cliente sempre se reconectará à mesma instância, mesmo quando a afinidade da sessão estiver ativada.

Se você usa o Cloud Load Balancing, a afinidade da sessão do serviço do Cloud Run poderá ser acoplada à afinidade da sessão de balanceadores de carga globais e internos.

Afinidade da sessão e divisão de tráfego

Ative ou desative a afinidade da sessão no nível da revisão. Se você ativar a afinidade de sessão em uma revisão do Cloud Run e também usar a divisão de tráfego, a afinidade de sessão terá precedência sobre qualquer divisão de tráfego. Em casos extremos, se um único cliente que usa a afinidade da sessão for responsável pela grande maioria de todas as solicitações, todas elas poderão ser roteadas para uma determinada revisão, independentemente da configuração de divisão de tráfego.

Se você ativar a divisão de tráfego para revisões em que algumas das revisões têm afinidade de sessão ativada e outras não, o resultado será que as solicitações serão redirecionadas gradualmente para revisões com a afinidade de sessão ativada, mesmo que você não faça isso explicitamente { 101}mudar a configuração de divisão de tráfego. Isso acontece porque cada solicitação que não tem um cookie de afinidade de sessão anexado está sujeita a uma divisão aleatória, em que algumas solicitações serão atribuídas a uma revisão com afinidade de sessão e, consequentemente, a essas solicitações. permanecerá com essa revisão específica.

Ao atualizar a configuração de divisão de tráfego para um serviço do Cloud Run, as solicitações subsequentes com cookies de afinidade de sessão anexadas podem ser atribuídas a uma revisão diferente. O Cloud Run minimiza o número de clientes que são redirecionados para uma nova revisão.

Por exemplo, se um serviço estiver dividindo o tráfego em 90%/10%, e a divisão de tráfego for atualizada para 80%/20%, 10% do tráfego será redirecionado para a revisão que agora é veiculando 20% do tráfego.

Definir afinidade da sessão

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

É possível definir a afinidade da sessão usando o Console do Google Cloud, a linha de comando do gcloud ou um arquivo .yaml ao criar um novo serviço ou implantar uma nova revisão:

Console

  1. No console do Google Cloud, acesse o Cloud Run:

    Acesse o Cloud Run

  2. Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Se você estiver configurando um novo serviço, preencha a página inicial de configurações do serviço conforme preferir e clique em Contêineres, volumes, rede, segurança para expandir a página de configurações do serviço.

  4. Clique na guia Rede.

    imagem

    • Clique na caixa de texto Afinidade da sessão.
  5. Clique em Criar ou Implantar.

Linha de comando

Para especificar a afinidade da sessão, use o seguinte comando:

gcloud run services update SERVICE --session-affinity

Substituir

  • SERVICE pelo nome do serviço que você está atualizando.

Para remover a afinidade da sessão, use o comando

gcloud run services update SERVICE --no-session-affinity

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para ver e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Adicione a anotação run.googleapis.com/sessionAffinity::

    spec:
     template:
       metadata:
         annotations:
           run.googleapis.com/sessionAffinity: 'BOOL'

    Substituir

    • "BOOL" pelo valor "true" para definir a afinidade de sessão, ou "false" para remover a afinidade de sessão.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Ver configurações de afinidade da sessão

Para visualizar as configurações atuais de afinidade da sessão para seu serviço do Cloud Run:

Console

  1. No console do Google Cloud, acesse o Cloud Run:

    Acesse o Cloud Run

  2. Clique no serviço de seu interesse para abrir a página Detalhes do serviço.

  3. Clique na guia Revisões.

  4. No painel de detalhes à direita, a configuração de afinidade da sessão é listada na guia Rede.

Linha de comando

  1. Use o comando a seguir:

    gcloud run services describe SERVICE
  2. Localize a configuração de afinidade da sessão na configuração retornada.