Cómo instalar y configurar Docker Swarm Cluster en Ubuntu

Docker Swarm es una herramienta que le permite implementar un clúster de Docker Hosts. Es una herramienta de agrupación en clústeres nativa proporcionada por Docker que brinda alta disponibilidad y alto rendimiento para su aplicación al distribuirla a todos los nodos dentro del clúster de enjambre.
En este tutorial, le mostraremos paso a paso cómo instalar Docker Swarm y configurar un Swarm Cluster utilizando Ubuntu 16.04. Crearemos un cluster ubuntu utilizando 2 máquinas de servidor Ubuntu, 1 nodo de servidor como administrador y 1 otro como trabajador. Y luego intentaremos implementar el servicio Nginx simple en el clúster de enjambre.
Requisitos previos
- 2 o más – Servidor Ubuntu 16.04
- gerente 132.92.41.4
- trabajador01 132.92.41.5
- Privilegios de raíz
¿Qué haremos?
- Configurar hosts para swarm linux
- Instalar Docker-ce
- Inicialización de Docker Swarm en Ubuntu
- Implementación del primer servicio en el clúster de enjambre
Paso 1: Configurar hosts
Antes de instalar cualquier paquete para el clúster de enjambre, configuraremos el archivo de hosts en ambos servidores.
Ejecute los siguientes comandos en todos los servidores, ‘manager’ y ‘worker01’.
Edite el archivo ‘/etc/hosts’ usando el editor vim.
vim /etc/hosts
Agregue la siguiente configuración al final de la línea.
132.92.41.4 manager 132.92.41.5 worker01
Guardar y Salir.
Ahora haga ping a todos los nodos usando ‘nombre de host’ en lugar de usar la dirección IP.
ping -c 3 manager ping -c 3 worker01
Y asegúrese de que esté funcionando en todos los hosts.
Paso 2 – Instalar Docker-ce
Para crear el ubuntu docker swarm, debemos instalar Docker en todos los nodos del servidor. En este paso, instalaremos Docker-ce Community Edition tanto en el nodo administrador como en el trabajador01.
Instale las dependencias de Docker-ce usando el comando apt a continuación.
sudo apt install apt-transport-https software-properties-common ca-certificates -y
Ahora agregue la clave Docker y el repositorio Docker-ce a nuestros servidores.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" > /etc/apt/sources.list.d/docker-ce.list
Actualice el repositorio e instale los paquetes Docker-ce usando el comando apt install a continuación.
sudo apt update sudo apt install docker-ce -y
Una vez completada la instalación, inicie el servicio docker y habilítelo para que se inicie cada vez que se inicia el sistema.
systemctl start docker systemctl enable docker
Docker-ce ahora está instalado en nuestros nodos de servidor.
A continuación, configuraremos Docker para que se ejecute como un usuario normal o no root.
Cree un nuevo usuario llamado ‘mohammad’ y agréguelo al grupo ‘docker’.
useradd -m -s /bin/bash mohammad sudo usermod -aG docker mohammad
Ahora inicie sesión en el usuario ‘mohammad’ y ejecute el comando docker hello-world como se muestra a continuación.
su - mohammad docker run hello-world
Y obtendrá el hola mundo de la ventana acoplable como se muestra a continuación.
Paso 3: Instalar Docker Swarm y crear el clúster de enjambre
En este paso, vamos a instalar docker swarm y a continuación, crearemos el Docker Swarm Cluster de nuestros nodos. Para crear los nodos de clúster de enjambre, debemos inicializar el modo de enjambre en el nodo ‘administrador’ y luego unir el nodo ‘worker01’ al cluster ubuntu.
Inicialice el modo Docker Swarm ejecutando el siguiente comando docker en el nodo ‘administrador’.
docker swarm init --advertise-addr 132.92.41.4
Y obtendrá el resultado como se muestra a continuación.
Verá que el nodo ‘administrador’ ha generado un ‘token de unión’.
A continuación, debemos agregar el nodo ‘worker01’ al ‘administrador’ del clúster. Y para hacer eso, necesitamos un ‘token de unión’ del nodo ‘administrador’ del clúster, así que asegúrese de escribirlo en su nota.
Ejecute el comando docker swarm join en el nodo ‘worker01’.
docker swarm join --token SWMTKN-1-5p5ujrr67rl2rlmyvrj56fksblbcrtaeirf7fj5r4snid2vn6y-918gbqr02m64xct43i2ssi4qs 132.92.41.4:2377
Ahora obtendrá el resultado como se muestra a continuación.
El nodo ‘worker01’ se ha unido al clúster.
Compruébelo ejecutando el siguiente comando en el nodo ‘administrador’.
docker node ls
Ahora verá que el nodo ‘worker01’ se ha unido al docker swarm ubuntu.
Se ha creado el Swarm Cluster.
Paso 4: Implementación del primer servicio en el clúster de enjambre
En este paso, crearemos e implementaremos nuestro primer servicio en el clúster de enjambre. Queremos crear un nuevo servidor web Nginx de servicio que se ejecutará en el puerto HTTP predeterminado 80, y luego exponerlo al puerto 8080 en el servidor host, y luego intentar replicar el servicio nginx dentro del clúster de enjambre.
Crear servicio
Cree un nuevo servicio Nginx llamado ‘my-web’ y exponga el puerto HTTP del contenedor al puerto 8080 en el host.
docker service create --name my-web --publish 8080:80 nginx:1.13-alpine
Y cuando se cree, verifique usando el comando de servicio docker a continuación.
docker service ls
Y obtendrá el resultado como se muestra a continuación.
El servicio Nginx se ha creado e implementado en el clúster de enjambre como un servicio denominado ‘mi web’, se basa en Nginx Alpine Linux, expone el puerto HTTP del servicio de contenedor al puerto ‘8080’ en el host y tiene solo 1 réplica.
Réplicas y escala del servicio
Ahora haremos réplicas para el servicio ‘my-web’. Haremos 2 réplicas del servicio ‘my-web’, de modo que se pueda acceder al servicio en los nodos ‘manager’ y ‘worker01’.
Para replicar el servicio ‘my-web’, ejecute el siguiente comando.
docker service scale my-web=2
Y una vez que esté completo, verifique nuevamente usando el comando de servicio docker.
docker service ls
Y ahora el servicio tiene 2 réplicas y está disponible en ambos nodos del swarm cluster.
Abra su navegador web y escriba la dirección IP del nodo administrador con el puerto 8080.
http://gerente:8080/
Y obtendrá la página predeterminada de Nginx.
A continuación se muestra el resultado del nodo ‘worker01’.
http://trabajador01:8080/
Se ha completado la configuración de ubuntu docker swarm y la implementación del servicio Nginx en nuestro Swarm Cluster.