El modo Docker Swarm es una herramienta de agrupación y orquestación de contenedores para administrar el host Docker. El modo Docker Swarm es la parte nativa del motor Docker. Significa que no tiene que instalar nada excepto el motor Docker porque el modo de enjambre Docker es parte del motor Docker.
El modo de enjambre de Docker se introduce en Docker 1.12. Algunos de los beneficios clave del modo de enjambre de Docker son la reparación automática del contenedor , equilibrio de carga , escala vertical de contenedores y reducir la escala , descubrimiento de servicios y actualizaciones continuas . En el último par de artículos hemos discutido los siguientes temas
- Cómo instalar Docker en CentOS 7
- Cómo crear imágenes de contenedores de Docker con Dockerfile
En este artículo, explicaremos cómo instalar y configurar el modo Docker Swarm en CentOS 7.x/RHEL 7.x. Para la demostración, utilizaré 3 CentOS 7.x. o RHEL 7.x Servidores en los que instalaré docker engine. De los cuales dos servidores actuarán como Docker Engine o nodo trabajador y uno actuará como gerente . En mi caso, estoy usando lo siguiente:
- dkmanager.example.com (172.168.10.70):actuará como administrador que administrará el motor de Docker o los hosts o el nodo de trabajo y también funcionará como motor de Docker.
- workernode1.example.com (172.168.10.80):actuará como motor Docker o Worker Node
- workernode2.example.com (172.168.10.90):actuará como motor Docker o Worker Node
Actualice las siguientes líneas en el archivo /etc/hosts en todos los servidores
172.168.10.70 dkmanager.example.com dkmanager172.168.10.80 nodotrabajador1.ejemplo.com nodotrabajador1172.168.10.90 nodotrabajador2.ejemplo.com nodotrabajador2
Paso:1 Instale Docker Engine en todos los hosts
Primero configure el repositorio de la ventana acoplable y luego ejecútelo debajo del comando en todos los hosts.
[[email protected] ~]# yum install yum-utils –y[[email protected] ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/ docker-ce.repo[[email protected] ~]# yum install docker-ce docker-ce-cli containerd.io –y[[email protected] ~]# systemctl start docker[[email protected] ~]# systemctl enable docker
Repita los pasos anteriores para el nodo trabajador 1 y el nodo trabajador 2
Nota:en el momento de escribir este artículo, Docker versión 1.13 estaba disponible.
Paso:2 Abrir puertos de cortafuegos en los nodos de administrador y trabajador
Abra los siguientes puertos en el cortafuegos del sistema operativo en Docker Manager usando los siguientes comandos
[[correo electrónico protegido] ~]# firewall-cmd --permanent --add-port=2376/tcpsuccess[[correo electrónico protegido] ~]# firewall-cmd --permanent --add-port=2377/tcpsuccess[ [correo electrónico protegido] ~]# firewall-cmd --permanent --add-port=7946/tcpsuccess[[email protected]ager ~]# firewall-cmd --permanent --add-port=7946/udpsuccess[[correo electrónico protegido ] ~]# firewall-cmd --permanent --add-port=4789/udpsuccess[[email protected] ~]# firewall-cmd --permanent --add-port=80/tcpsuccess[[email protected] ~]# firewall-cmd --reloadsuccess[[email protected] ~]#
Reinicie el servicio de la ventana acoplable en el administrador de la ventana acoplable
[[email protected] ~]# systemctl reiniciar docker
Abra los siguientes puertos en cada nodo trabajador y reinicie el servicio docker
~]# firewall-cmd --permanent --add-port=2376/tcp~]# firewall-cmd --permanent --add-port=7946/tcp~]# firewall-cmd --permanente -- add-port=7946/udp~]# firewall-cmd --permanent --add-port=4789/udp~]# firewall-cmd --permanent --add-port=80/tcp~]# firewall-cmd - -recargar~]# systemctl reiniciar ventana acoplable
Paso:3 Inicialice el enjambre o el clúster usando el comando 'docker swarm init'
Ejecute el siguiente comando desde el nodo administrador (dkmanager) para inicializar el clúster.
[[email protected] ~]# docker swarm init --advertise-addr 172.168.10.70
Este comando hará que nuestro nodo sea un nodo administrador y también publicitamos la dirección IP del administrador en el comando anterior para que el nodo esclavo o trabajador pueda unirse al clúster.
Ejecute el siguiente comando para verificar el estado del administrador y ver la lista de nodos en su clúster
[[email protected] ~]# docker node lsID HOSTNAME STATUS DISPONIBILIDAD MANAGER STATUSn64oy2sml1w188ps109mai67b * dkmanager.example.com Ready ActiveTambién podemos usar la “información de la ventana acoplable Comando para verificar el estado del enjambre
Paso:3 Agregar nodos trabajadores al enjambre o clúster
Para agregar nodos de trabajo al enjambre o clúster, ejecute el comando que obtenemos cuando inicializamos el enjambre. El comando de muestra se muestra en el paso 3
[[email protected] ~]# docker swarm join --token SWMTKN-1-4jjyu1btmdky0ou6gl2dwgt24bolpsdn5yd77pohmcnmz0s288-11xwcvzjar29fskkhfvlzsmhr 172.168.10.70:2377Este nodo se unió a un swarm ~[c[email]proteted]worker[c[email]proteted. ~]# docker swarm join --token SWMTKN-1-4jjyu1btmdky0ou6gl2dwgt24bolpsdn5yd77pohmcnmz0s288-11xwcvzjar29fskkhfvlzsmhr 172.168.10.70:2377Este nodo se unió a un enjambre como trabajador.[[email protected] ~]#Verifique el estado del nodo usando el comando "docker node ls ” del administrador de ventanas acoplables
En este momento, nuestro clúster o modo de enjambre de Docker está en funcionamiento con dos nodos trabajadores. En el siguiente paso veremos cómo definir un servicio.
Paso:4 Lanzamiento del servicio en modo Docker Swarm
En el modo de enjambre de Docker, los contenedores se reemplazan con la palabra tareas y las tareas (o contenedores) se inician y se implementan como servicio y Supongamos que quiero crear un servicio con el nombre "servidor web" con cinco contenedores y quiero asegurarme de que el estado deseado de los contenedores dentro del servicio sea cinco.
Ejecute los siguientes comandos solo desde Docker Manager.
[[email protected] ~]# docker service create -p 80:80 --name webserver --replicas 5 httpd7hqezhyak8jbt8idkkke8wizi[[email protected] ~]#El comando anterior creará un servicio con el nombre "servidor web", en el que el estado deseado de los contenedores o la tarea es 5 y los contenedores se iniciarán desde la imagen acoplable "httpd “. Los contenedores se implementarán en los nodos del clúster, es decir, dkmanager , nodotrabajador1 y workernode2
Enumere el servicio Docker con el siguiente comando
[[email protected] ~]# docker service lsID NOMBRE MODO RÉPLICAS IMAGE7hqezhyak8jb servidor web replicado 5/5 httpd:latest[[email protected] ~]#Ejecute el siguiente comando para ver el estado de su servicio "servidor web"
[[email protected] ~]# docker service ps webserver
Según el resultado anterior, podemos ver que los contenedores se implementan en los nodos del clúster, incluido el nodo administrador. Ahora podemos acceder a la página web desde cualquier nodo trabajador y Docker Manager usando las siguientes URL:
http://172.168.10.70 o http://172.168.10.80 o http://172.168.10.90
Paso:5 Ahora pruebe la recuperación automática del contenedor
La autocuración de contenedores es la característica importante del modo de enjambre docker. Como sugiere el nombre, si algo sale mal con el contenedor, el administrador se asegurará de que se estén ejecutando al menos 5 contenedores para el servicio "servidor web". Eliminemos el contenedor de workernode2 y veamos si se lanza un nuevo contenedor o no.
[[correo electrónico protegido] ~]# docker ps[[correo electrónico protegido] ~]# docker rm a9c3d2172670 -f
Ahora verifique el Servicio desde el administrador de la ventana acoplable y vea si se lanza un nuevo contenedor o no
[[email protected] ~]# docker service ps webserver
Según el resultado anterior, podemos ver que se lanza un nuevo contenedor en el nodo dkmanager porque se eliminó uno de los contenedores en workernode2
Paso:6 Escalar hacia arriba y hacia abajo los contenedores asociados a un Servicio
En el modo de enjambre de Docker podemos escalar hacia arriba y hacia abajo contenedores o tareas. Aumentemos los contenedores a 7 para el servicio 'servidor web ‘
[[email protected] ~]# docker service scale webserver=7webserver escalado a 7[[email protected] ~]#Verifique el estado del servicio nuevamente con los siguientes comandos
Reduzcamos la escala del contenedor a 4 para el servidor web del servicio
[[email protected] ~]# docker service scale webserver=4webserver escalado a 4[[email protected] ~]#Verifique el Servicio nuevamente con los comandos debajo
Eso es todo por este artículo. Espero que tenga una idea de cómo instalar y configurar el modo Docker Swarm en CentOS 7.x y RHEL 7.x. Por favor, no dude en compartir sus comentarios y opiniones 🙂