Establecer la afinidad de sesiones

La carga de un sitio web normalmente requiere la captación de varios activos desde un servidor web. La afinidad de sesiones de CIS minimiza las solicitudes de red redundantes dirigiendo automáticamente las solicitudes del mismo cliente al mismo servidor web de origen.

CIS establece una cookie en una respuesta inicial al cliente. La utilización de la cookie en solicitudes de cliente posteriores garantiza que dichas solicitudes se envíen al mismo origen, a menos que el origen no esté disponible.

Cuando está habilitada, la afinidad de sesiones de CIS hace lo siguiente:

  • Cuando un cliente realiza su primera solicitud, CIS establece una cookie CFLib en el cliente. La cookie codifica el origen al que se reenvía la solicitud.
  • Las solicitudes posteriores del mismo cliente se reenvían a ese origen mientras dure la cookie y mientras que el servidor de origen siga en buen estado.
  • Si la cookie caduca o el servidor de origen no está en buen estado, CIS establece cookie que codifica el origen de migración tras error adecuado.

Todas las sesiones tienen un valor predeterminado de 23 horas a menos que se especifique un TTL de sesión personalizado (en segundos) entre 30 minutos y 7 días. Se requiere una cookie de afinidad de sesión para respetar el TTL. La cookie de sesión es segura cuando ' Always Use HTTPS ' está activado. Además, HttpOnly siempre está habilitado para la cookie para evitar ataques de scripts entre sitios.

Configuración de la afinidad de sesión desde la CLI

Cuando cree un equilibrador de carga global desde la CLI, siga estos pasos para configurar la afinidad de sesión:

  1. Inicie sesión en la cuenta de IBM Cloud.
  2. Cree un equilibrador de carga global.
  3. Configura las siguientes variables de la interfaz de línea de comandos:

Si necesita una configuración específica de SameSite en sus cookies de afinidad de sesión, CIS recomienda que proporcione valores para samesite y secure diferentes de Auto, en lugar de confiar en el comportamiento predeterminado. De esta forma, el valor del atributo de la cookie SameSite no cambia debido a los cambios de configuración (es decir, Always Use HTTPS ).

session_affinity: los valores válidos son cookie, none.

ttl: Tiempo, en segundos, que transcurre hasta que caduca la cookie de afinidad de sesión de este equilibrador de carga tras su creación. Valores válidos entre ' 1800, ' 604800. El valor por defecto es 82800.

session_affinity_attributes: Atributos de una cookie de afinidad de sesión.

samesite

Los valores válidos son: * Auto (por defecto): Si está activado Usar siempre HTTPS, las cookies de afinidad de sesión utilizan el modo Lax ; si está desactivado, las cookies utilizan el modo None. * None: Las cookies se envían con todas las solicitudes. * 'Lax: Las cookies se envían sólo al dominio del vértice (como ' example.com). * Strict: Las cookies son creadas por la primera parte (el dominio visitado).

secure

Los valores válidos son: * Auto (por defecto): Si la opción Utilizar siempre HTTPS está activada, las cookies de afinidad de sesión utilizan secure en el atributo samesite ; si está desactivada, las cookies no utilizan secure. * Always: secure siempre está activada, lo que significa que la cookie sólo se envía a través de conexiones HTTPS. * Never secure nunca se establece, lo que permite que las cookies se envíen a través de conexiones HTTPS y HTTP.

drain_duration

Opcional. Tiempo, en segundos, en el que el origen vaciará las sesiones activas. Este campo sólo se utiliza cuando la afinidad de sesiones está activada en el equilibrador de carga.

zero_downtime_failover

Opcional. Envía automáticamente el tráfico a los puntos finales de un grupo durante los problemas transitorios de la red. Los valores son: * none (por defecto): No se produce conmutación por error y es posible que se muestren errores a sus usuarios. * temporary: El tráfico se envía a otros puntos finales hasta que el punto final fijado originalmente esté disponible. * sticky: La cookie de afinidad de sesión se actualiza y las solicitudes posteriores se envían al nuevo endpoint avanzando según sea necesario.

La conmutación por error sin tiempo de inactividad no es compatible con la afinidad de sesión mediante el encabezado HTTP.

Por ejemplo:

ibmcloud cis glb-update fc72db47cee8290eaef292cda6e1619a 12b68758126546e0d129c7bbadfa87f0 --json '{"session_affinity":"cookie","session_affinity_ttl":1800,"session_affinity_attributes":{"samesite":"Auto","secure":"Auto"}}'

Configuración de la afinidad de sesión con la API

La afinidad de sesión es una propiedad de los equilibradores de carga globales, que puede configurar con los siguientes puntos finales:

Personaliza el comportamiento de la afinidad de sesión utilizando los parámetros ' session_affinity' , ' session_affinity_ttl, y ' session_affinity_attributes.

Para activar la afinidad de sesión por encabezado HTTP, establezca el valor session_affinity en header y añada sus Nombres de cabecera HTTP a session_affinity_attributes.headers.

Cuando cree un equilibrador de carga global utilizando la API, realice los pasos siguientes para establecer la afinidad de sesiones:

  1. Configure el entorno de la API con las variables correctas.

  2. Almacene los valores siguientes en variables que se utilizarán en el mandato de la API:

    • session_affinity, que especifica el tipo de afinidad de sesiones que utiliza el equilibrador de carga, a menos que se especifique "none" o "default". Los valores válidos son none, cookie, ip_cookie.
    • session_affinity_ttl, que es el tiempo de vida de la afinidad de sesiones.
    • session_affinity_attributes que incluyen:
      • samesite configura el atributo SameSite en la cookie de afinidad. Los valores válidos son ' Auto, ' Lax, ' None, ' Strict; por defecto ' Auto.

      • secure configura el atributo Secure en la cookie de afinidad de sesiones. Los valores válidos son ' Auto, ' Always, ' Never; por defecto ' Auto.

      • drain_duration es el valor de la duración de drenaje, en segundos.

      • zero_downtime_failover (opcional) envía automáticamente tráfico a puntos finales dentro de un pool durante problemas transitorios de red. Los valores son ' temporary, y ' sticky; por defecto ' none.

        La conmutación por error sin tiempo de inactividad no es compatible con la afinidad de sesión mediante el encabezado HTTP.

  3. Cuando se hayan iniciado todas las variables, cree el equilibrador de carga global con afinidad de sesiones:

curl -X POST   https://api.cis.cloud.ibm.com/v1/:crn/zones/:zone_id/load_balancers   -H 'content-type: application/json'   -H 'x-auth-user-token: Bearer xxxxxx'   -d '{
    "description": "",
    "proxied": true,
    "enabled": true,
    "name": "www.example.com",
    "session_affinity": "none",
    "session_affinity_ttl": 5000,
    "steering_policy": "geo",
    "fallback_pool": "4112ba6c2974ec43886f90736968e838",
    "default_pools": [
        "6563ebae141638f92ebbdc4a821bef8c",
        "4112ba6c2974ec43886f90736968e838"
    ],
    "pop_pools": {},
    "region_pools": {
        "EEU": [
            "4112ba6c2974ec43886f90736968e838"
        ],
        "ENAM": [
            "6563ebae141638f92ebbdc4a821bef8c"
        ],
        "WEU": [
            "4112ba6c2974ec43886f90736968e838"
        ],
        "WNAM": [
            "6563ebae141638f92ebbdc4a821bef8c"
        ]
    }
}'

Si establece samesite en None en su solicitud de API, no puede establecer secure en Never.