Configuración de un Classic Load Balancer - AWS Elastic Beanstalk

Configuración de un Classic Load Balancer

Si ha habilitado el balanceo de carga, el entorno de AWS Elastic Beanstalk contará con un balanceador de carga de Elastic Load Balancing para distribuir el tráfico entre sus instancias. Elastic Load Balancing admite varios tipos de balanceadores de carga. Para obtener más información sobre ellos, consulte la Guía de usuario de Elastic Load Balancing. Elastic Beanstalk puede crear un balanceador para usted o permitirle especificar un balanceador de carga compartido que haya creado.

En este tema se describe la configuración de un balanceador de carga clásico que Elastic Beanstalk crea y dedica a su entorno. Para obtener más información sobre cómo configurar todos los tipos de balanceadores de carga compatibles con Elastic Beanstalk, consulte Balanceador de carga del entorno de Elastic Beanstalk.

nota

Solo es posible elegir el tipo de balanceador de carga de un entorno en el momento de su creación. Más adelante, puede cambiar las opciones para administrar el comportamiento del balanceador de carga de un entorno en ejecución, pero no cambiar su tipo.

Introducción

Un balanceador de carga clásico es el balanceador de carga de la generación anterior de Elastic Load Balancing. Permite el direccionamiento del tráfico HTTP, HTTPS o TCP a los distintos puertos de las instancias de entorno.

Cuando su entorno utiliza un balanceador de carga clásico, Elastic Beanstalk lo configura de forma predeterminada para escuchar el tráfico HTTP en el puerto 80 y reenviarlo a instancias del mismo puerto. Para permitir conexiones seguras, puede configurar su balanceador de carga con un agente de escucha en el puerto 443 y un certificado TLS.

El balanceador de carga utiliza una comprobación de estado para determinar si las instancias Amazon EC2 que ejecutan una aplicación están en buen estado. La comprobación de estado realiza una solicitud a una URL especificada en los intervalos indicados. Si la URL devuelve un mensaje de error o no termina en el periodo de tiempo de espera especificado, la comprobación de estado no se ha superado.

Si su aplicación funciona mejor sirviendo varias solicitudes del mismo cliente en un único servidor, puede configurar el balanceador de carga para que utilice sesiones sticky. Con las sesiones sticky, el balanceador de carga añade una cookie a las respuestas HTTP para identificar la instancia Amazon EC2 que atendió la solicitud. Cuando se recibe una solicitud posterior del mismo cliente, el balanceador de carga utiliza la cookie para enviar la solicitud a la misma instancia.

Con cross-zone load balancing, cada nodo del balanceador de carga de su balanceador de carga clásico distribuye las solicitudes equitativamente entre todas las instancias registradas en todas las zonas de disponibilidad habilitadas. Si cross-zone load balancing está inhabilitado, cada nodo del balanceador de carga distribuye las solicitudes equitativamente entre todas las instancias registradas solo en su zona de disponibilidad.

Cuando se elimina una instancia del balanceador de carga porque ya no está en buen estado o porque se han reducido las instancias del entorno, el Connection Draining (Vaciado de conexiones) deja tiempo a la instancia para que complete las solicitudes antes de cerrar la conexión entre la instancia y el balanceador de carga. Puede cambiar la cantidad de tiempo asignada a las instancias para enviar una respuesta o deshabilitar completamente el vaciado de conexiones.

nota

El Connection draining se habilita de forma predeterminada cuando se crea un entorno con la consola de Elastic Beanstalk o la CLI de EB. Para el resto de los clientes, puede habilitarlo con opciones de configuración.

Puede utilizar las opciones avanzadas del balanceador de carga para configurar agentes de escucha en puertos arbitrarios, modificar la configuración adicional de sesiones sticky y configurar el balanceador de carga para que se conecte a instancias EC2 de forma segura. Estas opciones están disponibles a través de las opciones de configuración que puede definir usando los archivos de configuración del código fuente, o directamente en un entorno a través de la API de Elastic Beanstalk. Muchos de estos ajustes también están disponibles en la consola de Elastic Beanstalk. Además, también puede configurar un balanceador de carga para cargar registros de acceso en Amazon S3.

Configuración de un balanceador de carga clásico mediante la consola de Elastic Beanstalk

Puede utilizar la consola de Elastic Beanstalk para configurar los puertos de un balanceador de carga clásico, el certificado HTTPS y otras opciones durante la creación del entorno o, posteriormente, con el entorno ya en ejecución.

Para configurar un balanceador de carga clásico en la consola de Elastic Beanstalk durante la creación del entorno

  1. Abra la consola de Elastic Beanstalk y, en la lista Regions (Regiones), seleccione su región de AWS.

  2. En el panel de navegación, elija Environments (Entornos).

  3. Elija Create a new environment (Crear un nuevo entorno) para empezar a crear el entorno.

  4. En la página principal del asistente, antes de elegir Create environment (Crear entorno), elija Configure more options (Configurar más opciones).

  5. Elija la configuración predefinida High availability (Alta disponibilidad).

    Como alternativa, en la categoría de configuración Capacity (Capacidad), configure como tipo de entorno Load balanced (Balanceo de carga). Para obtener más información, consulte Capacidad.

  6. En la categoría de configuración Load balancer (Balanceador de carga), elija Edit (Editar).

  7. Seleccione la opción Classic Load Balancer (Balanceador de carga clásico) si aún no está seleccionada.

    
            Página de configuración del balanceador de carga: elección del tipo de balanceador de carga
  8. Realice los cambios en la configuración del balanceador de carga clásico que requiera su entorno.

  9. Elija Save (Guardar) y haga los demás cambios de configuración que requiera su entorno.

  10. Seleccione Create environment (Crear entorno).

Para configurar el balanceador de carga clásico de un entorno en ejecución en la consola de Elastic Beanstalk

  1. Abra la consola de Elastic Beanstalk y, en la lista Regions (Regiones), seleccione su región de AWS.

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. En el panel de navegación, elija Configuration (Configuración).

  4. En la categoría de configuración Load balancer (Balanceador de carga), elija Edit (Editar).

    nota

    Si la categoría de configuración Load balancer (Balanceador de carga) no tiene un botón Edit (Editar), el entorno no tiene un balanceador de carga. Para saber cómo configurar uno, consulte Cambiar el tipo de entorno

  5. Realice los cambios de configuración del balanceador de carga clásico que requiera su entorno.

  6. Seleccione Apply.

Agentes de escucha

Utilice esta lista para especificar los agentes de escucha del balanceador de carga. Cada agente de escucha dirige a las instancias el tráfico entrante desde el cliente en un puerto y con un protocolo especificados. Inicialmente, la lista muestra el agente de escucha predeterminado, que dirige el tráfico HTTP entrante en el puerto 80 a los servidores de la instancia del entorno que están esperando tráfico HTTP en el puerto 80.


          Configuración clásica del balanceador de carga: edición de agentes de escucha

Para configurar un agente de escucha existente

  1. Marque la casilla de verificación junto a la entrada correspondiente en la tabla, elija Actions (Acciones) y elija entonces la acción que desee.

  2. Si ha elegido Edit (Editar), utilice el cuadro de diálogo Classic Load Balancer listener (Agente de escucha de Classic Load Balancer) para modificar las opciones y a continuación elija Save (Guardar).

Por ejemplo, puede editar el agente de escucha predeterminado y cambiar Protocol (Protocolo) de HTTP a TCP si desea que el balanceador de carga reenvíe las solicitudes sin modificación. Esto impide que el equilibrador de carga reescriba los encabezados (incluido X-Forwarded-For). La técnica no funciona con las sesiones sticky.


          Configuración clásica del balanceador de carga: cambiar el protocolo del agente de escucha predeterminado a TCP

Para agregar un agente de escucha

  1. Elija Add listener (Añadir agente de escucha).

  2. En el cuadro de diálogo Classic Load Balancer listener (Agente de escucha de Classic Load Balancer), configure las opciones que desee y, a continuación, elija Add (Añadir).

La adición de un agente de escucha seguro es un caso de uso común. En el ejemplo de la imagen siguiente se añade un agente de escucha para el tráfico HTTPS en el puerto 443. Este agente dirige el tráfico entrante a los servidores de instancia del entorno que esperan tráfico HTTPS en el puerto 443.

Para poder configurar un agente de escucha HTTPS, antes debe asegurarse de tener un certificado SSL válido. Aplique alguna de las siguientes acciones:

  • Si AWS Certificate Manager (ACM) está disponible en su región de AWS, cree o importe un certificado mediante ACM. Para obtener más información sobre cómo solicitar un certificado de ACM, consulte Solicitar un certificado en la Guía del usuario de AWS Certificate Manager. Para obtener más información sobre cómo importar certificados de terceros en ACM, consulte Importar certificados en la Guía del usuario de AWS Certificate Manager.

  • Si ACM no está disponible en su región de AWS, cargue el certificado y la clave existentes en IAM. Para obtener más información sobre la creación y la carga de certificados en IAM, consulte Uso de certificados de servidor en la Guía de usuario de IAM.

Para obtener más información sobre cómo configurar HTTPS y trabajar con certificados en Elastic Beanstalk, consulte Configuración de HTTPS para su entorno de Elastic Beanstalk.

En SSL certificate (Certificado SSL), elija el ARN del certificado SSL. Por ejemplo, arn:aws:iam::123456789012:server-certificate/abc/certs/build o arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678.


          Configuración del balanceador de carga clásico: adición de un agente de escucha seguro

Para obtener información sobre el modo de configurar HTTPS y trabajar con certificados en Elastic Beanstalk, consulte Configuración de HTTPS para su entorno de Elastic Beanstalk.

Sesiones

Seleccione o desactive la casilla Session stickiness enabled (Sesión sticky habilitada) para habilitar o deshabilitar las sesiones sticky. Utilice Cookie duration (Duración de la cookie) para configurar una sesión sticky de duración, hasta 1000000 segundos. En la lista Load balancer ports (Puertos del balanceador de carga) seleccione los puertos de escucha a los que se aplica la política predeterminada (AWSEB-ELB-StickinessPolicy).


          Configuración del balanceador de carga clásico para la duración y la sesión sticky

Balance de carga entre zonas

Seleccione o desactive la casilla Load balancing across multiple Availability Zones enabled (Balanceo de carga en varias zonas de disponibilidad habilitado) para habilitar o deshabilitar el balanceo de carga entre zonas.


          Configuración del balanceador de carga clásico para el balanceo de carga entre zonas

Vaciado de conexiones

Seleccione o desactive la casilla Connection draining enabled (Vaciado de conexiones habilitado) para habilitar o deshabilitar el vaciado de conexiones. Establezca el Draining timeout (Tiempo de espera de vaciado), hasta 3600 segundos.


          Configuración del balanceador de carga clásico para el vaciado de la conexión y el tiempo de espera de vaciado

Comprobación de estado

Utilice las opciones siguientes para configurar las comprobaciones de estado del balanceador de carga:

  • Health check path (Ruta de comprobación de estado): Ruta a la que el balanceador de carga envía las solicitudes de comprobación de estado. Si no establece la ruta, el balanceador de carga intenta establecer una conexión TCP en el puerto 80 para comprobar el estado.

  • Timeout (Tiempo de espera): Intervalo de tiempo en segundos que debe esperarse una respuesta de comprobación de estado.

  • Interval (Intervalo): Intervalo de tiempo en segundos entre las comprobaciones de estado de una instancia individual. El intervalo debe ser mayor que el tiempo de espera.

  • Unhealthy threshold (Umbral incorrecto), Healthy threshold (Umbral correcto): Número de comprobaciones de estado que deben fallar o pasar, respectivamente, para que Elastic Load Balancing cambie el estado de una instancia.


          Configuración del balanceador de carga clásico para la comprobación de estado
nota

La comprobación de estado de Elastic Load Balancing no afecta al comportamiento de comprobación de estado del grupo de Auto Scaling de un entorno. Las instancias que fallan en una comprobación de estado de Elastic Load Balancing no se reemplazan automáticamente por Amazon EC2 Auto Scaling, a menos que configure manualmente Amazon EC2 Auto Scaling para hacerlo. Para obtener más información, consulte Configuración de comprobaciones de estado de Auto Scaling.

Para obtener más información sobre las comprobaciones de estado y la forma en que influyen en el estado general del entorno, consulte Informes de estado básicos.

Configuración de un balanceador de carga clásico mediante la CLI de EB

La CLI de EB le pida que elija el tipo de balanceador de carga cuando se ejecuta eb create.

$ eb create Enter Environment Name (default is my-app): test-env Enter DNS CNAME prefix (default is my-app): test-env-DLW24ED23SF Select a load balancer type 1) classic 2) application 3) network (default is 1):

Pulse Enter (Intro) para seleccionar classic.

También puede especificar un tipo de balanceador de carga mediante la opción --elb-type.

$ eb create test-env --elb-type classic

Espacios de nombres de la configuración del balanceador de carga clásico

Puede encontrar la configuración relacionada con balanceadores de carga clásicos en los siguientes espacios de nombres:

  • aws:elb:healthcheck: configure los umbrales, el intervalo de comprobación y el tiempo de espera de las comprobaciones de estado del balanceador de carga.

  • aws:elasticbeanstalk:application: configure la URL de comprobación de estado.

  • aws:elb:loadbalancer: habilite el balanceo de carga entre zonas. Asigne grupos de seguridad al balanceador de carga e invalide el grupo de seguridad predeterminado que crea Elastic Beanstalk. Este espacio de nombres incluye también opciones obsoletas para configurar los agentes de escucha estándar y seguro, que se han sustituido por opciones del espacio de nombres aws:elb:listener.

  • aws:elb:listener: configure el agente de escucha predeterminado en el puerto 80, un agente de escucha seguro en el puerto 443 o agentes de escucha adicionales para cualquier protocolo en cualquier puerto. Si especifica aws:elb:listener como el espacio de nombres, la configuración se aplica al agente de escucha predeterminado en el puerto 80. Si especifica un puerto (por ejemplo, aws:elb:listener:443), se configura un agente de escucha en dicho puerto.

  • aws:elb:policies: configure opciones adicionales para el balanceador de carga. Utilice las opciones de este espacio de nombres para configurar agentes de escucha en puertos arbitrarios, modificar la configuración adicional de sesiones sticky y configurar el balanceador de carga para que se conecte a instancias de Amazon EC2 de forma segura.

La CLI de EB y la consola de Elastic Beanstalk aplican los valores recomendados a las opciones anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para obtener más información, consulte Valores recomendados.

ejemplo .ebextensions/loadbalancer-terminatehttps.config

El siguiente archivo de configuración de ejemplo crea un agente de escucha HTTPS en el puerto 443, asigna un certificado que el balanceador de carga utiliza para terminar la conexión segura y desactiva el agente de escucha predeterminado en el puerto 80. El balanceador de carga reenvía las solicitudes descifradas a las instancias EC2 de su entorno en el puerto HTTP 80.

option_settings: aws:elb:listener:443: ListenerProtocol: HTTPS SSLCertificateId: arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678 InstancePort: 80 InstanceProtocol: HTTP aws:elb:listener: ListenerEnabled: false