Application Load Balancers - Elastic Load Balancing

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Application Load Balancers

Un balanceador de carga sirve como único punto de contacto para los clientes. Los clientes envía las solicitudes al balanceador de carga y este se las envía a los destinos, tales como las instancias EC2. Para configurar el balanceador de carga, debe crear grupos de destino y, a continuación, registrar los destinos en los grupos de destino. También puede crear agentes de escucha para comprobar las solicitudes de conexión de los clientes y reglas del agente de escucha para direccionar las solicitudes de los clientes a los destinos de uno o varios grupos de destino.

Para obtener más información, consulte Cómo funciona Elastic Load Balancing en la Guía del usuario de Elastic Load Balancing.

Subredes del balanceador de carga

Al crear un Balanceador de carga de aplicaciones, debe especificar uno de los siguientes tipos de subredes: zona de disponibilidad, zona local o Outpost.

Zonas de disponibilidad

Debe seleccionar al menos dos subredes de zona de disponibilidad. Se aplican las siguientes restricciones:

  • Cada subred debe proceder de una zona de disponibilidad diferente.

  • Para asegurarse de que el balanceador de carga puede escalarse correctamente, compruebe que cada subred de zona de disponibilidad del balanceador de carga tiene un bloque de CIDR con al menos una máscara de bits /27 (por ejemplo, 10.0.0.0/27) y al menos ocho direcciones IP libres. El balanceador de carga utiliza estas direcciones IP para establecer conexiones con los destinos.

Zonas locales

Puede especificar una o varias subredes de zona local. Se aplican las siguientes restricciones:

  • No podrá utilizar AWS WAF con el balanceador de carga.

  • No podrá utilizar una función Lambda como destino.

Outposts

Puede especificar una única subred de Outpost. Se aplican las siguientes restricciones:

  • Debe haber instalado y configurado un Outpost en su centro de datos local. Debe contar con una conexión de red de confianza entre su Outpost y la región de AWS. Para obtener más información, consulte la Guía del usuario de AWS Outposts.

  • El balanceador de carga requiere dos instancias en el Outpost para los nodos del balanceador de carga. Las instancias admitidas son instancias de uso general, optimizadas para computación y optimizadas para memoria. Inicialmente, las instancias son instancias de large. El balanceador de carga se escala según sea necesario, pasando de large a xlarge, de xlarge a 2xlarge y de 2xlarge a 4xlarge. Si necesita capacidad adicional, el balanceador de carga agrega instancias 4xlarge. Si no tiene suficiente capacidad de instancias o direcciones IP disponibles para escalar el balanceador de carga, este notifica un evento al AWS Personal Health Dashboard y el estado del balanceador de carga es active_impaired.

  • Puede registrar destinos por ID de instancia o dirección IP. Si registra destinos en la región de AWS para el Outpost, no se utilizan.

  • Las siguientes características no están disponibles: funciones Lambda como destinos, integración de AWS WAF, sesiones sticky, soporte de autenticación e integración con AWS Global Accelerator.

Grupos de seguridad del balanceador de carga

Un grupo de seguridad funciona como un firewall que controla el tráfico que se permite entrar y salir del balanceador de carga. Puede elegir los puertos y protocolos que se admitirán para el tráfico entrante y saliente.

Las reglas de los grupos de seguridad asociados al balanceador de carga deben permitir el tráfico en ambas direcciones, tanto en el agente de escucha como en los puertos de comprobación de estado. Siempre que se agrega un agente de escucha a un balanceador de carga o se actualiza el puerto de comprobación de estado de un grupo de destino, es preciso revisar las reglas del grupo de seguridad con el fin de asegurarse de que permitan el tráfico en el nuevo puerto en ambas direcciones. Para obtener más información, consulte Reglas recomendadas.

Estado del balanceador de carga

Un balanceador de carga puede encontrarse en uno de los siguientes estados:

provisioning

El balanceador de carga se está configurando.

active

El balanceador de carga se ha configurado completamente y está listo para direccionar el tráfico.

active_impaired

El balanceador de carga está dirigiendo el tráfico, pero no tiene los recursos que necesita para escalar.

failed

El balanceador de carga no se han podido configurar.

Atributos del balanceador de carga

A continuación se indican los atributos del balanceador de carga:

access_logs.s3.enabled

Indica si están habilitados los logs de acceso almacenados en Amazon S3 El valor predeterminado es false.

access_logs.s3.bucket

El nombre del bucket de Amazon S3 para los registros de acceso. Este atributo es obligatorio si están habilitados los registros de acceso. Para obtener más información, consulte Permisos de bucket.

access_logs.s3.prefix

El prefijo de la ubicación en el bucket de Amazon S3.

deletion_protection.enabled

Indica si está habilitada la protección contra eliminación. El valor predeterminado es false.

idle_timeout.timeout_seconds

Valor del tiempo de inactividad, en segundos. El valor predeterminado es de 60 segundos.

routing.http.desync_mitigation_mode

Determina cómo el balanceador de carga administra las solicitudes que pueden suponer un riesgo para la seguridad de la aplicación. Los valores posibles son monitor, defensive y strictest. El valor predeterminado es defensive.

routing.http.drop_invalid_header_fields.enabled

Indica si el balanceador de carga elimina los encabezados HTTP con campos de encabezado que no son válidos (true) o si se direccionan a los destinos (false). El valor predeterminado es false. Elastic Load Balancing requiere que los nombres de encabezado de mensaje contengan solo caracteres alfanuméricos y guiones.

routing.http2.enabled

Indica si HTTP/2 está habilitado. El valor predeterminado es true.

waf.fail_open.enabled

Indica si se debe permitir que un balanceador de carga habilitado para WAF direccione las solicitudes a los destinos si no puede reenviar la solicitud a AWS WAF. El valor es true o false. El valor predeterminado es false.

Tipo de dirección IP

Puede establecer los tipos de direcciones IP que los clientes pueden utilizar con el balanceador de carga expuesto a Internet. Los clientes deben usar direcciones IPv4 con balanceadores de carga internos.

Los siguientes son los tipos de direcciones IP:

ipv4

Los clientes deben conectarse al balanceador de carga mediante direcciones IPv4 (por ejemplo, 192.0.2.1)

dualstack

Los clientes pueden conectarse al balanceador de carga mediante direcciones IPv4 (por ejemplo, 192.0.2.1) y direcciones IPv6 (por ejemplo, 2001:0db8:85a3:0:0:8a2e:0370:7334).

Cuando habilita el modo de doble pila para el balanceador de carga, Elastic Load Balancing proporciona un registro DNS AAAA para el balanceador de carga. Los clientes que se comunican con el balanceador de carga mediante direcciones IPv4 resuelven el registro DNS A. Los clientes que se comunican con el balanceador de carga mediante direcciones IPv6 resuelven el registro DNS AAAA.

El balanceador de carga se comunica con sus destinos utilizando direcciones IPv4, independientemente de cómo se comunique el cliente con el balanceador de carga. Por lo tanto, los destinos no necesitan direcciones IPv6.

Para obtener más información, consulte Tipos de direcciones IP para suBalanceador de carga de aplicaciones.

Tiempo de inactividad de conexión

Para cada solicitud que un cliente realiza a través de un balanceador de carga, este último mantiene dos conexiones. La conexión front-end se realiza entre un cliente y el balanceador de carga. La conexión back-end se realiza entre el balanceador de carga y un destino. El balanceador de carga tiene configurado un periodo de tiempo de espera de inactividad que se aplica a sus conexiones. Si no se han enviado ni recibido datos antes de que haya transcurrido el tiempo de inactividad, el balanceador de carga cerrará la conexión. Para asegurarse de que las operaciones de larga duración (como la carga de archivos) dispongan de tiempo suficiente para completarse, envíe al menos un byte de datos antes de que finalice cada tiempo de inactividad y aumente la duración de este tiempo, según sea necesario.

Para las conexiones backend, recomendamos habilitar la opción keep-alive de HTTP en las instancias EC2. Puede habilitar keep-alive de HTTP en los ajustes del servidor web para sus instancias de EC2. Si la habilita, el balanceador de carga puede reutilizar las conexiones backend hasta que se agote el tiempo de espera de keep-alive. También recomendamos que configure el tiempo de inactividad de su aplicación para que sea mayor que el tiempo de inactividad configurado para el balanceador de carga.

De forma predeterminada, Elastic Load Balancing establece el valor de tiempo de espera de inactividad del balanceador de carga en 60 segundos. Utilice el procedimiento siguiente para cambiar el valor de tiempo de espera de inactividad.

Para actualizar el valor del tiempo de inactividad 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 la pestaña Descriptions, elija Edit attributes.

  5. En la página Edit load balancer attributes, escriba un valor en Idle timeout, en segundos. El rango válido es de 1 a 4000.

  6. Seleccione Save (Guardar).

Para actualizar el valor del tiempo de inactividad desde la AWS CLI

Utilice el comando modify-load-balancer-attributes con el atributo idle_timeout.timeout_seconds.

Protección contra eliminación

Para evitar que el balanceador de carga se elimine por error, puede habilitar la protección contra eliminación. De forma predeterminada, la protección contra eliminación del balanceador de carga está deshabilitada.

Si habilita la protección contra eliminación del balanceador de carga, deberá deshabilitarla para poder eliminarlo.

Para habilitar la protección contra eliminació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 la pestaña Descriptions, elija Edit attributes.

  5. En la página Edit load balancer attributes (Editar atributos del balanceador de carga), seleccione Enable (Habilitar) en Delete Protection (Eliminar protección) y haga clic en Save. (Guardar).

  6. Seleccione Save (Guardar).

Para deshabilitar la protección contra eliminació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 la pestaña Descriptions, elija Edit attributes.

  5. En la página Edit load balancer attributes (Editar atributos del balanceador de carga), desactive Enable (Habilitar) en Delete Protection (Eliminar protección) y haga clic en Save. (Guardar).

  6. Seleccione Save (Guardar).

Para habilitar o deshabilitar la protección contra eliminación desde la AWS CLI

Utilice el comando modify-load-balancer-attributes con el atributo deletion_protection.enabled.

Modo de mitigación de sincronización

El modo de mitigación de sincronización protege su aplicación de problemas debido a la sincronización HTTP. El balanceador de carga clasifica cada solicitud en función de su nivel de amenazas, permite solicitudes seguras y, a continuación, mitiga el riesgo según lo especificado en el modo de mitigación que especifique. Los modos de mitigación de sincronización son monitorizados, diagonales y más estrictos. El valor predeterminado es el modo Firen, que proporciona una mitigación duradera contra la desincronización HTTP al mismo tiempo que mantiene la disponibilidad de la aplicación. Puede cambiar al modo más estricto para garantizar que su aplicación reciba solo solicitudes que cumplan con RFC 7230.

La biblioteca http_desync_ execute analiza las solicitudes HTTP para evitar ataques HTTP Desync. Para obtener más información, consulte HTTP Desync Guardian en github.

Classifications

Las clasificaciones son las siguientes. Para obtener más información, consulte Motivos de clasificación.

  • Conformidad —: la solicitud cumple con RFC 7230 y no plantea amenazas de seguridad conocidas.

  • La solicitud de — aceptable no cumple la norma RFC 7230, pero no supone ninguna amenaza para la seguridad conocida.

  • La solicitud de — ambigua no cumple con RFC 7230, pero supone un riesgo, ya que diversos servidores web y proxies podrían gestionarla de forma diferente.

  • La solicitud Severe — supone un alto riesgo para la seguridad. el balanceador de carga bloquea la solicitud, envía una respuesta 400 al cliente y cierra la conexión del cliente.

Si una solicitud no cumple con RFC 7230, el balanceador de carga incrementa la métrica DesyncMitigationMode_NonCompliant_Request_Count. Para obtener más información, consulte Balanceador de carga de aplicacionesMétricas de .

Modes

En la siguiente tabla se describe cómo Application Load Balancers trata las solicitudes en función del modo y la clasificación.

Clasificación Modo de monitorización Modo defensa Modo más estricto
Compatible Permitir Permitir Permitir
aceptable Permitir Permitir Bloqueado
Ámbigo Permitir Permitir¹ Bloqueado
Gravedad Permitir Bloqueado Bloqueado

¹: dirige las solicitudes pero cierra las conexiones de cliente y destino. Podría incurrir en cargos adicionales si el balanceador de carga recibe un gran número de solicitudes ambiguas en el modo de defensa. Esto se debe a que el mayor número de conexiones nuevas por segundo contribuye a las unidades de capacidad del balanceador de carga (LCU) usadas por hora. Puede utilizar la métrica NewConnectionCount para comparar la forma en que el balanceador de carga establece nuevas conexiones en el modo Monitor y en el modo Defensive.

Para actualizar el modo de mitigación de sincronización mediante 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 la pestaña Descriptions, elija Edit attributes.

  5. Para Desync mitigation mode (Modo de mitigación de sincronización), elija Monitor (Monitorizar), Defensive (Denegar) o Strictest.

  6. Seleccione Save (Guardar).

Para actualizar el modo de mitigación de dessincronización con laAWS CLI

Utilice el comando modify-load-balancer-attributes con el atributo routing.http.desync_mitigation_mode establecido en monitor, defensive o strictest.

Application Load Balancers y AWS WAF

Puede utilizar AWS WAF con su Balanceador de carga de aplicaciones para permitir o bloquear solicitudes en función de las reglas en una lista de control de acceso web (ACL web). Para obtener más información, consulte Uso de ACL web en la Guía para desarrolladores de AWS WAF.

Para comprobar si el balanceador de carga se integra con AWS WAF, seleccione el balanceador de carga en la Consola de administración de AWS y elija la pestaña Integrated services (Servicios integrados).

De forma predeterminada, si el balanceador de carga no puede obtener una respuesta de AWS WAF, devuelve un error HTTP 500 y no reenvía la solicitud. Si necesita que el balanceador de carga reenvíe las solicitudes a los destinos aunque no pueda ponerse en contacto con AWS WAF, puede habilitar el atributo WAF fail open.

Para habilitar la apertura de error de WAF mediante 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 la pestaña Descriptions, elija Edit attributes.

  5. En WAF fail open, elija Enable.

  6. Seleccione Save (Guardar).

Para habilitar la apertura de error de WAF mediante laAWS CLI

Utilice el comando modify-load-balancer-attributes con el atributo waf.fail_open.enabled establecido en true.