Cómo instalar y configurar el modo Docker Swarm en CentOS 7 / RHEL 7

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.

docker-swarm-init-comando

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

docker-info-comando-salida

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

docker-node-ls-comando-salida

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

docker-service-ps-comando-salida

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

acceso-webpage-contenedor

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

eliminación-contenedor-centos7

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

Característica de recuperación automática de Docker

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

servicio-ampliación-docker-swarm

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

servicio-reducción-docker-swarm

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 🙂

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *