🔥 Challenge: Acceso y Mapeo de Puertos en Docker Containers
Objetivo
En este reto, deberás implementar un balanceador de carga utilizando HAProxy para distribuir tráfico entre dos servidores web: Apache HTTPD y NGINX.
📝 Enunciado
📌 Escenario:
- Tienes dos servicios backend: HTTPD (Apache) y NGINX, ambos sirviendo contenido en el puerto 80.
- Un balanceador de carga HAProxy distribuirá el tráfico entre estos dos servidores.
- El usuario final accederá al servicio a través de HAProxy en el puerto 8080 del host.
📌 Objetivos:
- Ejecutar los contenedores de HTTPD y NGINX, mapeando los puertos correctamente.
- Configurar HAProxy para que distribuya el tráfico entre ambos servidores backend.
- Probar la configuración accediendo desde el navegador o con curl.
📌 Restricciones:
- No puedes usar Docker Compose.
- Debes usar opciones de mapeo de puertos en
docker runsolo para el contenedor de balanceador de carga HAProxy - HAProxy debe estar configurado correctamente para hacer balanceo de carga.
📌 Puntos Extra:
- Implementar la estrategia de balanceo de carga round-robin para distribuir tráfico equitativamente entre HTTPD y NGINX.
🛠️ Recursos:
- Debes crear una red bridge para permitir la comunicación entre los contenedores:
docker network create lb-network - Los contenedores deben usar esta red, con la siguiente opción:
--network lb-network - El contenedor de balanceador de carga HAProxy, usa el siguiente archivo de configuración:
/usr/local/etc/haproxy/haproxy.cfg - Puedes usar el siguiente ejemplo de
haproxy.cfg:global log stdout format raw local0 defaults log global timeout connect 5s timeout client 50s timeout server 50s frontend http_front bind *:8080 default_backend web_servers backend web_servers balance roundrobin server httpd httpd-container:80 check server nginx nginx-container:80 check