| docker-compose.yml | ||
| README.md | ||
Simulacion de Escalado Horizontal
Sigue estas instrucciones para poner en practica como funciona un escenario de Escalado Horizontal usando Docker Swarm.
1. Crear las máquinas virtuales del clúster
Estamos usando Docker-in-Docker para simular 3 servidores independientes.
Abre tu terminal (PowerShell o Bash) en la misma carpeta en la que esta el docker-compose.yml y ejecuta:
docker compose up -d
2. Inicializar el nodo Manager
Ahora vamos a entrar virtualmente al nodo manager para activar Docker Swarm y decirle que él será el líder. Ejecuta en tu terminal:
docker exec -it manager docker swarm init --advertise-addr 10.0.0.10
La terminal te devolverá un comando largo que empieza con docker swarm join --token.... Ese es el "pase" para que otras máquinas se unan al clúster. Cópialo.
3. Unir los Workers al clúster
Toma el comando que copiaste en el paso anterior y ejecútalo dentro de worker1 y worker2. Se verá muy parecido a esto (asegúrate de usar tu propio token):
docker exec -it worker1 docker swarm join --token SWMTKN-1-[TU_TOKEN_AQUI] 10.0.0.10:2377
docker exec -it worker2 docker swarm join --token SWMTKN-1-[TU_TOKEN_AQUI] 10.0.0.10:2377
Para confirmar que los 3 nodos están conectados, pídele al manager que liste el estado del clúster:
docker exec -it manager docker node ls
4. Desplegar el servicio inicial (2 réplicas)
Estado base: baja carga.
Vamos a crear un servidor web ligero (Nginx) y pedirle a Swarm que mantenga exactamente 2 instancias funcionando.
docker exec -it manager docker service create --name mi_web --replicas 2 -p 8080:80 nginx:alpine
Verifica en qué máquinas se han distribuido estos dos contenedores:
docker exec -it manager docker service ps mi_web
Verás en la columna NODE que Swarm ha colocado cada réplica en un servidor distinto (por ejemplo, una en manager y otra en worker1).
5. Escalar horizontalmente (5 réplicas)
Simulando un pico de tráfico (Scale Out).
Imagina que comienza una campaña publicitaria y necesitas más potencia inmediata. Sube el servicio a 5 instancias con un solo comando:
docker exec -it manager docker service scale mi_web=5
Vuelve a revisar la distribución de la carga:
docker exec -it manager docker service ps mi_web
Observarás que Swarm ha encendido 3 contenedores nuevos y los ha repartido equitativamente (probablemente verás 2 en manager, 2 en worker1 y 1 en worker2, o una combinación similar).
6. Reducir instancias (2 réplicas)
Simulando el fin del pico (Scale In).
El pico de tráfico terminó y queremos ahorrar recursos. Volvemos al estado inicial:
docker exec -it manager docker service scale mi_web=2
Si consultas de nuevo el estado (docker exec -it manager docker service ps mi_web), verás que Swarm ha apagado 3 contenedores, dejando solo 2 activos y listando los demás como Shutdown.
Limpieza de entorno
Para no dejar procesos consumiendo memoria en tu equipo, elimina el servicio y apaga los nodos simulados:
docker exec -it manager docker service rm mi_web
docker compose down