Cómo configurar Docker Swarm con múltiples nodos Docker en Ubuntu 18.04

Cómo configurar Docker Swarm con múltiples nodos Docker en Ubuntu 18.04

Docker Swarm es una herramienta de orquestación y agrupación de contenedores para administrar los hosts de Docker, y es parte de Docker Engine. Es una herramienta de agrupación nativa proporcionada por Docker que proporciona un alto rendimiento y alto rendimiento para su aplicación.

El objetivo principal de Docker Swarm es agrupar múltiples hosts de Docker en un solo servidor virtual lógico, esto garantiza la disponibilidad y el alto rendimiento para su aplicación al distribuirlo en varios hosts de Docker en lugar de solo uno.

En este tutorial aprenderás:

  • ¿Qué es Docker Swarm?
  • Cómo configurar hosts
  • Cómo instalar y ejecutar el servicio Docker
  • Cómo configurar el nodo del administrador para la inicialización del clúster en enjambre
  • Cómo configurar los nodos de trabajadores para unirse al clúster de enjambre
  • Cómo verificar el grupo de enjambres
  • Cómo implementar un nuevo servicio en el clúster de enjambre
Servicios de enjambre de Docker.

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Ubuntu 18.04
Software Docker-Ce 18.09
Otro Acceso privilegiado a su sistema Linux como root o a través del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Concepto de enjambre en detalle

Las características de gestión y orquestación de clúster integradas en el motor Docker se construyen con Swarmkit.

Un enjambre consta de múltiples hosts de Docker que se ejecutan en modo enjambre y actúan como gerentes (que administran la membresía y la delegación) y los trabajadores (que ejecutan servicios de enjambre). Un anfitrión de Docker dado puede ser un gerente, un trabajador o realizar ambos roles. Cuando crea un servicio, define su estado óptimo como el número de réplicas, redes y recursos de almacenamiento disponibles para él, los puertos exponen el servicio al mundo exterior, etc. Si un nodo de trabajador no está disponible, Docker programa ese nodo en otros nodos. Una tarea es un contenedor en ejecución que forma parte de un servicio de enjambre y administrado por un gerente de enjambre.



Una de las ventajas clave de los servicios de enjambres sobre contenedores independientes es que puede modificar la configuración de un servicio, incluidas las redes y volúmenes a los que está conectado, sin la necesidad de reiniciar manualmente el servicio. Docker actualizará la configuración, detendrá las tareas de servicio con la configuración desactualizada y creará las nuevas que coinciden con la configuración deseada.

Cuando Docker se ejecuta en modo enjambre, aún puede ejecutar contenedores independientes en cualquiera de los hosts de Docker que participan en el enjambre, así como los servicios de enjambre. Una diferencia clave entre los contenedores independientes y los servicios de enjambre es que solo los gerentes de enjambre pueden administrar un enjambre, mientras que los contenedores independientes pueden iniciarse con cualquier demonio. Docker Demons puede participar en un enjambre como gerentes, trabajadores o ambos.

Configurar los hosts Docker

Antes de instalar los paquetes Docker necesarios para el clúster de enjambre, configuraremos el archivo hosts en todos los nodos de Ubuntu.

Nodo del gerente - 192.168.1.103 (nombre de host - DockManager) Nodo de trabajador1 - 192.168.1.107 (Nombre de host - Dockerworker1) Nodo de trabajador2 - 192.168.1.108 (nombre de host - Dockerworker2) 

Editar el /etc/huéspedes Archivo en los tres nodos a través de gedit o empuje y hacer los siguientes cambios:

192.168.1.103 DockManager 192.168.1.107 Dockerworker1 192.168.1.108 Dockerworker2 
Copiar

Después de modificar con los detalles anteriores en el archivo hosts, verifique la conectividad con silbido entre todos los nodos.

Del anfitrión de Docker Manager

# Ping Dockerworker1 # Ping 192.168.1.107 
# Ping Dockerworker2 # Ping 192.168.1.108 

Del nodo de trabajador de docker 1

# ping dockermanager # ping 192.168.1.103 

Del nodo de Docker Worker 2

# ping dockermanager # ping 192.168.1.103 

Instalar y ejecutar el servicio Docker

Para crear el clúster de enjambre, necesitamos instalar Docker en todos los nodos del servidor. Instalaremos Docker-Ce I.mi. Docker Community Edition en las tres máquinas Ubuntu.

Antes de instalar Docker CE por primera vez en una nueva máquina host, debe configurar el repositorio de Docker. Después, puede instalar y actualizar Docker desde el repositorio. Realice todos los pasos a continuación en los tres nodos Ubuntu.

Actualizar el índice de paquete APT:

# Actualización de apt-get 

Instale paquetes para permitir que Apt use un repositorio a través de HTTPS:

# apt-get install apt-transport-https ca-certificados Curl Software-Properties-Common -y 


Agregar la clave GPG oficial de Docker:

curl -fssl https: // descargar.estibador.com/linux/ubuntu/gpg | sudo apt-key agregar - 

Use el siguiente comando para configurar el repositorio estable:

# Add-APT-Repository "Deb [arch = amd64] https: // descargar.estibador.com/linux/ubuntu $ (lsb_release -cs) estable " 

Actualice nuevamente el paquete APT:

# Actualización de apt-get 

Instale la última versión de Docker CE:

apt-get install Docker-CE

Después de que se complete la instalación, inicie el servicio Docker y permita que se inicie cada vez en System Boot.

# SystemCTL Start Docker # SystemCTL Habilitar Docker 

Para configurar Docker para ejecutarse como un usuario normal o un usuario no raíz, ejecute el siguiente comando:

# usermod -ag docker  
# USERMOD -AG Docker Manager # usermod -ag Docker Worker1 # usermod -ag Docker Worker2 

Ahora, inicie sesión como usuario designado y ejecute el Docker Hola Mundo para verificar.

# Su - Gerente $ Docker Run Hello -World 

Tras la ejecución exitosa, dará la siguiente salida

Instalación de Docker Check Hello_World.

Configurar el nodo Administrador para la inicialización del clúster de enjambres

En este paso, crearemos el clúster de enjambre de nuestros nodos. Para crear el clúster de enjambre, necesitamos inicializar el modo Swarm en el nodo 'DockEmanager' y luego unirnos al nodo 'DockerWorker1' y 'DockerWorker2' al clúster.

Inicialice el modo de enjambre de Docker ejecutando el siguiente comando Docker en el nodo 'DockEmanager'.




Docker Swarm Init-Advertise-ADDR

$ Docker Swarm Init-Advertise-Addr 192.168.1.103 
Inicialización del clúster de enjambre.

El "Token de unión" ha sido generado por el 'DockManager' que se requerirá que se unan a los nodos de los trabajadores al gerente del clúster.

Configurar nodos de trabajadores para unirse al clúster de enjambre

Ahora, para unirnos a los nodos de los trabajadores al enjambre, ejecutaremos el comando Docker Swarm Join en todos los nodos de los trabajadores que recibimos en el paso de inicialización del enjambre:

$ Docker Swarm Join--Token SWMTKN-1-4HTF3VNZMBHC88VXJYGUIPO91IHMUTRXI2P1SI2DE4WHAQYLR6-3OED1HNTTWKALUR1EY7ZKDP9L 192.168.1.103: 2377 
Nodo de trabajadores 1 Unirse al clúster de enjambre. Nodo de trabajadores 2 Unirse al clúster de enjambre.

Verifique el grupo de enjambres

Para ver el estado del nodo, para que podamos determinar si los nodos están activos/disponibles, etc., desde el nodo del administrador, enumere todos los nodos en el enjambre:

$ Docker Node LS 
Verificación del clúster de enjambre de Docker.

Si en algún momento, perdió su token de unión, se puede recuperar ejecutando el siguiente comando en el nodo del administrador para el token del administrador:

$ Docker Swarm JOIN -TOKING Manager -Q 

La misma forma de recuperar el token de trabajador ejecuta el siguiente comando en el nodo del administrador:

$ Docker Swarm Join -Toking Worker -q 

Implementar un nuevo servicio en el clúster de enjambre

En este paso, crearemos e implementaremos nuestro primer servicio al clúster de enjambre. El nuevo servidor web de servicio Nginx se ejecutará en el puerto HTTP predeterminado 80, y luego lo expondrá al puerto 8081 en la máquina host. Crearemos este servicio Nginx con 2 réplicas, lo que significa que habrá 2 contenedores de Nginx en nuestro enjambre. Si alguno de estos contenedores falla, se generará nuevamente para tener el número deseado que establecemos en la opción de réplica.

$ Docker Service Create--Name My-Web1-Publish 8081: 80-Replicas 2 Nginx 

Después de la implementación exitosa del servicio, puede ver la siguiente salida:

Implementar el servicio Nginx en el clúster de enjambre.

Para verificar el servicio NGINX recién creado utilizando los comandos de servicio Docker a continuación.

$ Docker Service LS 
Enumere el servicio recién implementado en el clúster de enjambre.


Docker Service PS

$ Docker Service PS My-Web1 
Enumera las tareas que se ejecutan como parte de los servicios especificados en Swarm Cluster.

Si necesitamos verificar si el servicio NGINX está funcionando bien, podemos usar el comando CURL o verificar el navegador en la máquina host para la página de bienvenida del servidor web NGINX.

$ curl http: // dockermanager: 8081 

Verificación del servicio web Nginx a través de Curl.

En el navegador en la máquina host podemos acceder a la página de bienvenida de Nginx

Verificación de servicio Nginx a través del navegador.

Ahora, si necesitamos escalar el servicio NGINX, haremos 3 réplicas y lo haremos ejecutar el siguiente comando en el nodo del administrador:

$ Docker Service Scale my-web1 = 3 

Escala de servicio para el número deseado de réplicas.

Para verificar la salida después de escalar, podemos usar Servicio Docker LS o Docker Service PS dominio.

Nosotros podemos usar Inspeccionar el servicio de Docker Comando para verificar los detalles extendidos de un servicio implementado en Swarm. Por defecto, esto hace que todos los resultados en una matriz JSON.

Conclusión

Docker se ha convertido en una forma extremadamente popular de configurar, guardar y compartir entornos de servidor con contenedores. Debido a esto, instalar una aplicación o incluso una pila grande a menudo puede ser tan simple como ejecutar Docker Pull o Docker Run. La separación de las funciones de aplicación en diferentes contenedores también ofrece ventajas en la gestión de seguridad y dependencia.

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Introducción a los motores de almacenamiento MySQL
  • Mastering Bash Script Loops
  • Cómo instalar Kubernetes en Ubuntu 20.04 fossa focal Linux
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • ¿Con qué frecuencia tiene que reiniciar su servidor de Linux??
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cómo instalar Kubernetes en Ubuntu 22.04 Jellyfish de Jammy ..
  • Bucles anidados en guiones Bash