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 contenedor de autocuración, balanceo de carga, aumento de escala del contenedor y reducir proporcionalmente, descubrimiento de servicios y actualizaciones continuas. En el último par de artículos hemos discutido los siguientes temas
En este artículo, veremos cómo instalar y configurar el modo Docker Swarm en CentOS 7.x / RHEL 7.x Para la demostración, usaré 3 CentOS 7.x o RHEL 7.x Servidores en los que instalaré docker engine. De los cuales dos servidores actuarán como Motor acoplable o nodo trabajador y uno actuará como un gerente. En mi caso estoy usando lo siguiente:
- dkmanager.example.com (172.168.10.70): actuará como administrador que administrará el motor Docker o los hosts o el nodo de trabajo y también funcionará como motor 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 dkmanager 172.168.10.80 workernode1.example.com workernode1 172.168.10.90 workernode2.example.com workernode2
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 Abra los puertos del cortafuegos en los nodos de administrador y trabajador
Abra los siguientes puertos en el firewall del sistema operativo en Docker Manager usando los siguientes comandos
[[email protected] ~]# firewall-cmd --permanent --add-port=2376/tcp success [[email protected] ~]# firewall-cmd --permanent --add-port=2377/tcp success [[email protected] ~]# firewall-cmd --permanent --add-port=7946/tcp success [[email protected] ~]# firewall-cmd --permanent --add-port=7946/udp success [[email protected] ~]# firewall-cmd --permanent --add-port=4789/udp success [[email protected] ~]# firewall-cmd --permanent --add-port=80/tcp success [[email protected] ~]# firewall-cmd --reload success [[email protected] ~]#
Reinicie el servicio de ventana acoplable en el administrador de ventana acoplable
[[email protected] ~]# systemctl restart 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 --permanent --add-port=7946/udp ~]# firewall-cmd --permanent --add-port=4789/udp ~]# firewall-cmd --permanent --add-port=80/tcp ~]# firewall-cmd --reload ~]# systemctl restart docker
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 anunciamos 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 ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS n64oy2sml1w188ps109mai67b * dkmanager.example.com Ready Active Leader [[email protected] ~]#
También podemos usar el “información de la ventana acoplableComando para verificar el estado del enjambre
Paso:3 Agregar nodos de trabajo 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:2377 This node joined a swarm as a worker. [[email protected] ~]# [[email protected] ~]# docker swarm join --token SWMTKN-1-4jjyu1btmdky0ou6gl2dwgt24bolpsdn5yd77pohmcnmz0s288-11xwcvzjar29fskkhfvlzsmhr 172.168.10.70:2377 This node joined a swarm as a worker. [[email protected] ~]#
Verifique el estado del nodo usando el comando “nodo acoplable ls” del administrador de la ventana acoplable
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 palabras 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 httpd 7hqezhyak8jbt8idkkke8wizi [[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 sobre los nodos del clúster, es decir administrador de dk, trabajadornodo1 y trabajadornodo2
Enumere el servicio Docker con el siguiente comando
[[email protected] ~]# docker service ls ID NAME MODE REPLICAS IMAGE 7hqezhyak8jb webserver replicated 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 autocuración 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.
[[email protected] ~]# docker ps [[email protected] ~]# 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=7 webserver scaled to 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=4 webserver scaled to 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 🙂