GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo implementar un servicio en un clúster de Docker Swarm

Más información sobre centros de datos

Docker Swarm es uno de los clústeres de contenedores más fáciles de implementar. En cuestión de minutos, puede tener su clúster en funcionamiento para alta disponibilidad, conmutación por error y escalabilidad. Una vez en funcionamiento, puede implementar contenedores en el enjambre para aprovechar el clúster. Por ejemplo, podría implementar un servicio que pueda escalar para satisfacer cualquier demanda que se le presente.

Eso es exactamente lo que te voy a mostrar. Aquí, primero instalaremos Docker Swarm y luego implementaremos un servicio en el nuevo clúster de modo que se pueda escalar en cualquier grado que se adapte a las necesidades de su empresa.

Lo que necesitarás

Haré una demostración en un clúster compuesto por un controlador y dos nodos, todos los cuales se ejecutarán en Ubuntu Server 20.04. Si está utilizando una distribución de Linux diferente, es posible que deba modificar los pasos de instalación de Docker (pero nada más).

Dicho esto, empecemos a enjambrar.

Cómo instalar Docker

Lo primero que debemos hacer es instalar Docker. Asegúrese de seguir estos mismos pasos en su controlador y en la cantidad de nodos que planee implementar.

Inicie sesión en su servidor y actualice apt con:

sudo apt-get update

A continuación, instale las dependencias necesarias con el comando:

sudo apt-get install ca-certificates curl gnupg lsb-release -y

Agregue la clave GPG oficial de Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Agregue el repositorio estable de Docker con:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Instale Docker Engine con:

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io -y

Inicie y habilite Docker con:

sudo systemctl enable --now docker

Agrega tu usuario al grupo docker con el comando:

sudo usermod -aG docker $USER

Informe al sistema del nuevo grupo con:

newgrp docker

Repita los pasos anteriores para todos sus nodos.

De vuelta en el controlador Docker, inicialice el enjambre con:

docker swarm init --advertise-addr SERVER

Donde SERVIDOR es la dirección IP del Docker Controller.

Luego se le presentará el comando de unión que se verá así:

docker swarm join --token SWMTKN-1-46uxtlbe3wrelly1fe5e65p1wdvg95bcjo48izvptpwof62rdo-42yl4jprovhng56sgxmyv7arv 192.168.1.13:2377

Copie ese comando y ejecútelo desde todos sus nodos. Una vez que haya hecho eso, puede verificar la unión emitiendo el siguiente comando en el controlador:

docker info

Debería ver un resultado similar a este:

Swarm: active

NodeID: wb44efzwy68x9gek45ee1nbnb

Is Manager: true

ClusterID: vjec4hz1sjj535x9w0mspox87

Managers: 1

Nodes: 3

Default Address Pool: 10.0.0.0/8

SubnetSize: 24

Data Path Port: 4789

Orchestration:

Task History Retention Limit: 5

Cómo implementar un servicio en el enjambre

Ahora, podemos implementar un servicio en nuestro enjambre. Mantengamos esto simple al principio e implementemos un servicio de contenedor NGINX con el que no podamos interactuar. Para hacer esto, emita el siguiente comando en el controlador:

docker service create --name nginx_test nginx

Para verificar el estado del servicio, emita el comando:

docker service ls

Debería ver que nuestro servicio NGINX se ha replicado con un resultado similar a este:

zie1n4nm5es3   nginx_test             replicated   1/1                nginx:latest

Nuestro ejemplo anterior solo está aprovechando uno de nuestros nodos. ¿Qué sucede si queremos implementar ese servicio en los tres nodos? Para eso, nuestro comando sería algo como esto:

docker service create --replicas 3 --name nginx3nodes nginx

Emita el comando:

docker service ls

Debería ver que nuestra implementación de nginx3nodes se ha replicado en 3 de 3 nodos con el siguiente resultado:

y1yu8fq27aab   nginx3nodes              replicated   3/3                nginx:latest

El servicio ahora aprovecha los tres nodos de nuestro clúster. Puede reducir ese servicio a 2 nodos con el comando:

docker service scale nginx3nodes=2

Verifique el estado con:

docker service ls

Ahora debería ver el servicio nginx en 2/2 nodos.

Digamos que tiene cinco nodos en su enjambre. Si desea escalar el servicio a los cinco nodos, el comando sería:

docker service scale nginx3nodes=5

Para eliminar el servicio, emitiría el comando:

docker service rm nginx3nodes

Supongamos que desea actualizar la imagen del contenedor en su implementación. Han pasado algunos días desde que se implementó originalmente y desea asegurarse de que está utilizando la última imagen de contenedor disponible. Asumiremos que nginx:latest es una imagen de contenedor actualizada y para actualizar ese servicio con la nueva imagen, debe ejecutar el comando:

docker service update --image nginx:latest nginx3nodes

Una nota final, si desea administrar el enjambre más fácilmente, implemente Portainer en el controlador con el comando:

docker run -d -p 8000:8000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Una vez implementado, vaya a http://SERVIDOR:9443 (donde SERVIDOR es la dirección IP del servidor). Después de crear un usuario administrador e iniciar sesión, debería ver Swarm en la lista de navegación de la izquierda. Haga clic en eso para ver su clúster (Figura A ).

Figura A

Y eso es prácticamente lo básico para poner en marcha un Docker Swarm e implementar un servicio en los nodos.

Suscríbase a de TechRepublic Cómo hacer que la tecnología funcione en YouTube para obtener los últimos consejos tecnológicos para profesionales de negocios de Jack Wallen.

Enlace fuente


Linux
  1. Cómo implementar el equilibrio de carga de Nginx en el clúster de Kubernetes en Ubuntu 18.04 LTS

  2. Cómo implementar su primer pod en un clúster de Kubernetes

  3. Cómo implementar microservicios con Docker

  4. Cómo implementar aplicaciones con Rancher

  5. Cómo implementar un contenedor nginx con Docker en Linode

Cómo instalar un clúster Docker de Kubernetes en CentOS 7

Cómo instalar y configurar un Docker Swarm Cluster en CentOS 8

Cómo implementar el clúster de Kubernetes en AWS con Amazon EKS

Cómo implementar Pi-Hole en Debian 11

Cómo implementar CouchDB como un clúster con Docker

Cómo implementar un contenedor Docker en Jelastic Cloud