La presentación está bajo licencia CC BY 4.0 y el resto del proyecto sobre MIT. Para visualizarla:
npm instally
npm run devEste proyecto demuestra cómo implementar un balanceador de carga usando Nginx y Docker. El sistema distribuye las peticiones HTTP entre tres servidores backend utilizando el algoritmo round-robin.
Cliente (Navegador)
↓
Load Balancer (Nginx)
↓
┌────┴────┬────────┐
↓ ↓ ↓
Backend 1 Backend 2 Backend 3
nginx-load-balancer/
├── docker-compose.yml
├── nginx.conf
├── check_balancer.sh
├── pages_backends.sh
├── backend1/
│ └── index.html
├── backend2/
│ └── index.html
└── backend3/
└── index.html
- Docker instalado
- Docker Compose instalado
-
Clonar el repositorio
-
Iniciar los contenedores:
docker-compose up -d- Verificar que los contenedores estén corriendo:
docker-compose ps-
Acceder:
- Abrir el navegador en: http://localhost
-
Ver logs del balanceador:
docker logs -f load_balancerEl repositorio incluye un script de pruebas automáticas. Para ejecutarlo:
./check_balancer.shEste script verifica el funcionamiento del balanceador de carga.
1. Round Robin (por defecto) - Distribuye las peticiones de forma secuencial
upstream backend_servers {
server backend1:80;
server backend2:80;
server backend3:80;
}2. Least Connections - Envía al servidor con menos conexiones activas
upstream backend_servers {
least_conn;
server backend1:80;
server backend2:80;
server backend3:80;
}3. IP Hash - Asigna al cliente siempre al mismo servidor
upstream backend_servers {
ip_hash;
server backend1:80;
server backend2:80;
server backend3:80;
}4. Weighted (Ponderado) - Asigna más carga a servidores específicos
upstream backend_servers {
server backend1:80 weight=3;
server backend2:80 weight=2;
server backend3:80 weight=1;
}Ver estadísticas de contenedores:
docker statsAcceder a logs de un backend específico:
docker logs backend_server_1
docker logs backend_server_2
docker logs backend_server_3Ver configuración activa de Nginx:
docker exec load_balancer nginx -T# Detener contenedores
docker-compose down
# Detener y eliminar volúmenes
docker-compose down -v- Agregar HTTPS con certificados SSL
- Implementar health checks automáticos
- Agregar caché de contenido estático
- Implementar rate limiting
- Agregar autenticación
- Integrar con métricas (Prometheus, Grafana)
- Los backends usan Nginx Alpine por ser ligero (aproximadamente 23MB)
- La red
app-networkmantiene aislados los contenedores - Los archivos HTML se montan como volúmenes read-only para seguridad
- El balanceador expone solo el puerto 80 al exterior
