Lab 7 Creación de um ALB y balanceo de carga
Clase 29 de 75 • Curso de AWS Certified Solutions Architect Associate
Resumen
La alta disponibilidad en AWS es fundamental para garantizar que tus aplicaciones críticas sigan funcionando incluso cuando ocurren fallos inesperados. Cuando una instancia falla debido a picos de tráfico, como en el caso presentado, es necesario implementar soluciones robustas que distribuyan la carga y eliminen puntos únicos de fallo. En este artículo, exploraremos cómo configurar un entorno altamente disponible utilizando zonas de disponibilidad y balanceadores de carga en AWS.
¿Cómo crear un entorno altamente disponible en AWS?
Cuando enfrentamos problemas de disponibilidad en nuestras aplicaciones, como el descrito donde los clientes no pudieron completar solicitudes debido a un pico de tráfico, necesitamos implementar una arquitectura que distribuya la carga y proporcione redundancia. La solución implica utilizar múltiples zonas de disponibilidad y configurar un balanceador de carga para distribuir el tráfico entre las instancias.
Para crear un entorno altamente disponible en AWS, debemos:
- Desplegar instancias en diferentes zonas de disponibilidad
- Configurar un balanceador de carga para distribuir el tráfico
- Establecer reglas de seguridad adecuadas
- Implementar verificaciones de salud para garantizar que el tráfico se dirija solo a instancias funcionales
El uso de múltiples zonas de disponibilidad es crucial ya que proporciona redundancia física, protegiendo tu aplicación contra fallos en un centro de datos específico.
¿Qué tipos de balanceadores de carga ofrece AWS?
AWS ofrece varios tipos de balanceadores de carga, cada uno diseñado para casos de uso específicos:
- Application Load Balancer (ALB): Funciona en la capa de aplicación (capa 7) y es ideal para aplicaciones web y microservicios.
- Network Load Balancer (NLB): Opera en la capa de transporte (capa 4) y es adecuado para tráfico TCP/UDP de alto rendimiento.
- Gateway Load Balancer: Diseñado para implementar y administrar dispositivos virtuales de red como firewalls y sistemas de detección de intrusiones.
- Classic Load Balancer: Utilizado principalmente para redes EC2 antiguas (no recomendado para nuevas implementaciones).
Para nuestro caso de uso, utilizaremos el Application Load Balancer (ALB) ya que es el más adecuado para aplicaciones web.
¿Cómo configurar un entorno de alta disponibilidad con balanceador de carga?
Para implementar nuestra solución, seguiremos estos pasos detallados:
Verificación de la instancia existente
Primero, debemos revisar la configuración de nuestra instancia actual:
- Accede a la consola de AWS y navega al servicio EC2
- Selecciona la instancia existente para revisar sus detalles
- Verifica la zona de disponibilidad (en nuestro ejemplo, US East 2A)
- Revisa la configuración de red y los grupos de seguridad
- Comprueba que la aplicación esté funcionando correctamente accediendo a la IP pública
Creación de una segunda instancia en otra zona de disponibilidad
Para lograr alta disponibilidad, necesitamos crear una segunda instancia en una zona de disponibilidad diferente:
- Lanza una nueva instancia EC2 con la misma configuración que la primera
- Asegúrate de seleccionar una zona de disponibilidad diferente (en nuestro ejemplo, US East 2B)
- Configura el mismo grupo de seguridad o crea uno con reglas idénticas
- Despliega la misma aplicación en esta instancia
- Verifica que la aplicación funcione correctamente en la segunda instancia
Es fundamental que ambas instancias estén en zonas de disponibilidad diferentes para garantizar la redundancia geográfica.
Configuración del Application Load Balancer
Una vez que tenemos ambas instancias funcionando, configuramos el balanceador de carga:
1. En la consola de EC2, navega a "Load Balancers" en el menú lateral
2. Selecciona "Create Load Balancer" y elige "Application Load Balancer"
3. Configura las zonas de disponibilidad (selecciona ambas zonas donde están tus instancias)
4. Configura los listeners (HTTP/HTTPS)
5. Crea un nuevo Target Group
6. Registra ambas instancias en el Target Group
7. Completa la configuración y crea el balanceador
El balanceador de carga proporcionará un nombre DNS que utilizaremos para acceder a nuestra aplicación. Este nombre DNS distribuirá automáticamente el tráfico entre nuestras instancias.
Verificación del balanceo de carga
Para comprobar que el balanceador está funcionando correctamente:
- Copia el nombre DNS del balanceador
- Pégalo en tu navegador y accede a la aplicación
- Recarga la página varias veces (F5)
- Observa cómo el tráfico se distribuye entre ambas instancias (notarás cambios en la información mostrada, como la IP)
El balanceador distribuirá automáticamente las solicitudes entre las instancias en diferentes zonas de disponibilidad, proporcionando alta disponibilidad.
¿Cómo mejorar la seguridad de nuestra arquitectura?
Para mejorar la seguridad, podemos configurar los grupos de seguridad para que el tráfico solo pueda acceder a nuestras instancias a través del balanceador de carga:
- Selecciona el grupo de seguridad de tus instancias
- Edita las reglas de entrada (Inbound Rules)
- Elimina las reglas HTTP/HTTPS que permiten tráfico desde cualquier origen (0.0.0.0/0)
- Agrega nuevas reglas HTTP/HTTPS que solo permitan tráfico desde el grupo de seguridad del balanceador de carga
- Guarda los cambios
Después de esta configuración, ya no será posible acceder directamente a las instancias utilizando sus IPs públicas. Todo el tráfico deberá pasar por el balanceador de carga, lo que mejora significativamente la seguridad.
Verificación de la configuración de seguridad
Para verificar que la configuración de seguridad funciona correctamente:
- Intenta acceder directamente a las IPs públicas de las instancias (deberías recibir un error de tiempo de espera)
- Accede a través del nombre DNS del balanceador de carga (deberías poder acceder a la aplicación)
- Recarga la página varias veces para confirmar que el balanceo sigue funcionando
Esta configuración garantiza que todo el tráfico pase por el balanceador de carga, lo que no solo mejora la seguridad sino que también permite implementar características adicionales como terminación SSL, reglas de enrutamiento avanzadas y más.
La implementación de un entorno altamente disponible en AWS utilizando múltiples zonas de disponibilidad y un balanceador de carga es una práctica fundamental para aplicaciones críticas. Esta arquitectura no solo proporciona redundancia y alta disponibilidad, sino que también mejora la seguridad y sienta las bases para futuras integraciones con servicios como grupos de autoescalamiento. ¿Has implementado arquitecturas similares en tus proyectos? ¿Qué desafíos has enfrentado? Comparte tu experiencia en los comentarios.