Cómo configurar el enrutamiento basado en la ruta en un balanceador de carga de aplicaciones de AWS
En AWS, ELB y Elastic Load Balancing existe un concepto donde los servidores pueden ser añadidos o liberados 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 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 los 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. Gateway Load Balancer: 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 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. Classic Load Balancer: 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 un Application Load Balancer 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 con cada una de ellas conteniendo al menos una instancia EC2.
2. Una VPC que tenga como mínimo 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. 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 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 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 enrutar 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 el valor por defecto seleccionado.(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 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’
Paso 2. La instancia seleccionada arriba aparecerá en «Revisar objetivos». Ahora haga clic en «Crear grupo de objetivos».
Paso 3. En la siguiente ventana vuelva a hacer clic en «Continuar». Ahora repita el mismo procedimiento para otro grupo objetivo 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 balanceador 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 ‘Mi_Ruta_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 Mapeo de red, seleccione la VPC de destino y en la sección 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:
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»:
Paso 7. Ahora vuelva a ir a la página «Balanceadores de carga» y busque su balanceador de carga de destino aquí:
Publicidad
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. Haga clic en el nombre del Load Balancer y luego vaya a la pestaña Listeners.
Paso 2. Haga clic en «Ver/Editar reglas» en la columna «Reglas» y luego haga clic en el símbolo «+» seguido de «Insertar regla»:
Paso 3. Bajo la columna ‘IF(all match)’, haga clic en la flecha desplegable ‘+ Add condition’ y seleccione ‘Path’ como tipo de regla y ponga ‘/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 ‘Sign-In’.
Repita los pasos 2 y 3 anteriores para el grupo de destino ‘SignUp’ con la ruta como ‘/signup*’. Después de guardar las reglas, tendremos dos reglas:
Verificación de la configuración…
Para comprobar que todo funciona como se espera, abra un navegador web y pegue los DNS del equilibrador de carga y adjúntelos:
1) Ruta del grupo de destino ‘Sign-Up’: ‘/signup’
2) Ruta del grupo de destino ‘Sign-In’: ‘/signin’
Conclusión
Enhorabuena, finalmente hemos configurado un escenario de trabajo para el enrutamiento basado en la ruta en el equilibrador de carga de aplicaciones de AWS.