Importante
Este artículo está obsoleto y puede contener información desactualizada. Por favor, consulta la documentación más reciente para obtener la información actualizada.
Docker Swarm es una herramienta de agrupación y programación de contenedores Docker, lo que viene siendo un cluster. Con Swarm podemos establecer y gestionar un grupo de nodos Docker como un único sistema virtual. En este artículo vamos a crear un servicio Nginx replicado en 3 nodos. La ventaja es que podemos desplegar réplicas muy fácilmente, con lo cual podemos escalar nuestra infraestructura en cuanto lo necesitemos.
Para este artículo necesitaremos 3 servidores con Ubuntu 18.04, uno será el “Manager” desde el que controlaremos replicas (el Manager a su vez hará de nodo) y los otros 2 servidores serán “Workers” (Nodos), podremos desplegar tantos como necesitemos. La idea es montar la siguiente infraestructura:
Instalación y configuración de los servidores
Lo primero que haremos es actualizar el servidor e instalar Docker en los 3 servidores.
# apt update
# apt upgrade
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# apt update
# apt-get install -y docker-ce
# systemctl start docker
# systemctl enable docker
Configuraremos los hosts (vi /etc/hosts) en los 3 servidores con:
46.183.119.183 manager01
185.166.212.200 worker01
185.166.212.203 worker02
Configuración para Manager
Esto paso solo lo ejecutaremos en el servidor “manager01”:
# docker swarm init --advertise-addr 46.183.119.183
Nos devolverá un comando que es el que ejecutaremos en el siguiente paso.
Configuración para Workers
Esto paso solo lo ejecutaremos en los servidores “worker01” y “worker02”, sirve para añadir los servidores a Swarm:
# docker swarm join --token SWMTKN-1-3dkep05rmz11kjqa3g4u9bil8s4kf69wrba8smtvmqnl74pajj-0ln4m6n43vgkx7flgxh7x9z4z 46.183.119.183:2377
Swarm Visualizer
Este paso es opcional, nos permitirá ver desde una interfaz web nuestros nodos, contenedores, servicios, … Lo ejecutaremos en “manager01”:
# apt install unzip
# wget https://github.com/dockersamples/docker-swarm-visualizer/archive/master.zip
# unzip master.zip
# mv docker-swarm-visualizer-master dockersamples
# docker run -it -d -p 5000:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer
Creamos servicio Nginx con 3 réplicas
Ahora que ya tenemos todo listo, vamos a crear nuestro servicio de Nginx con 3 réplicas:
# docker service create --name mi-web --publish 8080:80 nginx
# docker service scale mi-web=3
Si entramos desde un navegador a la IP pública del manager01 por el puerto 5000 veremos Swarm Visualizer, en nuestro caso http://46.183.119.183:5000/
Ya hemos llegado al final del artículo, la ventaja de usar Swarm es que podemos tener una infraestructura escalable, podemos crear más replicas dentro de un mismo nodo o añadir nodos en cualquier momento. En nuestro ejemplo podrían ser varios contenedores con el servicio Nginx que podríamos balancear siguiendo este artículo.
¿Lo has probado? ¡Déjanos tus comentarios! 🙂