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.

Como a afinidade da sessão funciona

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: imagem

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: imagem

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 encerrada por qualquer motivo ou atingir a simultaneidade de solicitação máxima ou a utilização de CPU máxima, a afinidade da sessão será interrompida e as 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 está ativada.

A afinidade da sessão do Cloud Load Balancing e a afinidade da sessão do Cloud Run são duas implementações separadas e independentes. É possível ativar a afinidade da sessão do Cloud Run em um serviço do Cloud Run, mesmo que ela esteja por trás de um balanceador de carga. No entanto, não ative a afinidade da sessão do Cloud Load Balancing em um grupo de endpoints de rede sem servidor, porque ele não é compatível.

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

A afinidade da sessão é ativada ou desativada no nível de revisão. Se você ativar a afinidade da sessão em uma revisão do Cloud Run e também usar a divisão de tráfego, a afinidade da 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.

Ao ativar a divisão de tráfego para revisões em que algumas têm a afinidade da sessão ativada e outras não, isso resulta na movimentação gradual das solicitações para revisões com a afinidade da sessão ativada, mesmo que você não tenha alterado explicitamente a configuração de divisão de tráfego. O motivo para isso é que todas as solicitações que não têm um cookie de afinidade de sessão anexado estão sujeitas a uma divisão aleatória, em que algumas serão atribuídas a uma revisão com afinidade de sessão e, consequentemente, permanecerão com essa revisão específica.

Ao atualizar a configuração de divisão de tráfego de um serviço do Cloud Run, as solicitações subsequentes com cookies de afinidade da sessão anexados 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 essa divisão for atualizada para 80%/20%, 10% do tráfego será redirecionado para a revisão que está servindo 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:

    Acessar o Cloud Run

  2. Clique em Implantar contêiner e selecione Serviço para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Ao configurar um novo serviço, preencha a página inicial de configurações de serviço e clique em Contêineres, volumes, redes e segurança para expandir essa página.

  4. Clique na guia Rede.

    imagem

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

gcloud

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

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço, faça o download da configuração YAML correspondente:

    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. Crie ou atualize o serviç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:

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

gcloud

  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.