Introducción a la arquitectura Docker Swarm
Docker Swarm es una herramienta de agrupación y orquestación para contenedores que está incorporada en Docker Engine para el sistema distribuido que involucra cientos de contenedores. Las tareas Docker Node, Docker Services y Docker son componentes clave de la arquitectura de enjambre Docker.
- Nodo Docker: es la instancia de Docker Engine incluida en el enjambre Docker, tiene dos tipos:
- Nodo de administrador: responsable de todas las tareas de orquestación y administración de contenedores requeridas para mantener el sistema en el estado deseado, como mantener el estado del clúster, programar los servicios y dar servicio a los puntos finales HTTP en modo enjambre.
- Servicio Docker: es la definición de tarea que debe ejecutarse.
Arquitectura típica del enjambre de Docker
A continuación se presentan los puntos para la arquitectura típica de enjambre de acopladores:
- El nodo es el miembro clave de la arquitectura de enjambre de Docker, una arquitectura de enjambre puede tener más de un nodo de administrador liderado por un solo nodo de administrador elegido usando el algoritmo Raft, un nodo de administrador también puede funcionar como un nodo de trabajo pero puede configurarse para funcionar como administrador nodo también.
- Los nodos de administrador usan el algoritmo de consenso de balsa para administrar internamente el estado del clúster. Esto es para garantizar que todos los nodos de administrador que están programando y controlando tareas en el clúster mantengan / almacenen un estado consistente.
- Un enjambre es un grupo de Docker Engines o nodos, donde implementamos nuestros servicios. En la primera etapa, a Docker se le ocurrió un sistema de administración de clúster con un protocolo de comunicación conocido como Beam. Más tarde, agregaron más API y le cambiaron el nombre a enjambre. El enjambre de primera generación se llama 'enjambre v1'.
Flujo de trabajo del enjambre Docker
El flujo de trabajo de Docker Swarm consiste en comprender cómo funcionan los nodos y los servicios en una arquitectura Docker Swarm:
Paso 1: El primer paso es crear un conjunto de máquina acoplable que actuará como nodos en el enjambre de acopladores , uno de estos nodos será el administrador, el nodo restante actuará como nodos de trabajo. Para crear una máquina acoplable, use el comando en Windows, inicie la terminal acoplable.
docker-machine create –driver hyperv manager1
- Donde 'manager1' es el nombre de la máquina acoplable, para enumerar las máquinas y su ejecución, respectivamente.
docker-machine ls
docker-machine ip manager1
Paso 2: El segundo paso es crear máquinas de trabajo, use el siguiente comando para crear tanto como máquinas de trabajo que desee, aquí creemos 3 trabajadores.
docker-machine create –driver hyperv worker1
docker-machine create –driver hyperv worker2
docker-machine create –driver hyperv worker3
- Podemos conectarnos con el gerente o trabajador utilizando el siguiente comando, que lo llevará al interior de la máquina.
docker-machine ssh manager1/worker1
Paso 3: El paso tres es inicializar el enjambre de docker, tenemos que ejecutar este comando en la máquina que queremos que funcione como administrador, así es como hacemos el administrador de nodos, también podemos agregar más administradores.
docker-machine ssh manager1
docker swarm init –advertise-and Manager1 IP
Paso 4: El paso cuatro es unir los nodos de trabajo para enjambrar, obtener el comando para unirse al nodo como trabajador usando el comando a continuación en la máquina del administrador y ejecutar el comando que tiene en la máquina de trabajo que desea hacer un trabajador.
Docker swarm join-token worker1
- Para verificar si el trabajador está unido al enjambre o no, vaya a la máquina del administrador y ejecute el comando, enumerará la máquina del trabajador agregada con los detalles del administrador.
docker-machine ls
Paso 5: El paso cinco es ejecutar los comandos estándar de Docker en el administrador.
docker info (fetches details about docker swarm)
docker swarm (commands that can run on docker swarm such as join, leave, update, init and unlock etc)
Paso 6: El paso seis es ejecutar los contenedores de Docker en Docker Swarm, podemos crear cualquier servicio y sus réplicas. Vaya a ub.docker.com, inicie sesión y vaya a explorar depositarios, podemos ver diferentes imágenes que son motores, por ejemplo, nginx (se ejecuta en el servidor web) crea un servicio y sus réplicas utilizan el siguiente comando en el administrador.
docker service create –replicas 3 -p 80:80 –name sample nginx
- Donde 'muestra' es el nombre del servicio y 80 es el puerto que está siendo expuesto para verificar el estado del servicio ejecutado debajo del comando en el nodo del administrador.
docker service ls
docker service ps sample
Verifique el servicio que se ejecuta en todos los nodos y también verifique en el navegador dando IP para todos los nodos.
Paso 7: Paso siete, ahora podemos ver el uso real del enjambre Docker donde escalamos el servicio hacia arriba y hacia abajo. Para escalar un servicio, ejecute el siguiente comando en la máquina del administrador
docker service scale sample=4
- El comando anterior hará que la muestra de servicio se ejecute en 4 nodos, aunque todos los nodos estén ocupados, creará otro servicio en el administrador o el trabajador. De manera similar, podemos reducir el servicio.
docker service scale sample=2
- También podemos inspeccionar el nodo para obtener detalles como cuántos y qué servicio se están ejecutando en un nodo ejecutando los siguientes comandos en el nodo administrador
docker node inspect worker1/manager1
docker node inspect self
Paso 8: El paso ocho es actualizar el servicio cuando el servicio se ejecuta en varias máquinas y si queremos actualizar el servicio es muy simple y, por ejemplo, si queremos actualizar la versión del servicio nginx.
docker service update –image nginx:1.14.0 sample
Paso 9: Apagar / detener / eliminar.
- Para cerrar cualquier nodo en particular, use el siguiente comando, que cambia el estado del nodo a 'drenaje'.
docker node update –availability drain worker1
- Para eliminar el servicio de todas las máquinas.
docker service rm sample
- Para abandonar el enjambre, que cambia el estado del 'abajo'.
docker swarm leave
- Para detener una máquina (Ejecutar desde la terminal acoplable, no en la máquina de administrador o de trabajo).
docker-machine stop worker1
docker-machine rm worker1
Ventajas de la arquitectura Docker Swarm
A continuación se muestran los puntos que muestran los beneficios de Docker Swarm Architecture:
- Diseño descentralizado: podemos administrar grupos de enjambres a través del comando de enjambre. Da un solo punto de acceso para construir un enjambre completo.
- Es muy simple en comparación con Kubernetes.
- Alta disponibilidad: entre los nodos disponibles en enjambre si el maestro falla, otro nodo de trabajo se hará cargo.
- Conciliación del estado deseado: el administrador de enjambre realiza un seguimiento del estado del clúster para que el estado deseado y el real sean siempre los mismos.
- Cuando especificamos una red over para conectarse a sus servicios, el administrador de enjambre asigna direcciones al contenedor en la red superpuesta una vez que creamos / actualizamos los contenedores
- Actualizaciones continuas: las actualizaciones del servicio se pueden realizar de forma gradual. El administrador de enjambres le permite especificar el retraso entre cada actualización sin ningún tiempo de inactividad.
Conclusión
Docker Swarm es una herramienta simple en lugar de grandes herramientas que realizan la tarea, Docker con Swarm proporciona la orquestación que necesitamos, es fácil de configurar y envía al nativo con el motor Docker que vamos a instalar y utilizar de todos modos.
Artículos recomendados
Esta es una guía de Docker Swarm Architecture. Aquí discutimos cómo funcionan los nodos y servicios en una arquitectura de enjambre Docker con sus beneficios. También puede consultar nuestros otros artículos relacionados para obtener más información:
- Arquitectura Docker
- ¿Qué es el enjambre de Docker?
- Aplicaciones de inteligencia de enjambre
- ¿Swarming Technology ayuda a los equipos ágiles a crecer?