Target groups for your Application Load Balancers - 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.

Target groups for your Application Load Balancers

Cada target group se utiliza para dirigir solicitudes a uno o más objetivos registrados. Cuando se crea la regla de cada agente de escucha, se especifican un grupo de destino y las condiciones. Cuando se cumple la condición de una regla, el tráfico se reenvía al grupo de destino correspondiente. Puede crear grupos de destino diferentes para los distintos tipos de solicitudes. Por ejemplo, puede crear un grupo de destino para las solicitudes generales y otros grupos de destino para las solicitudes destinadas a los microservicios de la aplicación. Para obtener más información, consulte Balanceador de carga de aplicaciones components.

Puede definir la configuración de comprobación de estado del balanceador de carga para cada grupo de destino. Cada grupo de destino utiliza la configuración de comprobación de estado predeterminada, a menos que la anule al crear el grupo de destino o la modifique posteriormente. Después de especificar un grupo de destino en una regla para un agente de escucha, el balanceador de carga monitoriza constantemente el estado de todos los destinos registrados en el grupo de destino que se encuentran en una zona de disponibilidad habilitada para el balanceador de carga. El balanceador de carga direcciona las solicitudes a los destinos registrados que se encuentran en buen estado.

Routing configuration

De forma predeterminada, un balanceador de carga direcciona las solicitudes a sus destinos mediante el protocolo y el número de puerto especificados al crear el grupo de destino. Si lo prefiere, puede anular el puerto utilizado para direccionar el tráfico a un destino al registrarlo en el grupo de destino.

Los grupos de destino admiten los siguientes protocolos y puertos:

  • Protocols: HTTP, HTTPS

  • Ports: 1-65535

Si un grupo de destino está configurado con el protocolo HTTPS o utiliza comprobaciones de salud HTTPS, las conexiones TLS a los destinos utilizan la configuración de seguridad de la ELBSecurityPolicy2016-08. El equilibrador de carga establece conexiones TLS con los objetivos utilizando certificados que se instalan en los objetivos. El balanceador de carga no valida estos certificados. Por lo tanto, puede utilizar certificados autofirmados o certificados que hayan caducado. Dado que el balanceador de carga se encuentra en una nube virtual privada (VPC), el tráfico entre el balanceador de carga y los destinos se autentica en el nivel de paquete, por lo que no corre el riesgo de sufrir ataques man-in-the-middle ni de suplantación, incluso aunque los certificados de los destinos no sean válidos.

Target type

Al crear un grupo de destino, debe especificar su tipo de destino, que determina el tipo de destino que especifica al registrar los destinos en este grupo de destino. Después de crear un grupo de destino, no puede cambiar su tipo de destino.

Los tipos de destinos posibles son los siguientes:

instance

Los destinos se especifican por ID de instancia.

ip

Los destinos son direcciones IP.

lambda

El destino es una función Lambda.

Cuando el tipo de destino es ip, puede especificar direcciones IP de uno de los siguientes bloques de CIDR:

  • The subnets of the VPC for the target group

  • 10.0.0.0/8 (RFC 1918)

  • 100.64.0.0/10 (RFC 6598)

  • 172.16.0.0/12 (RFC 1918)

  • 192.168.0.0/16 (RFC 1918)

Estos bloques de CIDR compatibles le permiten registrar lo siguiente con un grupo objetivo: instancias de clasificaciones, instancias en un VPC que se deriva al equilibrador de carga VPC, recursos de AWS que son direccionables por dirección IP y puerto (por ejemplo, bases de datos) y recursos locales vinculados a AWS a través de AWS Direct Connect o una conexión VPN.

importante

No puede especificar direcciones IP direccionables públicamente.

Si especifica destinos utilizando un ID de instancia, el tráfico se redirige a las instancias utilizando la dirección IP privada principal especificada en la interfaz de red principal de la instancia. Si especifica destinos utilizando direcciones IP, puede dirigir el tráfico a una instancia utilizando cualquier dirección IP privada de una o varias interfaces de red. Esto permite que varias aplicaciones de una instancia utilicen el mismo puerto. Cada interfaz de red puede tener su propio grupo de seguridad.

Si el tipo de destino de su grupo de destino es lambda, puede registrar una única función Lambda. Cuando el balanceador de carga recibe una solicitud para la función Lambda, invoca la función Lambda. Para obtener más información, consulte Lambda functions as targets.

Registered targets

El balanceador de carga sirve como un único punto de contacto para los clientes y distribuye el tráfico entrante entre los destinos registrados en buen estado. Puede registrar cada destino en uno o varios grupos de destino. Puede registrar cada instancia EC2 o dirección IP en el mismo grupo de destino varias veces con diferentes puertos, lo que permite que el balanceador de carga direccione las solicitudes a microservicios.

Si aumenta la demanda en la aplicación, puede registrar más destinos en uno o varios grupos para controlar la demanda. El balanceador de carga comienza a direccionar las solicitudes a un destino recién registrado tan pronto como se completa el proceso de registro y el destino supera las comprobaciones de estado iniciales.

Si la demanda de la aplicación se reduce o cuando es preciso realizar el mantenimiento de los destinos, anular el registro de los destinos en los grupos de destino. Al anular el registro de un destino, este se quita del grupo de destino pero no se ve afectado de ningún otro modo. El balanceador de carga deja de direccionar solicitudes a un destino tan pronto como se anula su registro. El destino adquiere el estado draining hasta que se completan las solicitudes en tránsito. Puede volver a registrar el destino en el grupo de destino cuando esté preparado para reanudar la recepción de solicitudes.

Si está registrando destinos por ID de instancia, puede utilizar el balanceador de carga con un grupo de Auto Scaling. Después de asociar un grupo de destino a un grupo de Auto Scaling, Auto Scaling registra los destinos en el grupo de destino cuando los lanza. Para obtener más información, consulte Asociar un balanceador de carga a su grupo de Auto Scaling en la Guía del usuario de Amazon EC2 Auto Scaling.

Limits

  • You cannot register the IP addresses of another Balanceador de carga de aplicaciones in the same VPC. If the other Balanceador de carga de aplicaciones is in a VPC that is peered to the load balancer VPC, you can register its IP addresses.

Target group attributes

Los siguientes atributos del grupo de destino se admiten si el tipo de grupo de destino es instance o ip:

deregistration_delay.timeout_seconds

Cantidad de tiempo que Elastic Load Balancing espera antes de anular el registro de un destino. El rango va de 0 a 3600 segundos. El valor de predeterminado es de 300 segundos.

load_balancing.algorithm.type

El algoritmo de balanceador de carga determina cómo el balanceador de carga selecciona los destinos al direccionar las solicitudes. El valor es round_robin o least_outstanding_requests. El valor predeterminado es round_robin.

slow_start.duration_seconds

El periodo de tiempo, en segundos, durante el cual el balanceador de carga envía al grupo de destino recién registrado una cuota linealmente mayor del tráfico. El rango va de 30 a 900 segundos (15 minutos). El valor predeterminado es 0 segundos (deshabilitado).

stickiness.enabled

Indica si están habilitadas las sesiones rápidas.

stickiness.lb_cookie.duration_seconds

Periodo de vencimiento de las cookies, en segundos. Una vez transcurrido este periodo, la cookie se considera antigua. El valor mínimo es de 1 segundo y el máximo es de 7 días (604800 segundos). El valor predeterminado es de 1 día (86400 segundos).

stickiness.type

Tipo de persistencia. El valor posible es lb_cookie.

El siguiente atributo del grupo de destino se admite si el tipo de grupo de destino es lambda:

lambda.multi_value_headers.enabled

Indica si los encabezados de solicitud y respuesta intercambiados entre el balanceador de carga y la función Lambda incluyen matrices de valores o cadenas. Los valores posibles son true o false. El valor predeterminado es false. Para obtener más información, consulte Multi-value headers.

Routing algorithm

De forma predeterminada, el algoritmo de direccionamiento de turnos rotativos se utiliza para direccionar las solicitudes al nivel del grupo de destino. En su lugar, puede especificar el algoritmo de direccionamiento de solicitudes menos pendientes.

Considere la posibilidad de utilizar solicitudes menos pendientes si las solicitudes de su aplicación tienen una complejidad variable o sus destinos tienen una capacidad de procesamiento variable. Los turnos rotativos son una buena opción cuando las solicitudes y los destinos son similares, o si necesita distribuir las solicitudes por igual entre los destinos. Puede comparar el efecto de la ronda redonda con menos solicitudes pendientes utilizando los siguientes indicadores de cloudwatch: requisito, , targeterrorerrorcontento, y targetrespuesta.

Considerations

  • You cannot enable both least outstanding requests and slow start mode.

  • If you enable sticky sessions, this overrides the routing algorithm of the target group after the initial target selection.

  • With HTTP/2, the load balancer converts the request to multiple HTTP/1.1 requests, so least outstanding request treats each HTTP/2 request as multiple requests.

  • When you use least outstanding requests with WebSockets, the target is selected using least outstanding requests. The load balancer creates a connection to this target and sends all messages over this connection.

Para modificar el algoritmo de direccionamiento usando 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 (BALANCEO DE CARGA), elija Target Groups (Grupos de destino).

  3. Seleccione el grupo de destino.

  4. En la pestaña Description (Descripción), elija Edit attributes (Editar atributos).

  5. En la página Edit attributes (Editar atributos), en Load balancing algorithm (Algoritmo de balanceo de carga), elija Round robin (Turnos rotativos) o Least outstanding requests (Solicitudes menos pendientes) y, a continuación, elija Save (Guardar).

Para modificar el algoritmo de direccionamiento usando la AWS CLI

Utilice el comando modify-target-group-attributes con el atributo load_balancing.algorithm.type.

Deregistration delay

Elastic Load Balancing deja de enviar solicitudes a los destinos que están en proceso de anulación del registro. De forma predeterminada, Elastic Load Balancing espera 300 segundos antes de completar el proceso de anulación del registro, para ayudar a que se completen las solicitudes en tránsito hacia el destino. Para cambiar la cantidad de tiempo que Elastic Load Balancing espera, actualice el valor del retardo de anulación de registro.

El estado inicial de un objetivo de deposición es draining. Después de que transcurra el retraso de la deregistración, se completa el proceso de descarstración y el estado del objetivo es unused. Si el objetivo es parte de un Auto Scaling grupo, puede terminarse y reemplazarse.

Si un destino que anula el registro no tiene ninguna solicitud en tránsito y ninguna conexión activa, Elastic Load Balancing completa inmediatamente el proceso de anulación de registro, sin esperar a que transcurra el retardo de anulación de registro. Sin embargo, aunque se haya completado el proceso de anulación del registro del destino, se mostrará el estado del destino como draining hasta que transcurra el tiempo de anulación de registro.

Si un destino en proceso de anulación del registro termina la conexión antes de que haya transcurrido el retardo de anulación del registro, el cliente recibe una respuesta de error de nivel 500.

Para actualizar el valor del retardo de anulación del registro 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 (BALANCEO DE CARGA), elija Target Groups (Grupos de destino).

  3. Seleccione el grupo de destino. El valor actual se muestra en la pestaña Description (Descripción) como Deregistration delay (Retardo de anulación del registro).

  4. En la pestaña Description (Descripción), elija Edit attributes (Editar atributos).

  5. En la página Edit attributes, cambie el valor de Deregistration delay según sea necesario y, a continuación, seleccione Save.

Para actualizar el valor del retardo de anulación del registro desde la AWS CLI

Utilice el comando modify-target-group-attributes con el atributo deregistration_delay.timeout_seconds.

Slow start mode

De forma predeterminada, un destino comienza a recibir su cuota completa de solicitudes tan pronto como se registra con un grupo de destino y pasa una comprobación de estado inicial. Usar el modo de inicio lento proporciona a los destinos tiempo para calentarse antes de que el balanceador de carga les envíe una cuota completa de solicitudes.

Después de habilitar el inicio lento para un grupo de destino, sus destinos entran en modo de inicio lento cuando el grupo de destino los considera en buen estado. Un destino en modo de inicio lento sale de este modo cuando transcurre el período de duración de inicio lento configurado o el destino deja de estar en buen estado. El balanceador de carga aumenta linealmente el número de solicitudes que puede enviar a un destino en modo de inicio lento. Una vez que un destino en buen estado sale del modo de inicio lento, el balanceador de carga puede enviarle una cuota completa de solicitudes.

Considerations

  • When you enable slow start for a target group, the healthy targets registered with the target group do not enter slow start mode.

  • When you enable slow start for an empty target group and then register targets using a single registration operation, these targets do not enter slow start mode. Newly registered targets enter slow start mode only when there is at least one healthy target that is not in slow start mode.

  • If you deregister a target in slow start mode, the target exits slow start mode. If you register the same target again, it enters slow start mode when it is considered healthy by the target group.

  • If a target in slow start mode becomes unhealthy, the target exits slow start mode. When the target becomes healthy, it enters slow start mode again.

  • You cannot enable both slow start mode and least outstanding requests.

Para actualizar el valor de duración de inicio lento con 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 (BALANCEO DE CARGA), elija Target Groups (Grupos de destino).

  3. Seleccione el grupo de destino. El valor actual se muestra en la pestaña Description (Descripción) como Slow start duration (Duración de inicio lento).

  4. En la pestaña Description (Descripción), elija Edit attributes (Editar atributos).

  5. En la página Edit attributes (Editar atributos), cambie el valor de Slow start duration (Duración de inicio lento) según sea necesario y, a continuación, seleccione Save (Guardar). Para deshabilitar el modo de inicio lento, establezca la duración en 0.

Para actualizar el valor de duración de inicio lento con AWS CLI

Utilice el comando modify-target-group-attributes con el atributo slow_start.duration_seconds.

Sticky sessions

Las sesiones sticky son un mecanismo para direccionar las solicitudes al mismo destino en un grupo de destino. Resulta útil para los servidores que mantienen información de estado, para ofrecer una experiencia de continuidad a los clientes. Para utilizar las sesiones sticky, los clientes deben admitir las cookies.

Cuando un balanceador de carga recibe por primera vez una solicitud de un cliente, direcciona la solicitud a un destino, genera una cookie denominada AWSALB que codifica información sobre el destino seleccionado, cifra la cookie e incluye la cookie en la respuesta al cliente. El cliente debe incluir la cookie que recibe en las solicitudes posteriores al balanceador de carga. Cuando el balanceador de carga recibe una solicitud de un cliente que incluye la cookie, si las sesiones sticky están habilitadas para el grupo de destino y la solicitud se dirige al mismo grupo de destino, el balanceador de carga detecta la cookie y direcciona la solicitud al mismo destino. Si la cookie está presente pero no se puede decodificar, o si hace referencia a un destino que cuyo registro se ha anulado o no está en buen estado, el balanceador de carga selecciona un nuevo destino y actualiza la cookie con información sobre el nuevo destino.

Las sesiones sticky se habilitan para grupos de destino. También puede establecer la duración, en segundos, de la persistencia de la cookie generada por el balanceador de carga. La duración se establece con cada solicitud. Por lo tanto, si el cliente envía una solicitud antes de cada duración caduca, el período de sesión continúa.

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 genera una segunda cookie de persistencia, AWSALBCORS, que incluye la misma información que la cookie de persistencia original, además de este atributo SameSite. Los clientes reciben ambas cookies.

Los Application Load Balancers admiten únicamente las cookies generadas por el balanceador de carga. El contenido de estas cookies se cifra mediante una clave rotativa. Las cookies generadas por el balanceador de carga no se pueden descifrar ni modificar.

Considerations

  • If you are using multiple layers of Application Load Balancers, you can enable sticky sessions on one layer only, because the load balancers would use the same cookie name.

  • WebSockets connections are inherently sticky. If the client requests a connection upgrade to WebSockets, the target that returns an HTTP 101 status code to accept the connection upgrade is the target used in the WebSockets connection. After the WebSockets upgrade is complete, cookie-based stickiness is not used.

  • Application Load Balancers use the Expires attribute in the cookie header instead of the Max-Age header.

  • Application Load Balancers do not support cookie values that are URL encoded.

Para habilitar las sesiones sticky 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 (BALANCEO DE CARGA), elija Target Groups (Grupos de destino).

  3. Seleccione el grupo de destino.

  4. En la pestaña Description (Descripción), elija Edit attributes (Editar atributos).

  5. En la página Edit attributes, lleve a cabo alguna de las siguientes operaciones:

    1. Seleccione Enable load balancer generated cookie stickines.

    2. Para Stickiness duration, especifique un valor comprendido entre 1 segundo y 7 días.

    3. Seleccione Save.

Para habilitar las sesiones rápidas desde la AWS CLI

Utilice el comando modify-target-group-attributes con los atributos stickiness.enabled y stickiness.lb_cookie.duration_seconds.