Skip to content

🔥 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 run solo 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