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 añadirse o liberarse 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

  1. 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.
  2. 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.
  3. Equilibrador de carga de puerta de enlace: Se utiliza 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 ampliarse o reducirse según la demanda. Esto es bueno para la estabilidad de la red. Es un equilibrador de carga de capa 3 (puerta de enlace) más capa 4 (equilibrio de carga).
  4. Equilibrador de carga clásico: El CLB es un equilibrador de carga heredado de AWS que se utiliza para equilibrar la carga en varias instancias de EC2. Se recomienda para aplicaciones diseñadas dentro de la red EC2-Classic. Es un equilibrador de carga de capa 4/7. AWS recomienda evitar este equilibrador de carga.

Resumen de esta guía

En este tutorial, vamos a configurar el enrutamiento basado en la ruta para el Balanceador de Carga de Aplicaciones en AWS. Vamos a utilizar una cuenta de usuario IAM con privilegios limitados necesarios para esta tarea. Disponemos de los siguientes recursos para este experimento

  1. Dos Zonas de Disponibilidad, cada una de las cuales contiene al menos una instancia EC2.
  2. 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.
  3. Instala un servidor web en cada instancia y permite el acceso al puerto 80 en estas instancias utilizando el grupo de seguridad.

Configuración de las 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ístrate primero…»

Tanto el directorio ‘signin’ como el ‘signup’ están dentro del directorio raíz (/var/www/html).

Configurar el grupo de destino

Paso 1. Para enrutar la petición crearemos primero dos grupos de destino, uno para cada servidor. Abre la consola de EC2 y, en el panel lateral izquierdo, busca y selecciona «Grupos de destino» (está en Equilibrio de carga):

Paso 2. En la nueva página, haz clic en el botón «Crear grupo de destino»:

Crear un grupo objetivo
Paso 3. Ahora estamos en la página «Especificar detalles del grupo». En la configuración básica, haz lo siguiente:

  1. Elige un tipo de destino: Selecciona aquí «Instancias».
  2. Nombre del grupo de destino: Dale un nombre adecuado al grupo de destino («Registro» en nuestro caso).
  3. Protocolo: HTTP
  4. Puerto: 80
  5. VPC: Selecciona aquí el nombre de tu VPC.
  6. Versión del protocolo: Mantén la seleccionada por defecto (HTTP1)

En la configuración de «Comprobaciones de salud»:

Protocolo de comprobación de salud: HTTP

Ruta de comprobación de salud: ‘Ruta que quieres usar'(‘/signin’ en nuestro caso)

Mantén la ‘Configuración avanzada de la comprobación de salud’ por defecto. Añade etiquetas si las necesitas (opcional). Haz 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’

Registro de instancias EC2 en los grupos de destino
La instancia seleccionada arriba aparecerá en «Revisar objetivos». Ahora haz clic en ‘Crear grupo de destino’.

Revisa los objetivos
En la siguiente ventana vuelve a hacer clic en «Continuar». Ahora repite el mismo procedimiento para otro grupo de destino y nómbralo como ‘Inscripción’. Utiliza otra instancia (en otra zona de disponibilidad) con este grupo objetivo y utiliza una ruta de comprobación de salud diferente (en nuestro caso, «/signup»):

Grupos objetivo

Creación del Equilibrador de Carga de Aplicaciones

Paso 1. Desde la consola de EC2, dirígete a Equilibradores de Carga y haz clic en el botón Crear Equilibrador de Carga y, a continuación, selecciona «Equilibrador de Carga de Aplicaciones» que aparece en la nueva página:

Creación del equilibrador de carga de aplicaciones
Paso 2. Dale un nombre adecuado (aquí ‘Mi-Path-ALB’) a tu balanceador de carga. Mantén el Esquema por defecto (‘orientado a Internet’), Selecciona el tipo de dirección IP como IPv4

Configurar el equilibrador de carga - 1

Paso 3. En la sección Mapeo de red, selecciona la VPC de destino y en la sección Mapeos, selecciona las dos zonas de disponibilidad que contienen tus objetivos a los que el equilibrador de carga dirigirá el tráfico.

Configurar el equilibrador de carga - 2
Paso 4. Configura los Grupos de Seguridad para el equilibrador de carga y permite que tu puerto de destino (el puerto 80 en nuestro caso) escuche:

Configurar el equilibrador de carga - 3
Paso 5. Selecciona un oyente (HTTP en nuestro caso) e introduce un puerto de escucha o elige mantener el puerto 80 por defecto para las peticiones HTTP. En la acción por defecto, selecciona el objetivo «Inicio de sesión» en la columna «Reenviar a»:

Configurar los oyentes del equilibrador de carga

Paso 6. Puedes omitir los pasos opcionales. Ahora revisa el resumen y pulsa el botón «Crear equilibrador de carga»:

Creación del equilibrador de carga

Añadir reglas de reenvío basadas en el host

Paso 1. Vuelve a ir a la página «Equilibradores de carga» y busca aquí tu equilibrador de carga de destino:

localiza los ‘Balanceadores de Carga’;

Paso 2. Una vez que el estado del ALB cambie a Activo, procederemos con las Reglas de Reenvío. Haz clic en el nombre del equilibrador de carga y luego ve a la pestaña de oyentes

Paso 3. Haz clic en «Ver/Editar reglas» en la columna «Reglas» y luego haz clic en el símbolo «+» seguido de «Insertar regla»:

Configuración de los oyentes

Insertar las reglas

Paso 4. Bajo la columna ‘IF(all match)’, haz clic en la flecha desplegable ‘+ Add condition’ y selecciona ‘Host’ como tipo de Regla y pon tu 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. En este caso, selecciona el grupo de destino ‘Registro’.
6. Repite los pasos 2 y 3 anteriores para el grupo de destino ‘Entrar’ con el nombre de host o dominio (‘www.signup.tecofers.com’ en nuestro caso). Después de guardar las reglas, tendremos dos reglas:

Lista de normas

La última regla es para la acción por defecto si no se cumplen las dos condiciones anteriores.

Registrar el dominio en Route 53

Para registrar los host/dominios para el enrutamiento basado en host a través de Internet, tenemos que añadir el nombre DNS de sus correspondientes instancias EC2 con su nombre de host/dominio dentro de Route 53.

Paso 1. Abre el panel de Route 53 desde la consola de gestión y haz clic en «Crear zona alojada»:

Cuadro de mandos de la Ruta 53
Paso 2. En la página de configuración de la zona alojada, introduce el nombre del dominio y selecciona el tipo como «Zona alojada pública» y selecciona «Crear zona alojada»:

Creación de la zona alojada 1
Paso 3. En la nueva página haz clic en «Crear registro»:

Crear un registro para la zona alojada
Paso 4. En la nueva página, haz clic en la etiqueta «Cambiar al asistente» y selecciona la opción «Enrutamiento simple».

Selecciona la política de enrutamiento
Paso 5. Aquí haz clic en «Definir registro simple».

Definir el registro simple
Paso 6. Introduce varios datos para este registro:

Dominio: subdominio correspondiente a tu zona alojada.

Tipo de registro: Selecciona aquí el tipo A.

Valor/encaminar el tráfico a:

  1. Selecciona «Alias al equilibrador de carga de aplicaciones y clásico».
  2. Selecciona la región donde está el equilibrador de carga
  3. Selecciona el equilibrador de carga de destino.

Introduce los datos del registro simple

Por último, pulsa ‘Definir registro simple’.

El registro anterior aparecerá ahora como se muestra aquí:

Primer registro
Repite los pasos anteriores para el otro host.

Verificar la configuración…

Para comprobar si todo funciona como se espera, abre un navegador web y pega los DNS del equilibrador de carga y añádelos:

1) Nombre del host para el objetivo «Registro».

navegando por el primer registro

2) Nombre del host para el objetivo «Registro».

navegando por el segundo registro

Conclusión

Enhorabuena, por fin hemos configurado un escenario de trabajo para el enrutamiento basado en host en el equilibrador de carga de aplicaciones de AWS.

También te podría gustar...