Configura la afinidad de sesión (servicios)

En esta página, se muestra cómo habilitar la afinidad de sesión para tu revisión del servicio de Cloud Run.

Cómo funciona la afinidad de sesión

De forma predeterminada, la afinidad de sesión no está habilitada, por lo que diferentes instancias pueden controlar las solicitudes del mismo cliente, como se muestra a continuación: imagen

Si habilitas la afinidad de sesión, Cloud Run enruta las solicitudes secuenciales para un cliente determinado a la misma instancia de revisión. Cloud Run usa una cookie de afinidad de sesión con un TTL de 30 días y, luego, inspecciona su valor para identificar varias solicitudes del mismo cliente y dirige todas estas solicitudes a la misma instancia, como se muestra a continuación: imagen

Comportamientos clave a tener en cuenta

Como se muestra en el diagrama anterior, con la afinidad de sesión habilitada, un cliente accederá a la misma instancia. Sin embargo, ten en cuenta que la instancia puede recibir solicitudes de diferentes clientes. La afinidad de sesión no significa que la instancia esté dedicada solo a un cliente.

Debido al comportamiento de ajuste de escala automático de Cloud Run, la afinidad de sesión es la mejor esfuerzo. Si la instancia se finaliza por algún motivo o alcanza la simultaneidad máxima de las solicitudes o el uso máximo de CPU, la afinidad de sesión se interrumpe y las solicitudes adicionales se enrutan a una instancia diferente.

Aunque puedes almacenar en caché los datos de la sesión del cliente en la memoria de las instancias, no puedes suponer que un cliente siempre se reconectará a la misma instancia, incluso cuando la afinidad de sesión está habilitada.

La afinidad de sesión de Cloud Load Balancing y la afinidad de sesión de Cloud Run son dos implementaciones independientes de la afinidad de sesión. Puedes habilitar la afinidad de sesión de Cloud Run en un servicio de Cloud Run, incluso si está detrás de un balanceador de cargas. Sin embargo, no debes habilitar la afinidad de sesión de Cloud Load Balancing en un grupo de extremos de red sin servidores, ya que no es compatible.

Afinidad de sesión y división del tráfico

Puedes habilitar o inhabilitar la afinidad de sesión a nivel de revisión. Si habilitas la afinidad de sesión en una revisión de Cloud Run y también usas la división del tráfico, la afinidad de sesión tiene prioridad sobre cualquier división del tráfico. En casos extremos, si un solo cliente que usa la afinidad de sesión es responsable de una gran mayoría de todas las solicitudes, todas esas solicitudes se pueden enrutar a una revisión determinada, independientemente de la configuración de división del tráfico.

Si habilitas la división del tráfico para las revisiones en las que algunas de las revisiones tienen habilitada la afinidad de sesión y otras no, el resultado es que las solicitudes se cambian de forma gradual a las revisiones que tienen habilitada la afinidad de sesión, aunque no cambies explícitamente la configuración de la división del tráfico. El motivo de esto es que cada solicitud que no tiene una cookie de afinidad de sesión adjunta está sujeta a una división aleatoria, con la que algunas se asignarán a una revisión con afinidad de sesión y, luego, esas solicitudes se quedarán con esa revisión en particular.

Cuando se actualiza la configuración de la división de tráfico para un servicio de Cloud Run, las solicitudes posteriores con cookies de afinidad de sesión adjuntas se pueden asignar a una revisión diferente. Cloud Run minimiza la cantidad de clientes que se redireccionan a una revisión nueva.

Por ejemplo, si un servicio dividió el tráfico en 90% y 10% y la división del tráfico se actualizó a 80% y 20%, el 10% del tráfico se redireccionará a la revisión que ahora entrega el 20% del tráfico.

Configura la afinidad de sesión

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

Puedes configurar la afinidad de sesión mediante la consola de Google Cloud, la línea de comandos de gcloud o un archivo .yaml cuando creas un servicio nuevo o implementas una revisión nueva:

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en Implementar contenedor y selecciona Servicio para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en implementar y editar la nueva revisión.

  3. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración del servicio.

  4. Haz clic en la pestaña Herramientas de redes.

    imagen

    • Haz clic en el cuadro de texto Afinidad de sesión.
  5. Haz clic en Crear o Implementar.

gcloud

Para especificar la afinidad de sesión, usa el siguiente comando:

gcloud run services update SERVICE --session-affinity

Reemplazar

  • SERVICE por el nombre del servicio que deseas actualizar.

Para quitar la afinidad de sesión, usa el comando

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

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Agrega la anotación run.googleapis.com/sessionAffinity::

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

    Reemplazar

    • BOOL” por el valor “true” para establecer la afinidad de sesión o “false” a fin de quitar la afinidad de sesión
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Visualiza la configuración de afinidad de sesión

Para ver la configuración de afinidad de sesión actual de tu servicio de Cloud Run, sigue estos pasos:

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.

  3. Haz clic en la pestaña Revisiones.

  4. En el panel de detalles a la derecha, los parámetros de configuración de afinidad de sesión se muestran en la pestaña Herramientas de redes.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Ubica la configuración de afinidad de sesión en la configuración que se muestra.