Configure sesiones adhesivas para su Classic Load Balancer - Elastic Load Balancing

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés de la guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

Configure sesiones adhesivas para su Classic Load Balancer

De forma predeterminada, un Classic Load Balancer direcciona cada solicitud de manera independiente a la instancia registrada con menor carga. Sin embargo, puede utilizar el sesión pegajosa característica (también conocida como afinidad de sesión), que permite al equilibrador de carga vincular la sesión de un usuario a una instancia específica. Con ello se garantiza que todas las solicitudes de ese usuario durante la sesión se envían a la misma instancia.

La clave para administrar las sesiones sticky consiste en determinar durante cuánto tiempo deberá direccionar el balanceador de carga la solicitud del usuario a la misma instancia. Si la aplicación tiene su propia cookie de sesión, entonces puede configurar Elastic Load Balancing de modo que la cookie sesión respete la duración especificada por la cookie de sesión de la aplicación. Si la aplicación no tiene su propia cookie de sesión, entonces puede configurar Elastic Load Balancing de modo que cree una cookie de sesión especificando su propia duración de persistencia.

Elastic Load Balancing creará una cookie, denominada AWSELB, que se utilizará para asignar la sesión a la instancia.

Requirements

  • Un balanceador de carga HTTP/HTTPS.

  • Al menos una instancia en buen estado en cada zona de disponibilidad.

Compatibility

  • El RFC de la propiedad de ruta de una cookie admite los guiones bajos. Sin embargo, Elastic Load Balancing URI codifica caracteres subrayados como %5F debido a que algunos navegadores, como Internet Explorer 7, esperan que los subrayados sean URI codificados como %5F. Debido al potencial de afectar a los navegadores que están trabajando actualmente, Elastic Load Balancing continúa con los caracteres de subrayado del código URI. Por ejemplo, si la cookie tiene la propiedad path=/my_path, , Elastic Load Balancing cambia esta propiedad en la solicitud enviada a path=/my%5Fpath.

  • No puede definir el secure bandera o HttpOnly en sus cookies de adhesividad de sesión basadas en la duración. Sin embargo, estas cookies no contienen información confidencial. Tenga en cuenta que si establece el secure bandera o HttpOnly en una cookie de adhesividad de sesión controlada por aplicación, también se establece en la cookie AWSELB.

  • Si hay un signo de punto y coma final en el campo Set-Cookie de una cookie de aplicación, el balanceador de carga hace caso omiso de la cookie.

Instancias de destino que están fuera de línea especificando un grupo de recursos de AWS como destino.Contenido

Adhesividad de sesión basada en la duración

El balanceador de carga utiliza una cookie especial, AWSELB, para realizar el seguimiento de la instancia de cada solicitud a cada agente de escucha. Cuando el balanceador de carga recibe una solicitud, primero comprueba si esta cookie está presente en la solicitud. En caso afirmativo, la solicitud se envía a la instancia especificada en la cookie. Si no hay ninguna cookie, el balanceador de carga elige una instancia en función del algoritmo de balanceo de carga existente. Se inserta una cookie en la respuesta para vincular las solicitudes posteriores del mismo usuario a esa instancia. La configuración de la política de persistencia define el vencimiento de la cookie, que establece el periodo de validez de cada cookie. El balanceador de carga no actualiza el tiempo de caducidad de la cookie ni comprueba si ha caducado antes de usarla. Una vez que la cookie ha vencido, la sesión ya no es sticky. El cliente debe quitar la cookie de su almacén de cookies una vez caducada.

Con las solicitudes CORS (intercambio de recursos de varios orígenes), algunos navegadores requieren SameSite=None; Secure para habilitar la persistencia. En este caso, Elastic Load Balancing crea una segunda cookie de adhesividad, AWSELBCORS, que incluye la misma información que la cookie de adhesividad original más esta SameSite atributo. Los clientes reciben ambas cookies.

Si se produce un error en una instancia o esta pasa a encontrarse en mal estado, el balanceador de carga deja de direccionar las solicitudes a esa instancia y elige una nueva instancia en buen estado basándose en el algoritmo de balanceo de carga existente. La solicitud se redirecciona a la nueva instancia como si no hubiera ninguna cookie y la sesión deja de ser sticky.

Si un cliente cambia a un agente de escucha con un puerto backend diferente, la persistencia se pierde.

Para habilitar las sesiones sticky basadas en duración en un balanceador de carga desde la consola

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, en LOAD BALANCING (EQUILIBRIO DE CARGA), elija Load Balancers (Balanceadores de carga).

  3. Seleccione el balanceador de carga.

  4. En el Descripción pestaña, elegir Editar pegatinas.

  5. En el Editar pegatinas página, seleccionar Habilitar la adhesión de cookies generadas por equilibrador de carga.

  6. (Opcional) Para Periodo de caducidad, escriba el periodo de vencimiento de la cookie en segundos. Si no especifica un periodo de vencimiento, la sesión sticky durará lo mismo que la sesión del navegador.

  7. Elegir Guardar.

Para habilitar las sesiones sticky basadas en duración en un balanceador de carga desde la AWS CLI

  1. Utilice lo siguiente política-de-creación-de-la-dieta-de-lb-lb comando para crear una política de adhesividad de cookies generada por balanceador de carga con un período de vencimiento de cookie de 60 segundos:

    aws elb create-lb-cookie-stickiness-policy --load-balancer-name my-loadbalancer --policy-name my-duration-cookie-policy --cookie-expiration-period 60
  2. Utilice lo siguiente establecer-políticas-de-equilibrador-de-carga-de-equilibrio comando para habilitar la adhesividad de la sesión para el equilibrador de carga especificado:

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-duration-cookie-policy
    nota

    El comando set-load-balancer-policies-of-listener reemplaza el conjunto actual de políticas asociadas con el puerto del balanceador de carga especificado. Cada vez que se utiliza el comando, debe especificar la opción --policy-names para enumerar todas las políticas que hay que habilitar.

  3. (Opcional) Utilice lo siguiente describir-equilibradores-de-carga comando para verificar que la política está habilitada:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    La respuesta incluye la siguiente información, que muestra que la política está habilitada para el agente de escucha en el puerto especificado:

    { "LoadBalancerDescriptions": [ { ... "ListenerDescriptions": [ { "Listener": { "InstancePort": 443, "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-certificate", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTPS" }, "PolicyNames": [ "my-duration-cookie-policy", "ELBSecurityPolicy-2016-08" ] }, ... ], ... "Policies": { "LBCookieStickinessPolicies": [ { "PolicyName": "my-duration-cookie-policy", "CookieExpirationPeriod": 60 } ], "AppCookieStickinessPolicies": [], "OtherPolicies": [ "ELBSecurityPolicy-2016-08" ] }, ... } ] }

Adhesivo de sesión controlado por aplicación

El balanceador de carga utiliza una cookie especial para asociar la sesión con la instancia que controló la solicitud inicial, pero respeta la vida útil de la cookie de aplicación especificada en la configuración de la política. El balanceador de carga solo inserta una nueva cookie de persistencia si la respuesta de la aplicación incluye una nueva cookie de aplicación. La cookie de persistencia del balanceador de carga no se actualiza con cada solicitud. Si la cookie de aplicación se elimina de forma explícita o vence, la sesión deja de ser sticky hasta que se emite una nueva cookie de aplicación.

Los siguientes atributos establecidos por instancias back-end se envían a los clientes de la cookie: path, , port, , domain, , secure, , httponly, , discard, , max-age, , expires, , version, , comment, , commenturl, y samesite.

Si se produce un error en una instancia o esta pasa a encontrarse en mal estado, el balanceador de carga deja de direccionar las solicitudes a esa instancia y elige una nueva instancia en buen estado basándose en el algoritmo de balanceo de carga existente. El balanceador de carga trata la sesión como si estuviera "pegada" a la nueva instancia en buen estado y continúa direccionando las solicitudes a esa instancia aunque la instancia que sufrió el error vuelva a estar en buen estado.

Para habilitar las sesiones sticky controladas por la aplicación desde la consola

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, en LOAD BALANCING (EQUILIBRIO DE CARGA), elija Load Balancers (Balanceadores de carga).

  3. Seleccione el balanceador de carga.

  4. En el Descripción pestaña, elegir Editar pegatinas.

  5. En el Editar pegatinas página, seleccionar Habilitar pegatinas de cookies generadas por la aplicación.

  6. Para Nombre de la cookie, escriba el nombre de su cookie de aplicación.

  7. Elegir Guardar.

Para habilitar las sesiones sticky controladas por la aplicación desde la AWS CLI

  1. Utilice lo siguiente política-de-creación-de-cookies-de-app-de-creación comando para crear una política de adhesividad de cookies generada por aplicaciones:

    aws elb create-app-cookie-stickiness-policy --load-balancer-name my-loadbalancer --policy-name my-app-cookie-policy --cookie-name my-app-cookie
  2. Utilice lo siguiente establecer-políticas-de-equilibrador-de-carga-de-equilibrio comando para habilitar la adhesividad de la sesión para un equilibrador de carga:

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-app-cookie-policy
    nota

    El comando set-load-balancer-policies-of-listener reemplaza el conjunto actual de políticas asociadas con el puerto del balanceador de carga especificado. Cada vez que se utiliza el comando, debe especificar la opción --policy-names para enumerar todas las políticas que hay que habilitar.

  3. (Opcional) Utilice lo siguiente describir-equilibradores-de-carga comando para verificar que la política adhesiva está habilitada:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer
  4. La respuesta incluye la siguiente información, que muestra que la política está habilitada para el agente de escucha en el puerto especificado:

    { "LoadBalancerDescriptions": [ { ... "ListenerDescriptions": [ { "Listener": { "InstancePort": 443, "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-certificate", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTPS" }, "PolicyNames": [ "my-app-cookie-policy", "ELBSecurityPolicy-2016-08" ] }, { "Listener": { "InstancePort": 80, "LoadBalancerPort": 80, "Protocol": "TCP", "InstanceProtocol": "TCP" }, "PolicyNames": [] } ], ... "Policies": { "LBCookieStickinessPolicies": [], "AppCookieStickinessPolicies": [ { "PolicyName": "my-app-cookie-policy", "CookieName": "my-app-cookie" } ], "OtherPolicies": [ "ELBSecurityPolicy-2016-08" ] }, ... } ] }