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

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

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:

    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

  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:

    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.