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