Configuración de un Balanceador de carga de aplicaciones - AWS Elastic Beanstalk

Configuración de un Balanceador de carga de aplicaciones

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 del usuario de Elastic Load Balancing. Elastic Beanstalk puede crear el balanceador de carga automáticamente 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 crea Elastic Beanstalk y se dedica a su entorno. Véase también Configurar 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 Classic Load Balancer. 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 logs de acceso del balanceador de carga en un bucket de Amazon Simple Storage Service (Amazon S3).

nota

A diferencia de un Classic Load Balancer o un Balanceador de carga de red, un Balanceador de carga de aplicaciones no puede tener agentes de escucha de TCP o SSL/TLS en la 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 Balanceador de carga de aplicaciones para dirigir el tráfico de ciertas rutas a un proceso distinto de las instancias del servidor web. Con Classic Load Balancer, todo el tráfico que llega a un agente de escucha se enruta a un solo proceso en las instancias de backend. Con 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 de Balanceador de carga de aplicaciones mapea una solicitud a un grupo de destino. En Elastic Beanstalk, un grupo de destino se representa con 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 de destino 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 Classic Load Balancer utiliza una sola 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 que monitorea el balanceador de carga y la monitorización de 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 Application Load Balancers, consulte ¿Qué es un balanceador de carga de aplicación?

nota

La comprobación de estado de Balanceador de carga de aplicaciones no usa 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 con 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 también posteriormente, con el entorno ya en ejecución.

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 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 opciones Balanceador de carga de aplicaciones y Dedicated (Dedicado), si no se han seleccionado todavía.

    
            Página de configuración de Elastic Load Balancing: elección del tipo de balanceador de carga
  8. Haga todos los cambios de configuración de 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 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. Haga los cambios de configuración de Balanceador de carga de aplicaciones que requiera su entorno.

  6. Seleccione Aplicar.

Opciones de Balanceador 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 de 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 de agente de escucha de 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 la importación de 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 carga de certificados en IAM, consulte Uso de certificados de servidor en la Guía del 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 de 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).

Opciones del cuadro de diálogo del proceso del entorno de 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.


            Opciones de proceso de Balanceador de carga de aplicaciones: nombre, puerto y 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 a la 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 de incorrecto), Healthy threshold (Umbral de 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.


            Opciones de proceso de Balanceador de carga de aplicaciones 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. Amazon EC2 Auto Scaling no reemplaza automáticamente las instancias que no superan una comprobación de estado de Elastic Load Balancing a menos que configure manualmente Amazon EC2 Auto Scaling para que lo haga. Consulte Configuración de comprobaciones de estado de Auto Scaling para obtener más información.

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.


            Opciones de proceso de Balanceador de carga de aplicaciones para persistencia de sesión

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

  • Proceso (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 de Balanceador de carga de aplicaciones: lista de reglas

Captura de registro de acceso

Utilice estos valores para configurar Elastic Load Balancing para que capture 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 se habilita Store logs (Guardar registros), Elastic Load Balancing almacena los registros en el bucket de S3 que configure. La configuración Prefix (Prefijo) especifica una carpeta de nivel superior en el bucket para los registros. Elastic Load Balancing guarda los registros en una carpeta llamada AWSLogs con su prefijo. Si no especifica un prefijo, Elastic Load Balancing coloca su carpeta en el nivel raíz del bucket.

Para obtener más información acerca de los registros de acceso, consulte Registros de acceso para el balanceador de carga de aplicaciones.


          Configuración de 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 quitar 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 de Balanceador de carga de aplicaciones: adición de un agente de escucha seguro

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

    
            Ejemplo de configuración de Balanceador de carga de aplicaciones: lista de agentes de escucha con dos agentes
  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 de Balanceador de carga de aplicaciones: desactivación de escucha predeterminada
  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 de Balanceador de carga de aplicaciones: configuración del proceso predeterminado con 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 de Balanceador de carga de aplicaciones: adición de un proceso administrativo
  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 de Balanceador de carga de aplicaciones: adición de una regla administrativa

Configuración de un Balanceador de carga de aplicaciones con 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 Balanceador de carga de aplicaciones

Puede encontrar la configuración relacionada con Application Load Balancers en los siguientes espacios de nombres:

  • aws:elasticbeanstalk:environment: elija el tipo balanceador de carga para el entorno. El valor predeterminado 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 otros ajustes que se apliquen al Balanceador de carga de aplicaciones en su conjunto.

  • aws:elbv2:listener: configure los agentes de escucha del Balanceador de carga de aplicaciones. Estos valores se mapean con los de aws:elb:listener en Classic Load Balancers.

  • 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 Application Load Balancers.

  • 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 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: my-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