Cómo configurar el enrutamiento basado en el host en el equilibrador de carga de aplicaciones de AWS
En AWS, el ELB o Elastic Load Balancing es un concepto en el que los servidores pueden ser añadidos o liberados según la demanda de nuestra aplicación. El tráfico entrante de una aplicación se distribuye entre múltiples objetivos. Estos objetivos pueden ser instancias EC2, contenedores y direcciones IP en una o varias Zonas de Disponibilidad. Los tipos de balanceadores de carga elásticos de AWS compatibles son los balanceadores de carga de aplicaciones (ALB), los balanceadores de carga de red (NLB), los balanceadores de carga de puerta de enlace (lanzados recientemente) y los balanceadores de carga clásicos. Estos balanceadores de carga tienen diferentes configuraciones, por ejemplo:
- Equilibrador de carga de aplicaciones: Funciona distribuyendo automáticamente el tráfico entrante de la aplicación entre dos o más instancias de EC2. Podemos definir reglas de enrutamiento según el contenido de la solicitud (enrutamiento basado en el contenido). Es un equilibrador de carga de capa 7.
- Equilibradores de carga de red: NLB utiliza datos del protocolo IP (TCP y UDP) para enrutar las conexiones a los recursos de AWS como EC2, microservicios y contenedores. Es un equilibrador de carga de capa 4.
- Equilibrador de carga de puerta de enlace: Se utilizan con dispositivos virtuales de terceros como cortafuegos NextGen (NGFW), IPS, IDS, etc. que se ejecutan en instancias EC2. Funciona colocando una única puerta de enlace para el tráfico de múltiples dispositivos virtuales y estos múltiples dispositivos virtuales pueden ser escalados hacia arriba o hacia abajo según la demanda. Esto es bueno para la estabilidad de la red. Es un equilibrador de carga de capa 3 (Gateway) más capa 4 (Load Balancing).
- Equilibrador de carga clásico: CLB es un balanceador de carga heredado de AWS que se utiliza para el balanceo de carga a través de múltiples instancias EC2. Se recomienda para aplicaciones diseñadas dentro de la red EC2-Classic. Es un balanceador de carga de capa 4/7. AWS recomienda evitar este balanceador de carga.
Resumen de esta guía
En este tutorial, configuraremos el enrutamiento basado en la ruta para el Application Load Balancer en AWS. Vamos a utilizar una cuenta de usuario IAM con privilegios limitados necesarios para esta tarea. Tenemos los siguientes recursos para este experimento:
- Dos Zonas de Disponibilidad con cada una de ellas conteniendo al menos una instancia EC2.
- Una VPC tiene un mínimo de una subred pública en cada una de las dos Zonas de Disponibilidad anteriores. Esta subred pública se utilizará para configurar el equilibrador de carga.
- Instale un servidor web en cada instancia y permita el acceso al puerto 80 en estas instancias utilizando el grupo de seguridad.
Configuración de instancias EC2
Para esta guía, hemos configurado dos instancias EC2 de Amazon Linux con apache Httpd instalado en ambas. En uno de los servidores tenemos un directorio ‘signin’ y un archivo index.html dentro de él con el contenido: «¿Bienvenido usuario? Inicie sesión para continuar…»
En otro servidor tenemos un directorio ‘signup’ y un archivo index.html dentro de él con el contenido: «¿Nuevo usuario? Regístrese primero…»
Los directorios ‘signin’ y ‘signup’ están dentro del directorio raíz (/var/www/html).
Configurar el grupo de destino
Paso 1. Para el enrutamiento de la solicitud, primero crearemos dos grupos de destino, uno para cada servidor. Abre la consola de EC2 y en el panel de la izquierda, busca y selecciona ‘Target Groups’ (Está bajo Load balancing):
Paso 2. En la nueva página, haga clic en el botón «Crear grupo de destino»:
Paso 3. Ahora estamos en la página «Especificar detalles del grupo». En la configuración básica, haz lo siguiente:
- Elija un tipo de destino: Seleccione aquí «Instancias».
- Nombre del grupo de destino: Dé un nombre adecuado al grupo de destino(‘Sign-In’ en nuestro caso.)
- Protocolo: HTTP
- Puerto: 80
- VPC: Seleccione aquí el nombre de su VPC.
- Versión del protocolo: Mantenga la seleccionada por defecto.(HTTP1)
En la configuración de «Comprobaciones de salud»:
Protocolo de comprobación de salud: HTTP
Ruta de verificación de salud: ‘Ruta que desea utilizar'(‘/signin’ en nuestro caso)
Mantenga la ‘Configuración avanzada del chequeo’ por defecto. Añada etiquetas si las necesita (opcional). Haga clic en «Siguiente» para continuar.
Registro de instancias EC2 en los grupos de destino
Paso 3. Ahora añade una de las instancias EC2 a los grupos de destino anteriores. Selecciona una instancia y luego haz clic en el botón ‘Incluir como pendiente abajo’
La instancia seleccionada arriba aparecerá en «Revisar objetivos». Ahora haga clic en «Crear grupo de destino».
En la siguiente ventana vuelva a hacer clic en «continuar». Ahora repita el mismo procedimiento para otro grupo de destino y nómbrelo como ‘Sign-Up’. Utilice otra instancia (en otra zona de disponibilidad) con este grupo de destino y utilice una ruta de verificación de salud diferente (en nuestro caso, «/signup»):
Creación del equilibrador de carga de aplicaciones
Paso 1. Desde la consola de EC2, dirígete a Load Balancers y haz clic en el botón Create Load Balancer y luego selecciona ‘Application Load Balancer’ que se muestra en la nueva página:
Paso 2. Asigne un nombre adecuado (en este caso ‘My-Path-ALB’) a su balanceador de carga. Mantenga el esquema por defecto (‘Internet-facing’), seleccione el tipo de dirección IP como IPv4
Paso 3. En la sección de mapeo de red, seleccione la VPC de destino y en la sección de mapeos, seleccione las dos zonas de disponibilidad que contienen sus objetivos a los que el equilibrador de carga dirigirá el tráfico.
Paso 4. Configure los grupos de seguridad para el equilibrador de carga y permita que su puerto de destino (el puerto 80 en nuestro caso) escuche en:
Paso 5. Seleccione un oyente (HTTP en nuestro caso) e introduzca un puerto de escucha o elija mantener el puerto 80 por defecto para las peticiones HTTP. En la acción por defecto, seleccione el objetivo ‘Sign-in’ para la columna ‘forward to’:
Paso 6. Los pasos opcionales se pueden omitir. Ahora revise el resumen y pulse el botón «Crear equilibrador de carga»:
Añadir reglas de reenvío basadas en el host
Paso 1. Ahora, de nuevo, vaya a la página ‘Load Balancers’ y busque su equilibrador de carga de destino aquí:
Paso 2. Una vez que el estado del ALB cambie a Activo, procederemos con las Reglas de Reenvío. Haga clic en el nombre del Load Balancer y luego vaya a la pestaña Listeners
Paso 3. Haga clic en «Ver/Editar reglas» en la columna «Reglas» y luego haga clic en el símbolo «+» seguido de «Insertar regla»:
Paso 4. En la columna ‘IF(all match)’, haga clic en la flecha desplegable ‘+ Add condition’ y seleccione ‘Host’ como tipo de regla y ponga su nombre de host o dominio (‘www.signin.tecofers.com’ en nuestro caso) en el campo de texto correspondiente a la etiqueta ‘is’.
Paso 5. En la columna «Entonces», haz clic en la flecha desplegable «+Añadir acción» y selecciona «Reenviar a» como acción. Aquí selecciona el grupo de destino ‘Sign-In’.
Repita los pasos 2 y 3 anteriores para el grupo de destino ‘SignUp’ con el nombre de host o dominio (‘www.signup.tecofers.com’ en nuestro caso). Después de guardar las reglas, tendremos dos reglas:
Anuncio
La última regla es para la acción por defecto si no se cumplen las dos condiciones anteriores.
Registro del dominio en Route 53 para el balanceo de carga y enrutamiento de tráfico con Route 53
Para registrar los host/dominios para el enrutamiento basado en host a través de Internet, necesitamos añadir el nombre DNS de sus correspondientes instancias EC2 con su nombre de host/dominio dentro de Route 53, lo cual también permite el balanceo de carga y enrutamiento de tráfico con Route 53.
Paso 1. Abra el panel de control de Route 53 desde la consola de gestión y haga clic en «Crear zona alojada»:
Paso 2. En la página de configuración de la zona alojada, introduzca el nombre de dominio y seleccione el tipo como «Zona alojada pública» y seleccione «Crear zona alojada»:
Paso 3. En la nueva página, haga clic en «Crear registro»:
<img style="display: block; margin-left: auto; margin-right: auto;" src="https://linuxpasion.com/wp-content/uploads/2022/