Cómo configurar el enrutamiento basado en la ruta en un balanceador de carga de aplicaciones de AWS

En AWS, el ELB y el Elastic Load Balancing es un concepto en el que los servidores se pueden añadir o liberar según la demanda de nuestra aplicación y 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 (Gateway) más capa 4 (Load Balancing).

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 un equilibrador de carga de aplicaciones en AWS. Vamos a utilizar una cuenta de usuario IAM para esta tarea. Tenemos los siguientes recursos para esta configuración:

1. Dos Zonas de Disponibilidad, cada una de las cuales contiene al menos una instancia EC2.

2. Una VPC con 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 el servidor web Apache Httpd instalado en ambas. En uno de los servidores tenemos un directorio ‘signin’ que contiene un archivo index.html con el contenido: «¿Bienvenido usuario? Inicie sesión para continuar…»

En otro servidor tenemos un directorio ‘signup’ que contiene un archivo index.html con el siguiente 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»:

No hay grupos 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 seleccionado el valor por defecto.(HTTP1)

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

  1. Protocolo de comprobación de salud: HTTP
  2. Ruta de comprobación de salud: ‘Ruta que quieres usar'(‘/signin’ en nuestro caso)
  3. 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 1. Ahora añade una de las instancias EC2 a los grupos de destino mencionados. Selecciona una instancia y luego haz clic en el botón ‘Incluir como pendiente abajo’

Registro de instancias EC2 en los grupos de destino

Paso 2. La instancia seleccionada arriba aparecerá en «Revisar objetivos». Ahora haz clic en «Crear grupo de destino».

Crear un grupo objetivo
Paso 3. 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:

Equilibrador de carga de aplicaciones’ página
Paso 2. Dale un nombre adecuado (aquí ‘Mi_Ruta_ALB’) a tu balanceador de carga. Mantén el Esquema por defecto (‘orientado a Internet’), Selecciona el tipo de dirección IP como IPv4.

Configuración básica del equilibrador de carga

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.

Mapeo de la red
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 los grupos de seguridad
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 la escucha
Paso 6. Puedes omitir los pasos opcionales. Ahora revisa el resumen y pulsa el botón «Crear equilibrador de carga»:

Revisa el resumen del equilibrador de carga
Paso 7. Ahora ve de nuevo a la página «Balanceadores de carga» y encuentra aquí tu balanceador de carga de destino:

Balanceadores de carga’ página

Añadir reglas de reenvío basadas en la ruta

Paso 1. 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 Escuchadores.

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

Reglas basadas en la trayectoria

Añadir reglas de reenvío basadas en la ruta

Paso 3. Bajo la columna ‘IF(all match)’, haz clic en la flecha desplegable ‘+ Add condition’ y selecciona ‘Path’ como tipo de Regla y pon ‘/signin*’ en el campo de texto correspondiente a la etiqueta ‘is’.

Paso 4. 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 ‘Registro’.

Repite los pasos 2 y 3 anteriores para el grupo de destino ‘Inscripción’ con la ruta ‘/inscripción*’. Después de guardar las reglas, tendremos dos reglas:

Resumen de reglas basadas en la ruta

Verificar la configuración…

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

1) Ruta del grupo de destino ‘Inscripción’: ‘/inscripción’

Probando la configuración 1

2) Ruta del grupo de destino «Inscripción»: » /inscripción«.

Probando la configuración 2

Conclusión

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

También te podría gustar...