Configuración de un balanceador de carga de aplicaciones compartido - AWS Elastic Beanstalk

Configuración de un balanceador de carga de aplicaciones compartido

Si ha habilitado el equilibrio de carga, el entorno de AWS Elastic Beanstalk contará con un equilibrador de carga Elastic Load Balancing para distribuir el tráfico entre las instancias en el entorno. 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 de aplicaciones compartido que se crea y se asocia con el entorno. Véase también Configuración de un balanceador de tipo Application Load Balancer. 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. Puede cambiar las opciones para administrar el comportamiento del balanceador de carga de un entorno en ejecución, pero no cambiar su tipo. Tampoco puede cambiar de un balanceador de carga dedicado a un balanceador de carga compartido o viceversa.

Introducción

Un balanceador de carga compartido es un balanceador de carga que crea y administra usted mismo mediante el servicio Amazon Elastic Compute Cloud (Amazon EC2) y que puede utilizar en varios entornos de Elastic Beanstalk.

Cuando crea un entorno de escalado balanceado de carga y elige utilizar un balanceador de carga de aplicaciones, Elastic Beanstalk crea un balanceador de carga dedicado al entorno de forma predeterminada. Para saber qué es un balanceador de carga de aplicaciones y cómo funciona en un entorno de Elastic Beanstalk, consulte la introducción a la configuración de balanceadores de carga de aplicaciones para Elastic Beanstalk.

En algunas situaciones puede que desee ahorrarse el costo de tener varios balanceadores de carga dedicados. Esto puede ser útil cuando multiplique varios entornos, por ejemplo, si su aplicación es un conjunto de microservicios en vez de un servicio monolítico. En tales casos, puede optar por utilizar un balanceador de carga compartido.

Para utilizar un balanceador de carga compartido, créelo primero en Amazon EC2 y agregue uno o más agentes de escucha. Durante la creación de un entorno de Elastic Beanstalk, proporciona el balanceador de carga y elige un puerto de escucha. Elastic Beanstalk asocia el agente de escucha con el proceso predeterminado en su entorno. Puede agregar reglas de agente de escucha personalizado para enrutar el tráfico desde encabezados y rutas de host específicos a otros procesos del entorno.

Elastic Beanstalk agrega una etiqueta al balanceador de carga compartido. El nombre de la etiqueta es elasticbeanstalk:shared-elb-environment-count y su valor es el número de entornos que comparten este balanceador de carga.

El uso de un balanceador de carga compartido es distinto de usar uno dedicado de varias maneras.

Regarding Balanceador de carga de aplicaciones específico Balanceador de carga de aplicaciones compartido.

Administración

Elastic Beanstalk crea y administra el balanceador de carga, los oyentes, las reglas de escucha y los procesos (grupos de destino). Elastic Beanstalk también los elimina cuando finaliza su entorno. Elastic Beanstalk puede configurar la captura del registro de acceso del balanceador de carga, si elige esa opción.

Puede crear y administrar el balanceador de carga y los oyentes fuera de Elastic Beanstalk. Elastic Beanstalk crea y administra una y un proceso por defecto y usted puede agregar reglas y procesos. Elastic Beanstalk elimina las reglas y procesos de escucha que se agregaron durante la creación del entorno.

Reglas del agente de escucha

Elastic Beanstalk crea una regla predeterminada para cada agente de escucha, para enrutar todo el tráfico al proceso predeterminado del agente de escucha.

Elastic Beanstalk asocia una regla predeterminada solo con un agente de escucha del puerto 80, si existe. Si elige un puerto de agente de escucha predeterminado diferente, tiene que asociar la regla predeterminada con él (la consola de Elastic Beanstalk y la CLI de EB lo hacen automáticamente).

Para resolver conflictos de condición de regla de agente de escucha entre entornos que comparten el balanceador de carga, Elastic Beanstalk agrega el CNAME del entorno a la regla del agente de escucha como condición de encabezado del host.

Elastic Beanstalk trata la configuración de prioridad de regla como relativa entre entornos que comparten el balanceador de carga y los asigna a prioridades absolutas durante la creación.

Grupos de seguridad

Elastic Beanstalk crea un grupo de seguridad predeterminado y lo asocia al balanceador de carga.

Puede configurar uno o más grupos de seguridad para utilizarlos en el balanceador de carga. Si no lo hace, Elastic Beanstalk comprueba si un grupo de seguridad existente que gestiona Elastic Beanstalk ya está asociado al balanceador de carga. De lo contrario, Elastic Beanstalk crea un grupo de seguridad y lo adjunta al balanceador de carga. Elastic Beanstalk elimina este grupo de seguridad cuando finaliza el último entorno que comparte el balanceador de carga.

Actualizaciones

Puede actualizar el balanceador de carga de aplicaciones después de la creación del entorno. Puede editar agentes de escucha, reglas de escucha y procesos. Puede configurar la captura del registro de acceso del balanceador de carga.

No puede usar Elastic Beanstalk para configurar la captura del registro de acceso en el Balanceador de carga de aplicaciones y no puede actualizar listeners ni reglas de escucha después de la creación del entorno. Solo puede actualizar procesos (grupos de destino). Para configurar la captura de registro de acceso y actualizar los agentes de escucha y las reglas de agentes de escucha, utilice Amazon EC2.

Configuración de un balanceador de carga de aplicaciones compartido mediante la consola de Elastic Beanstalk

Puede utilizar la consola de Elastic Beanstalk para configurar un balanceador de carga de aplicaciones compartido durante la creación del entorno. Puede seleccionar uno de los balanceadores de carga compartibles de su cuenta para utilizarlo en el entorno, seleccionar el puerto del agente de escucha predeterminado y configure los procesos y reglas de agente de escucha adicionales.

No puede editar la configuración compartida del Balanceador de carga de aplicaciones en la consola del balanceador de carga de aplicaciones después de crear el entorno. Para configurar agentes de escucha, reglas de agente de escucha, procesos (grupos de destino) y captura de registro de acceso, utilice Amazon EC2.

Para configurar un balanceador de carga de aplicaciones 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 Capacity.

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

  7. Seleccione la opción balanceador de carga de aplicaciones si aún no está seleccionada y, a continuación, seleccione la opción Compartido .

    
            Página de configuración de Elastic Load Balancing: elección del tipo de balanceador de carga
  8. Realice los cambios compartidos en la configuración del balanceador de carga de aplicaciones 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).

Configuración del balanceador de carga de aplicaciones compartidas

Balanceador de carga de aplicaciones compartido.

Utilice esta sección para elegir un balanceador de carga de aplicaciones compartido para su entorno y configurar el enrutamiento de tráfico predeterminado.

Antes de configurar aquí un balanceador de carga de aplicaciones compartido, utilice Amazon EC2 para definir al menos un balanceador de carga de aplicaciones para compartirlo, con al menos un agente de escucha, en su cuenta. Si aún no lo ha hecho, puede elegir Administrar balanceadores de carga. Elastic Beanstalk abre la consola de Amazon EC2 en una nueva pestaña del navegador.

Cuando haya terminado de configurar balanceadores de carga compartidos fuera de Elastic Beanstalk, configure las siguientes opciones en esta sección de consola:

  • Load balancer ARN (ARN de balanceador de carga): el balanceador de carga compartido que se va a utilizar en este entorno. Seleccione de una lista de balanceadores de carga o introduzca un nombre de recurso de Amazon (ARN) de balanceador de carga.

  • Default listener port (Puerto de agente de escucha predeterminado): un puerto de agente de escucha en el que escucha el balanceador de carga compartido. Seleccione de una lista de puertos de agente de escucha existentes. El tráfico de este agente de escucha con el CNAME del entorno en el encabezado del host se redirige a un proceso predeterminado en este entorno.


          Configuración del balanceador de carga de aplicaciones: elegir el balanceador de carga compartido

Processes

Utilice esta lista para especificar procesos para el balanceador de carga compartido. Un proceso es un destino al que los agentes de escucha dirigen el tráfico. Inicialmente, la lista muestra el proceso predeterminado, que recibe tráfico del agente de escucha predeterminado.


          Configuración del balanceador de carga de aplicaciones: lista de procesos

Para configurar un proceso existente

  1. Seleccione la casilla de verificación junto a la entrada correspondiente en la tabla y, a continuación, elija Actions (Acciones), Edit (Editar).

  2. Utilice el cuadro de diálogo Proceso del entorno para editar la configuración y, a continuación, elija Guardar.

Para agregar un proceso

  1. Elija Agregar un proceso.

  2. En el cuadro de diálogo Proceso del entorno configure la configuración que desee y, a continuación, elija Añadir.

Configuración del cuadro de diálogo del proceso de entorno del balanceador de carga de aplicaciones

Definición

Utilice estas opciones para definir el proceso: Name (Nombre), Port (Puerto) y Protocol (Protocolo) en los que espera las solicitudes.


            Configuración del proceso del balanceador de carga de aplicaciones para el nombre, el puerto y el protocolo

Comprobación de estado

Utilice las opciones siguientes para configurar las comprobaciones de estado del proceso:

  • HTTP code (Código HTTP): el código de estado HTTP que designa a un proceso en buen estado.

  • Path (Ruta) : ruta de la solicitud de comprobación de estado del proceso.

  • 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.

  • Deregistration delay (Retraso de anulación del registro): intervalo de tiempo, en segundos, que debe esperarse a que se completen las solicitudes activas antes de anular el registro de una instancia.


            Configuración del proceso del balanceador de carga de aplicaciones para una 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.

Sesiones

Seleccione o desactive la casilla Stickiness policy enabled (Política de persistencia 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 604800 segundos.


            Configuración del proceso del balanceador de carga de aplicaciones para la sesión sticky

Reglas

Utilice esta lista para especificar las reglas del agente de escucha personalizadas para el balanceador de carga compartido. Una regla asigna un destino a las solicitudes que reciba el agente de escucha con un patrón de ruta específico. Cada agente de escucha puede tener varias reglas, redireccionado solicitudes en distintas rutas a distintos procesos en instancias de los diferentes entornos que comparten el agente de escucha.

Las reglas tienen prioridades numéricas que determinan la prioridad con que se aplican a las solicitudes entrantes. Elastic Beanstalk agrega una regla predeterminada que enruta todo el tráfico del listener predeterminado al proceso predeterminado de su nuevo entorno. La prioridad de la regla predeterminada es la más baja; solo se aplica si ninguna otra regla del mismo agente de escucha es aplicable a la solicitud entrante. Inicialmente, si no ha agregado reglas personalizadas, la lista está vacía. No se muestra la regla predeterminada.


          Configuración del balanceador de carga de aplicaciones: lista de reglas

Puede editar las opciones de una regla existente o añadir una regla nueva. Para comenzar a editar una regla en la lista o agregarle otra, siga los mismos pasos que se indican para la lista de procesos. Se abre el cuadro de diálogo Listener rule (Regla de agente de escucha) con las opciones siguientes:

  • Name (Nombre): el nombre de la regla.

  • Listener port (Puerto del agente de escucha): el puerto del agente de escucha al que se aplica la regla.

  • Priority (Prioridad): la prioridad de la regla. Cuanto menor sea el número mayor es la prioridad. Las prioridades de las reglas de un agente de escucha deben ser únicas. Elastic Beanstalk trata las prioridades de regla como relativas en todos los entornos de uso compartido y las asigna a prioridades absolutas durante la creación.

  • Match conditions (Condiciones de coincidencia): una lista de condiciones de URL de solicitud a las que se aplica la regla. Hay dos tipos de condiciones: HostHeader (la parte del dominio de la URL) y PathPattern (la parte de la ruta de la URL). Una condición está reservada para el subdominio del entorno y puede agregar hasta cuatro condiciones. El valor de cada condición tiene una longitud de hasta 128 caracteres y puede incluir caracteres comodín.

  • Process (Proceso): el proceso al que el balanceador de carga dirige las solicitudes a las que se aplica la regla.


          Configuración del balanceador de carga de aplicaciones: lista de reglas

Ejemplo: utilizar un balanceador de carga de aplicaciones compartido para una aplicación segura basada en microservicios

En este ejemplo, la aplicación consta de varios microservicios, cada uno implementado como un entorno de Elastic Beanstalk. Además, necesita cifrado de tráfico de extremo a extremo. Demostraremos uno de los entornos de microservicios, que tiene un proceso principal para las solicitudes de los usuarios y un proceso independiente para la gestión de solicitudes administrativas.

Para cumplir estos requisitos, utilice Amazon EC2 para crear un balanceador de carga de aplicaciones que compartirá entre sus microservicios. Agregue un agente de escucha seguro en el puerto 443 y el protocolo HTTPS. A continuación, agregue varios certificados SSL al agente de escucha: uno por dominio de microservicio. Para obtener más información sobre cómo crear el balanceador de carga de aplicaciones y el agente de escucha seguro, consulte Crear un balanceador de carga de aplicaciones y Crear un agente de escucha HTTPS para el balanceador de carga de aplicaciones en la Guía del usuario de balanceadores de carga de aplicaciones.

En Elastic Beanstalk, configure cada entorno de microservicios para utilizar el balanceador de carga de aplicaciones compartido y establezca el puerto de escucha predeterminado en 443. En el caso del entorno particular que estamos demostrando aquí, indique que el proceso predeterminado escucha el puerto 443 en HTTPS y agregue un proceso y una regla de agente de escucha para el tráfico de administración en una ruta diferente.

Para configurar el balanceador de carga compartido para este ejemplo

  1. En la sección Balanceador de carga de aplicaciones compartidas seleccione el balanceador de carga y, a continuación, en Puerto de escucha predeterminado, seleccione 443. El puerto del agente de escucha ya debe estar seleccionado si es el único agente de escucha que tiene el balanceador de carga.

    
            Configuración del balanceador de carga de aplicaciones: agregar un agente de escucha seguro
  2. Configuración del proceso predeterminado con HTTPS. Seleccione el proceso predeterminado y, a continuación, en Actions (Acciones), elija Edit (Editar). En Puerto, escriba 443. En Protocolo, seleccione HTTPS.

    
            Ejemplo de configuración del balanceador de carga de aplicaciones: configuración del proceso predeterminado en HTTPS
  3. Adición de un proceso administrativo. En Nombre, escriba admin. En Puerto, escriba 443. En Protocolo, seleccione HTTPS. En Comprobación de estado, en Ruta escriba /admin.

    
            Ejemplo de configuración del balanceador de carga de aplicaciones: agregar proceso de administración
  4. Adición de una regla para el tráfico administrativo. En Nombre, escriba admin. En Puerto de agente de escucha, escriba 443. En Condiciones de coincidencia, agregue un PathPattern con el valor /admin/*. En Procesar, seleccione admin.

    
            Ejemplo de configuración del balanceador de carga de aplicaciones: agregar regla de administrador

Configuración de un balanceador de carga de aplicaciones compartido mediante la CLI de EB

La CLI de EB le pida que elija el tipo de balanceador de carga cuando se ejecuta eb create. Si elige application (el valor predeterminado) y si su cuenta tiene al menos un balanceador de carga de aplicaciones compartible, la CLI de EB también le pregunta si desea utilizar un balanceador de carga de aplicaciones compartido. Si responde y, también se le pedirá que seleccione el balanceador de carga y el puerto predeterminado.

$ 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 2): Your account has one or more sharable load balancers. Would you like your new environment to use a shared load balancer?(y/N) y Select a shared load balancer 1)MySharedALB1 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB1/6d69caa75b15d46e 2)MySharedALB2 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 (default is 1): 2 Select a listener port for your shared load balancer 1) 80 2) 100 3) 443 (default is 1): 3

También puede especificar un balanceador de carga compartido mediante las opciones de comando.

$ eb create test-env --elb-type application --shared-lb MySharedALB2 --shared-lb-port 443

Espacios de nombres de balanceador de carga de aplicaciones compartidos.

Puede encontrar la configuración relacionada con los balanceadores de carga de aplicaciones compartidos en los siguientes espacios de nombres:

  • aws:elasticbeanstalk:environment: elija el tipo de balanceador de carga para el entorno e indique a Elastic Beanstalk que utilizará un balanceador de carga compartido.

    No puede establecer estas dos opciones en los archivos de configuración (.Ebextensions).

  • aws:elbv2:loadbalancer : configure el ARN compartido del balanceador de carga de aplicaciones y los grupos de seguridad.

  • aws:elbv2:listener : asocie agentes de escucha del balanceador de carga de aplicaciones compartido con procesos de entorno mediante la lista de reglas de escucha.

  • aws:elbv2:listenerrule: configure reglas de agente de escucha que redirijan el tráfico a diferentes procesos, en función de la ruta de la solicitud. Las reglas son exclusivas de los balanceadores de carga de aplicaciones, tanto los específicos como los compartidos.

  • aws:elasticbeanstalk:environment:process: configure las comprobaciones de estado y especifique el puerto y el protocolo de los procesos que se ejecutan en las instancias del entorno.

ejemplo .ebextensions/application-load-balancer-shared.config

Para empezar a utilizar un balanceador de carga de aplicaciones compartido, utilice la consola Elastic Beanstalk, la CLI de EB o la API para establecer el tipo de balanceador de carga en application y elegir utilizar un balanceador de carga compartido. Utilice un archivo de configuración para configurar el balanceador de carga compartido.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
nota

Puede configurar esta opción solo durante la creación del entorno.

ejemplo .ebextensions/alb-shared-secure-listener.config

El siguiente archivo de configuración selecciona un agente de escucha seguro predeterminado en el puerto 443 para el balanceador de carga compartido y establece el proceso predeterminado para escuchar el puerto 443.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 aws:elbv2:listener:443: rules: default aws:elasticbeanstalk:environment:process:default: Port: '443' Protocol: HTTPS

ejemplo .ebextensions/alb-shared-admin-rule.config

El siguiente archivo de configuración se basa en el ejemplo anterior y agrega una regla que redirige el tráfico con una ruta de solicitud de /admin a un proceso denominado admin que escucha en el puerto 4443.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 aws:elbv2:listener:443: rules: default,admin aws:elasticbeanstalk:environment:process:default: Port: '443' Protocol: HTTPS aws:elasticbeanstalk:environment:process:admin: HealthCheckPath: /admin Port: '4443' Protocol: HTTPS aws:elbv2:listenerrule:admin: PathPatterns: /admin/* Priority: 1 Process: admin