Equilibradores de carga de aplicación - Elastic Load Balancing

Equilibradores de carga de aplicación

Un equilibrador de carga actúa como único punto de contacto para los clientes. Los clientes envía las solicitudes al equilibrador de carga y este se las envía a los destinos, tales como las instancias EC2. Para configurar el equilibrador de carga, debe crear grupos de destino y, a continuación, registrar los destinos en esos grupos. También puede crear oyentes para comprobar la existencia de solicitudes de conexión de los clientes, así como reglas de oyentes para direccionar las solicitudes de los clientes a los destinos de uno o varios grupos de destino.

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

Subredes del equilibrador de carga

Al crear un Equilibrador de carga de aplicación, debe habilitar las zonas que contienen sus destinos. Para habilitar una zona, especifique una subred en ella. Elastic Load Balancing crea un nodo de equilibrador de carga en cada zona que especifique.

Consideraciones
  • El equilibrador de carga es más eficaz si se asegura de que cada zona habilitada tenga al menos un destino registrado.

  • Si registra los destinos en una zona pero no la habilita, estos destinos registrados no recibirán tráfico del equilibrador de carga.

  • Si habilita varias zonas para su equilibrador de carga, estas deben ser del mismo tipo. Por ejemplo, no puede habilitar tanto una zona de disponibilidad como zona local.

  • Puede especificar una subred que se haya compartido con usted.

  • Elastic Load Balancing crea interfaces de red en las subredes donde configuró el equilibrador de carga. Estas interfaces de red se reservan para que el equilibrador de carga pueda completar acciones de mantenimiento incluso cuando la subred tiene pocos direcciones IP disponibles. Estas interfaces tienen la descripción “ENI reservada por ELB para la subred”.

Los equilibradores de carga de aplicaciones admiten los siguientes tipos de subredes.

Subredes de zona de disponibilidad

Debe seleccionar dos subredes en zonas de disponibilidad como mínimo. Se aplican las siguientes restricciones:

  • Cada subred tiene que estar en una zona de disponibilidad diferente.

  • Para garantizar que el equilibrador de carga puede adaptarse correctamente, asegúrese de que cada subred de zona de disponibilidad del equilibrador de carga tenga 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 por subred. Estas ocho direcciones IP son necesarias para permitir que el equilibrador de carga se escale horizontalmente si es necesario. El equilibrador de carga utiliza estas direcciones IP para establecer conexiones con los destinos. Sin ellas, el Equilibrador de carga de aplicación podría tener dificultades al intentar reemplazar un nodo y provocar que se produjera un error.

    Nota: Si una subred de Equilibrador de carga de aplicación se queda sin direcciones IP utilizables al intentar escalar, el Equilibrador de carga de aplicación se ejecutará con una capacidad insuficiente. Durante este tiempo, los nodos antiguos continúan atendiendo el tráfico, pero el intento de escalado detenido puede provocar errores 5xx o tiempos de espera agotados al intentar establecer una conexión.

Subredes de zona local

Puede especificar subredes de zona local. Las siguientes características no son compatibles con subredes de zona local:

  • Funciones de Lambda como destinos

  • Autenticación TLS mutua

  • AWS WAFIntegración de

Subredes de Outpost

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 fiable entre el Outpost y la región de AWS. Para obtener más información, consulte la Guía del usuario de AWS Outposts.

  • El equilibrador de carga requiere dos instancias large en el Outpost para los nodos del equilibrador de carga. Los únicos tipos de instancias compatibles con son los siguientes: El equilibrador de carga se escala según sea necesario y cambia el tamaño de los nodos de un tamaño a la vez (de large a xlarge, luego de xlarge a 2xlarge, y después de 2xlarge a 4xlarge). Después de escalar los nodos al tamaño de instancia más grande, si necesita capacidad adicional, el equilibrador de carga agrega instancias 4xlarge como nodos del equilibrador de carga. Si no tiene suficiente capacidad de instancias o direcciones IP disponibles para escalar el equilibrador de carga, este informa de un evento al AWS Health Dashboard y el estado del equilibrador de carga es active_impaired.

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

  • Las siguientes características no son compatibles:

    • AWS Global AcceleratorIntegración de

    • Funciones de Lambda como destinos

    • Autenticación TLS mutua

    • Sesiones rápidas

    • Autenticación del usuario

    • AWS WAFIntegración de

Se puede implementar un Equilibrador de carga de aplicación en instancias c5/c5d, m5/m5d o r5/r5d en un Outpost. La siguiente tabla muestra el tamaño y el volumen de EBS por tipo de instancia que el equilibrador de carga puede usar en un Outpost:

Tipo y tamaño de instancia Volumen EBS (GB)
c5/c5d
large 50
xlarge 50
2xlarge 50
4xlarge 100
m5/m5d
large 50
xlarge 50
2xlarge 100
4xlarge 100
r5/r5d
large 50
xlarge 100
2xlarge 100
4xlarge 100

Grupos de seguridad del equilibrador de carga

Un grupo de seguridad funciona como un firewall que controla el tráfico que se permite entrar o salir del equilibrador 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 que están asociados con el equilibrador de carga deben permitir el tráfico en ambas direcciones tanto en el oyente como en los puertos de comprobación de estado. Siempre que se agrega un oyente a un equilibrador 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 equilibrador de carga

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

provisioning

El equilibrador de carga se está configurando.

active

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

active_impaired

El equilibrador de carga enruta el tráfico, pero no tiene los recursos que necesita para escalar.

failed

El equilibrador de carga no se han podido configurar.

Atributos del equilibrador de carga

Para configurar su Equilibrador de carga de aplicación, edite sus atributos. Para obtener más información, consulte Edición de los atributos del equilibrador de carga..

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

access_logs.s3.enabled

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

access_logs.s3.bucket

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 Habilitación de registros de acceso.

access_logs.s3.prefix

Prefijo de la ubicación en el bucket de Amazon S3.

client_keep_alive.seconds

El cliente mantiene un valor keepalive, en segundos. El valor predeterminado es de 3600 segundos.

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.

ipv6.deny_all_igw_traffic

Bloquea el acceso de una puerta de enlace de Internet (IGW) al equilibrador de carga, al evitar el acceso no intencionado a su equilibrador de carga interno a través de una puerta de enlace de Internet. Se ha establecido en false para los equilibradores de carga con acceso a Internet y true para los equilibradores de carga internos. Este atributo no impide el acceso a Internet que no sea de IGW (por ejemplo, mediante interconexión, Transit Gateway, AWS Direct Connect o Site-to-Site VPN).

routing.http.desync_mitigation_mode

Determina cómo administra el equilibrador de carga las solicitudes que es posible que representen un riesgo de seguridad para 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 equilibrador de carga elimina los encabezados HTTP con campos de encabezado que no son no válidos (true) o si se redireccionan a los destinos (false). El valor predeterminado es false. Elastic Load Balancing requiere que los nombres de encabezado HTTP válidos se ajusten a la expresión regular [-A-Za-z0-9]+, tal como se describe en el Registro de nombres de campos HTTP. Cada nombre consta de caracteres alfanuméricos o guiones. Seleccione true si desea que los encabezados HTTP que no se ajusten a este patrón se eliminen de las solicitudes.

routing.http.preserve_host_header.enabled

Indica si el Equilibrador de carga de aplicación debe conservar el encabezado Host en la solicitud HTTP y ser enviado al destino sin ningún cambio. Los valores posibles son true y false. El valor predeterminado es false.

routing.http.x_amzn_tls_version_and_cipher_suite.enabled

Indica si los dos encabezados (x-amzn-tls-version y x-amzn-tls-cipher-suite), que contienen información sobre la versión de TLS negociada y el conjunto de cifrado, se agregan a la solicitud del cliente antes de enviarla al destino. El encabezado x-amzn-tls-version contiene información acerca de la versión del protocolo TLS negociada con el cliente y el encabezado x-amzn-tls-cipher-suite contiene información sobre el conjunto de cifrado negociado con el cliente. Ambos encabezados están en formato OpenSSL. Los valores posibles para el atributo son true y false. El valor predeterminado es false.

routing.http.xff_client_port.enabled

Indica si el encabezado X-Forwarded-For debe conservar el puerto de origen que el cliente utiliza para conectarse al equilibrador de carga. Los valores posibles son true y false. El valor predeterminado es false.

routing.http.xff_header_processing.mode

Permite modificar, conservar o eliminar el encabezado X-Forwarded-For en la solicitud HTTP antes de que el Equilibrador de carga de aplicación envíe la solicitud al destino. Los valores posibles son append, preserve y remove. El valor predeterminado es append.

  • Si el valor es append, el Equilibrador de carga de aplicación agrega la dirección IP del cliente (del último salto) al encabezado X-Forwarded-For en la solicitud HTTP antes de enviarla a los destinos.

  • Si el valor es preserve, el Equilibrador de carga de aplicación conserva el encabezado X-Forwarded-For en la solicitud HTTP y la envía a los destinos sin ningún cambio.

  • Si el valor es remove, el Equilibrador de carga de aplicación elimina el encabezado X-Forwarded-For en la solicitud HTTP antes de enviarla a los destinos.

routing.http2.enabled

Indica si los clientes se pueden conectar al equilibrador de carga mediante HTTP/2. Si el valor es true, los clientes se pueden conectar mediante HTTP/2 o HTTP/1.1. Si el valor es false, los clientes se deben conectar mediante HTTP/1.1. El valor predeterminado es true.

waf.fail_open.enabled

Indica si se permite que un equilibrador de carga habilitado para AWS WAF enrute las solicitudes a los destinos, si no puede reenviar la solicitud a AWS WAF. Los valores posibles son true y false. El valor predeterminado es false.

nota

El atributo routing.http.drop_invalid_header_fields.enabled se introdujo para ofrecer protección contra la desincronización de HTTP. El atributo routing.http.desync_mitigation_mode se agregó para proporcionar una protección más completa contra la desincronización de HTTP para sus aplicaciones. No es obligatorio usar ambos atributos y puede elegir el que mejor se adapte a los requisitos de la aplicación.

Tipo de dirección IP

Puede establecer los tipos de direcciones IP que los clientes pueden utilizar para acceder los equilibradores de carga internos y expuestos a Internet.

Los Equilibradores de carga de aplicación admiten los siguientes tipos de direcciones IP:

ipv4

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

dualstack

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

dualstack-without-public-ipv4

Los clientes deben conectarse al equilibrador de carga mediante direcciones IPv6 (por ejemplo, 2001:0db8:85a3:0:0:8a2e:0370:7334).

Consideraciones
  • El equilibrador de carga se comunica con los destinos en función del tipo de dirección IP del grupo de destino.

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

  • El acceso a los equilibradores de carga internos de doble pila a través de la puerta de enlace de Internet está bloqueado para evitar el acceso no deseado a Internet. Sin embargo, esto no impide el acceso a Internet que no sea de IGW (por ejemplo, mediante interconexión, Transit Gateway, AWS Direct Connect o Site-to-Site VPN).

  • La autenticación Equilibrador de carga de aplicación solo admite IPv4 cuando se conecta a un proveedor de identidades (IdP) o a un punto de conexión de Amazon Cognito. Sin una dirección IPv4 pública, el equilibrador de carga no puede completar el proceso de autenticación, lo que genera errores HTTP 500.

Para obtener más información, consulte Actualización de los tipos de direcciones IP para el Equilibrador de carga de aplicación.

Grupos de direcciones IP de IPAM

Un grupo de direcciones IP de IPAM es una colección de rangos de direcciones IP contiguos (o CIDR) que crea mediante el Administrador de direcciones IP (IPAM) de Amazon VPC. El uso de grupos de direcciones IP de IPAM con el equilibrador de carga de aplicaciones permite organizar las direcciones IPv4 según sus necesidades de enrutamiento y seguridad. Los grupos de direcciones IP de IPAM permiten traer algunos o todos los rangos de direcciones IPv4 públicas a AWS y usarlos con los equilibradores de carga de aplicaciones. El grupo de direcciones IP de IPAM siempre se prioriza al lanzar instancias de EC2 y crear equilibradores de carga de aplicaciones. Cuando las direcciones IP se dejan de utilizar, pasan a estar disponibles de inmediato para volver a usarse.

Para comenzar, cree un grupo de direcciones IP de IPAM. Para obtener más información, consulte Uso de direcciones IP propias en IPAM.

Consideraciones
  • Los grupos de direcciones IP IPv6 de IPAM no son compatibles.

  • Los grupos de direcciones IP IPv4 de IPAM no son compatibles con equilibradores de carga internos ni con el tipo de dirección IP dualstack-without-public-ipv4.

  • No puede eliminar una dirección IP de un grupo de direcciones IP de IPAM si un equilibrador de carga la utiliza actualmente.

  • Durante la transición a un grupo de direcciones IP de IPAM diferente, las conexiones existentes se terminan según la duración del mantenimiento de conexión del cliente HTTP del equilibrador de carga.

  • Los grupos de direcciones IP de IPAM se pueden compartir entre varias cuentas. Para obtener más información, consulte Configuración de las opciones de integración para IPAM.

  • El uso de grupos de direcciones IP de IPAM con los equilibradores de carga no conlleva cargos adicionales. Sin embargo, es posible que haya cargos relacionados con el IPAM, según el nivel que utilice.

    Si no hay más direcciones IP asignables en el grupo de direcciones IP de IPAM, Elastic Load Balancing usa direcciones IPv4 administradas por AWS en su lugar. El uso de direcciones IPv4 administradas por AWS conlleva cargos adicionales. Para evitar estos costos, puede agregar rangos de direcciones IP al grupo de direcciones IP de IPAM existente.

    Para obtener más información, consulte Precios de Amazon VPC.

Conexiones del equilibrador de carga

Al procesar una solicitud, el equilibrador de carga mantiene dos conexiones: una con el cliente y otra con un destino. La conexión entre el cliente y el equilibrador de carga también se denomina conexión de front-end. La conexión entre el destino y el equilibrador de carga también se denomina conexión de back-end.

Balance de carga entre zonas

Con los equilibradores de carga de aplicaciones, el equilibrio de carga entre zonas está activado de forma predeterminada y no se puede cambiar a nivel del equilibrador de carga. Para obtener más información, consulte la sección Equilibrio de carga entre zonas en la Guía del usuario de Elastic Load Balancing.

Es posible desactivar el equilibrio de carga entre zonas a nivel del grupo de destino. Para obtener más información, consulte Deshabilitar el equilibrio de carga entre zonas.

Nombre de DNS

Cada Equilibrador de carga de aplicación recibe un nombre predeterminado del sistema de nombres de dominio (DNS) con la siguiente sintaxis: name-id.elb.region.amazonaws.com. Por ejemplo, my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com.

Si prefiere utilizar un nombre DNS que sea más fácil de recordar, puede crear un nombre de dominio personalizado y asociarlo con el nombre DNS del Equilibrador de carga de aplicación. Cuando un cliente realiza una solicitud mediante este nombre de dominio personalizado, el servidor DNS lo resuelve para hallar el nombre de DNS del Equilibrador de carga de aplicación.

En primer lugar, registre un nombre de dominio con un registrador de nombres de dominio acreditado. A continuación, utilice su servicio de DNS (por ejemplo, su registrador de dominio) para crear un registro de DNS y direccionar las consultas al Equilibrador de carga de aplicación. Para obtener más información, consulte la documentación de su servicio de DNS. Por ejemplo, si utiliza Amazon Route 53 como servicio de DNS, cree un registro de alias que apunte a su Equilibrador de carga de aplicación. Para obtener más información, consulte Enrutamiento del tráfico a un equilibrador de carga de ELB en la Guía para desarrolladores de Amazon Route 53.

El Equilibrador de carga de aplicación tiene una dirección IP por zona de disponibilidad habilitada. Estas son las direcciones IP de los nodos del Equilibrador de carga de aplicación. El nombre DNS del Equilibrador de carga de aplicación se resuelve en estas direcciones. Por ejemplo, suponga que el nombre de dominio personalizado del Equilibrador de carga de aplicación es example.applicationloadbalancer.com. Utilice el siguiente comando dig o nslookup para determinar las direcciones IP de los nodos del Equilibrador de carga de aplicación.

Linux o Mac

$ dig +short example.applicationloadbalancer.com

Windows

C:\> nslookup example.applicationloadbalancer.com

El Equilibrador de carga de aplicación tiene registros DNS para sus nodos. Puede usar nombres DNS con la siguiente sintaxis para determinar las direcciones IP de los nodos del equilibrador de carga de aplicaciones: az.name-id.elb.region.amazonaws.com.

Linux o Mac

$ dig +short us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com

Windows

C:\> nslookup us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com