Docker Swarm en Ubuntu 18.04

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 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
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! 🙂

To write a comment on this article, fill out the form below. Fields marked with an asterisk (*) are required.