Configuración de un balanceador de tipo Application Load Balancer - AWS Elastic Beanstalk

Configuración de un balanceador de tipo Application 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 de aplicaciones que Elastic Beanstalk crea y dedica a su entorno. Véase también Configuración de un balanceador de carga de aplicaciones compartido. Para obtener más información acerca del modo de configurar todos los tipos de balanceador 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 de aplicaciones inspecciona el tráfico en la capa de aplicación del protocolo de red para identificar la ruta de la solicitud, lo que le permite dirigir las solicitudes con rutas distintas a destinos diferentes.

Cuando su entorno utiliza un balanceador de carga de aplicaciones, Elastic Beanstalk lo configura de forma predeterminada para realizar la misma función que un balanceador de carga clásico. El agente de escucha predeterminado acepta las solicitudes HTTP en el puerto 80 y las distribuye a las instancias del entorno. Puede agregar un agente de escucha seguro en el puerto 443 con un certificado para descifrar el tráfico HTTPS, configurar el comportamiento de las comprobaciones de estado e insertar registros de acceso del balanceador de carga en un bucket de Amazon Simple Storage Service (Amazon S3).

nota

A diferencia de un balanceador de carga clásico o un balanceador de carga de red, un balanceador de carga de aplicaciones no puede tener agentes de escucha TCP o SSL/TLS de capa de transporte (capa 4). Solo admite agentes de escucha HTTP y HTTPS. Además, no puede utilizar la autenticación backend para autenticar las conexiones HTTPS entre el balanceador de carga y las instancias de backend.

En un entorno de Elastic Beanstalk, puede utilizar un balanceador de carga de aplicaciones para dirigir el tráfico de determinadas rutas a un proceso diferente en las instancias del servidor web. Con un balanceador de carga clásico, todo el tráfico que llega al agente de escucha se direcciona a un único puerto de las instancias del backend. Con un balanceador de carga de aplicaciones puede configurar varias reglas en el agente de escucha para enrutar las solicitudes con determinadas rutas a diferentes procesos de backend. Puede configurar cada proceso con el puerto en el que escucha el proceso.

Por ejemplo, podría ejecutar un proceso de inicio de sesión separándolo de la aplicación principal. Aunque la aplicación principal de las instancias del entorno aceptaría la mayoría de las solicitudes y las recibiría en el puerto 80, el proceso de inicio de sesión utiliza el puerto 5000 y acepta las solicitudes dirigidas a la ruta /login. Todas las solicitudes entrantes de los clientes llegan al puerto 80. Con un balanceador de carga de aplicaciones puede configurar un único agente de escucha para el tráfico entrante en el puerto 80 con dos reglas que dirijan el tráfico a dos procesos independientes, en función de la ruta de la solicitud. Puede agregar una regla personalizada que enruta tráfico a /login al proceso de inicio de sesión escuchando en el puerto 5000. La regla predeterminada dirige el resto del tráfico al proceso de la aplicación principal en el puerto 80.

Una regla del balanceador de carga de aplicaciones asigna una solicitud a un grupo de destino. En Elastic Beanstalk, un grupo objetivo está representado por un proceso. Puede configurar un proceso con las opciones de protocolo, puerto y comprobación de estado. Dicho proceso representa al proceso que se ejecuta en las instancias del entorno. El proceso predeterminado es un agente de escucha del puerto 80 del proxy inverso (nginx o Apache) que se ejecuta delante de la aplicación.

nota

Fuera de Elastic Beanstalk, un grupo objetivo se asigna a un grupo de instancias. Un agente de escucha puede utilizar reglas y grupos de destino para enrutar el tráfico a diferentes instancias en función de la ruta. Dentro de Elastic Beanstalk, todas las instancias del entorno son idénticas, por lo que la distinción se hace entre los procesos que utilizan diferentes puertos de escucha.

Un balanceador de carga clásico utiliza una única ruta de comprobación de estado para todo el entorno. Con un balanceador de carga de aplicaciones, cada proceso tiene una ruta de comprobación de estado independiente supervisada por el balanceador de carga y la supervisión del estado mejorada de Elastic Beanstalk.

Para utilizar un balanceador de carga de aplicaciones, el entorno debe estar en una VPC predeterminada o personalizada y debe tener un rol de servicio con el conjunto estándar de permisos. Si tiene un rol de servicio antiguo, es posible que tenga que actualizar los permisos del rol para incluir elasticloadbalancing:DescribeTargetHealth y elasticloadbalancing:DescribeLoadBalancers. Para obtener más información sobre los balanceadores de carga de aplicaciones, consulte What is an Application Load Balancer? (¿Qué es un Application Load Balancer?).

nota

La comprobación de estado del balanceador de carga de aplicaciones no utiliza la ruta de comprobación de estado de Elastic Beanstalk. En su lugar, usa la ruta específica configurada para cada proceso por separado.

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

Puede utilizar la consola de Elastic Beanstalk para configurar los agentes de escucha, procesos y reglas de un balanceador de carga de aplicaciones durante la creación del entorno o posterior cuando se está ejecutando el entorno.

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

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

  7. Seleccione las opciones Application Load Balancer (Balanceador de carga de aplicaciones) y Dedicated (Dedicado) si aún no están seleccionadas.

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

Para configurar el balanceador de carga de aplicaciones 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 en la configuración del balanceador de carga de aplicaciones que su entorno requiera.

  6. Seleccione Apply.

Configuración de balanceadores de carga de aplicaciones

Agentes de escucha

Utilice esta lista para especificar los agentes de escucha del balanceador de carga. Cada agente de escucha dirige a uno o más procesos de 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 enruta el tráfico HTTP entrante en el puerto 80 a un proceso llamado Predeterminado.


          Configuración del balanceador de carga de aplicaciones: lista de agentes de escucha

Para configurar un agente de escucha 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 Application Load Balancer listener (Agente de escucha de Application Load Balancer) para modificar las opciones y a continuación elija Save (Guardar).

Para agregar un agente de escucha

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

  2. En el cuadro de diálogo Agente de escucha del balanceador de carga de la aplicación, configure las opciones que desee y, a continuación, elija Añadir.

Utilice la configuración del cuadro de diálogo del Agente de escucha del balanceador de carga de la aplicación para elegir el puerto y el protocolo en los que el agente de escucha escucha el tráfico y el proceso al que se va a enrutar el tráfico. Si elige el protocolo HTTPS, configure las opciones de SSL.


          Cuadro de diálogo del agente de escucha del balanceador de carga de aplicaciones

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.

Procesos

Utilice esta lista para especificar los procesos del balanceador de carga. Un proceso es un destino al que los agentes de escucha dirigen el tráfico. Cada agente de escucha dirige a uno o más procesos de las instancias el tráfico entrante desde el cliente en un puerto y con un protocolo especificados. Inicialmente, la lista muestra el proceso predeterminado, que escucha el tráfico HTTP entrante en el puerto 80.


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

Puede editar la configuración de un proceso existente o agregar un nuevo proceso. Para empezar a editar un proceso de la lista o añadirle otro, utilice los pasos que se indican para la lista de agentes de escucha. Se abre el cuadro de diálogo Environment process (Proceso del entorno).

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 personalizado del balanceador de carga. 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, dirigiendo así las solicitudes con rutas distintas a procesos distintos de las instancias.

Las reglas tienen prioridades numéricas que determinan la prioridad con que se aplican a las solicitudes entrantes. Para cada nuevo agente de escucha que se agrega,Elastic Beanstalk añade una regla predeterminada que dirige todo su tráfico al proceso predeterminado. 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 muestran las reglas predeterminadas de todos los agentes de escucha.


          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 empezar a editar una regla de la lista o añadirle otra, siga los pasos que se indican para la lista de agentes de escucha. 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.

  • 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). Puede agregar hasta cinco condiciones. Cada valor de condición tiene 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.

Al editar cualquier regla existente, no puede cambiar el valor de Name (Nombre) ni el de Listener port (Puerto del agente de escucha).


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

Captura de registro de acceso

Utilice estas opciones para configurar Elastic Load Balancing para capturar registros con información detallada sobre las solicitudes enviadas a su balanceador de carga de aplicaciones. La captura de registro de acceso está desactivada de forma predeterminada. Cuando los registros de almacenamiento están habilitados, Elastic Load Balancing almacena los registros en el bucket de S3 que ha configurado. La configuración Prefix (Prefijo) especifica una carpeta de nivel superior en el bucket para los registros. Elastic Load Balancing coloca los registros en una carpeta denominada AWSLogs en el prefijo. Si no especifica un prefijo, Elastic Load Balancing coloca su carpeta en el nivel raíz del bucket.

nota

Si el bucket de Amazon S3 que configura para la captura de registro de acceso no es el bucket que Elastic Beanstalk creó para la cuenta, asegúrese de agregar una política de usuario con los permisos adecuados para los usuarios de AWS Identity and Access Management (IAM). Las políticas de usuario administradas que Elastic Beanstalk proporciona solo incluyen permisos para los recursos administrados por Elastic Beanstalk.

Para obtener más información acerca de los registros de acceso, incluidos los permisos y otros requisitos, Registros de acceso para el balanceador de carga de aplicaciones.


          Configuración del balanceador de carga de aplicaciones: registros de acceso

Ejemplo: Balanceador de carga de aplicaciones con un agente de escucha seguro y dos procesos

En este ejemplo, la aplicación requiere cifrado del tráfico de extremo a extremo y un proceso independiente para gestionar las solicitudes administrativas.

Para configurar el balanceador de carga de aplicaciones de su entorno de modo que satisfaga estos requisitos, debe eliminar el agente de escucha predeterminado, agregar un agente de escucha HTTPS, indicar que el proceso predeterminado escucha en el puerto 443 para HTTPS y agregar un proceso y una regla de agente de escucha para dirigir el tráfico administrativo con una ruta diferente.

Para configurar el balanceador de carga para este ejemplo

  1. Adición de un agente de escucha seguro. En Puerto, escriba 443. En Protocolo, seleccione HTTPS. En Certificado SSL, seleccione 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.

    En Proceso predeterminado, mantenga seleccionado default.

    
            Configuración del balanceador de carga de aplicaciones: agregar un agente de escucha seguro

    Ahora puede ver el agente de escucha adicional en la lista.

    
            Ejemplo de configuración del balanceador de carga de aplicaciones: lista de agentes de escucha con dos agentes de escucha
  2. Deshabilitar el agente de escucha predeterminado para HTTP en el puerto 80. Para el agente de escucha predeterminado, desactive la opción Enabled (Habilitado).

    
            Ejemplo de configuración del balanceador de carga de aplicaciones: deshabilitar el agente de escucha predeterminado
  3. 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
  4. 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
  5. 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 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 2):

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

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

Espacios de nombres de Application Load Balancer

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

  • aws:elasticbeanstalk:environment: elija el tipo de balanceador de carga para el entorno. El valor de un balanceador de carga de aplicaciones es application.

    No puede establecer esta opción en los archivos de configuración (.Ebextensions).

  • aws:elbv2:loadbalancer: configure los registros de acceso y otras opciones que se aplican al balanceador de carga de aplicaciones como un todo.

  • aws:elbv2:listener: configure los agentes de escucha en el balanceador de carga de aplicaciones. Estos valores se corresponden con los de aws:elb:listener en los balanceadores de carga clásicos.

  • aws:elbv2:listenerrule: configure reglas 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.

  • 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. Los valores del puerto y del protocolo se asignan a los valores del puerto y del protocolo de la instancia especificados en aws:elb:listener para un agente de escucha de un balanceador de tipo Classic Load Balancer. Los valores de la comprobación de estado se corresponden con los valores de los espacios de nombres aws:elb:healthcheck y aws:elasticbeanstalk:application.

ejemplo .ebextensions/alb-access-logs.config

El siguiente archivo de configuración permite obtener acceso a las cargas de registros de un entorno con un balanceador de carga de aplicaciones.

option_settings: aws:elbv2:loadbalancer: AccessLogsS3Bucket: DOC-EXAMPLE-BUCKET AccessLogsS3Enabled: 'true' AccessLogsS3Prefix: beanstalk-alb

ejemplo .ebextensions/alb-default-process.config

El siguiente archivo de configuración modifica los ajustes de comprobación de estado y persistencia del proceso predeterminado.

option_settings: aws:elasticbeanstalk:environment:process:default: DeregistrationDelay: '20' HealthCheckInterval: '15' HealthCheckPath: / HealthCheckTimeout: '5' HealthyThresholdCount: '3' UnhealthyThresholdCount: '5' Port: '80' Protocol: HTTP StickinessEnabled: 'true' StickinessLBCookieDuration: '43200'

ejemplo .ebextensions/alb-secure-listener.config

El siguiente archivo de configuración agrega un agente de escucha seguro y un proceso coincidente al puerto 443.

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7 aws:elasticbeanstalk:environment:process:https: Port: '443' Protocol: HTTPS

ejemplo .ebextensions/alb-admin-rule.config

El siguiente archivo de configuración agrega un agente de escucha seguro con una regla que direcciona el tráfico con la ruta de solicitud /admin a un proceso llamado admin que utiliza el puerto 4443.

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS Rules: admin SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7 aws:elasticbeanstalk:environment:process:https: 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