Cómo configurar un clúster Docker Swarm en un CentOS 7 VPS o un servidor dedicado | Hosting mas barato

Docker Swarm, también conocido como motor Docker en modo Swarm, es una nueva herramienta de agrupación y orquestación para contenedores Docker que se utiliza para administrar un grupo de hosts Docker.
En este artículo presentamos Docker en Docker 1.12. Permite la suma y resta de contenedores en el proceso de cálculo.
Docker Swarm consta de dos componentes principales:
Nodo administrador: Se ocupa de la gestión de tareas del clúster, como la programación de servicios, el mantenimiento del estado de los clústeres y el aprovisionamiento de puntos finales en el modo enjambre de Docker.
Nodo trabajador: Se utiliza para ejecutar el contenedor del clúster.
En este tutorial aprenderá más sobre la instalación y configuración del Docker Swarm Mode en CentOS 7. En este artículo usaremos tres CentOS 7 para instalar e iniciar el motor Docker. De estos, dos servidores actúan como nodos de trabajo o motores de ventana acoplable y el restante es un administrador.
En este caso, necesitamos lo siguiente:
Inicie sesión en https://ecs.console.aliyun.com/?spm=a3c0i.o25424en.a3.13.388d499ep38szx y seleccione CentOS 7. Después de iniciar sesión, ejecute el siguiente comando para asegurarse de que el sistema tenga los últimos paquetes disponibles:
yum update -y
Antes de comenzar el proceso, asegúrese de configurar el archivo / etc / hosts en cada nodo para que sea más fácil comunicarse entre sí mediante nombres de host.
Utilice el siguiente comando para actualizar el archivo de hosts:
172.168.0.101dkmanager.example.com dkmanager
172.168.0.102 workernode1.example.com workernode1
172.168.0.103 workernode2.example.com workernode2
Guarde el archivo cuando haya terminado.
Ahora configure el nombre de host de cada nodo según el archivo de hosts.
Ejecute el siguiente comando para cada nodo.
Nodo administrador:
hostnamectl set-hostname managernode
Nodo de trabajador 1:
hostnamectl set-hostname workernode1
Nodo de trabajador 2:
hostnamectl set-hostname workernode2
Ahora instale la versión de Docker en cada nodo. Configure el sistema de repositorio de Docker y ejecute el siguiente comando en todos los nombres de host.
Haga lo mismo para los dos servidores de nodo trabajador.
El siguiente paso es abrir los puertos en el firewall para asegurarse de que el clúster de enjambre funcione correctamente.
Continúe y ejecute el siguiente comando en todos los nodos:
Reinicie el servicio Docker:
Abra los puertos del firewall en la parte inferior de cada nodo trabajador, luego reinicie el servicio Docker:
Inicializa el enjambre en su nodo administrador. Para hacer esto, ejecute el siguiente comando.
docker swarm init --advertise-addr 192.168.0.101
Asegúrese de ver el siguiente resultado:
El token generado por la salida anterior ayudará a conectar los nodos de administrador y trabajador
Verifique el estado del administrador con el siguiente comando:
docker info
La salida debería verse así:
Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 17.12.0-ce Storage Driver: devicemapper Pool Name: docker-253:0-618740-pool Pool Blocksize: 65.54kB Base Device Size: 10.74GB Backing Filesystem: xfs Udev Sync Supported: true Data file: /dev/loop0 Metadata file: /dev/loop1 Data loop file: /var/lib/docker/devicemapper/devicemapper/data Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata Data Space Used: 11.8MB Data Space Total: 107.4GB Data Space Available: 3.817GB Metadata Space Used: 581.6kB Metadata Space Total: 2.147GB Metadata Space Available: 2.147GB Thin Pool Minimum Free Space: 10.74GB Deferred Removal Enabled: true Deferred Deletion Enabled: true Deferred Deleted Device Count: 0 Library Version: 1.02.140-RHEL7 (2017-05-03) Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: active NodeID: viwovkb0bk0kxlk98r78apopo Is Manager: true ClusterID: ttauawqrc8mmd0feluhcr1b0d Managers: 1 Nodes: 1 Orchestration: Task History Retention Limit: 5 Raft: Snapshot Interval: 10000 Number of Old Snapshots to Retain: 0 Heartbeat Tick: 1 Election Tick: 3 Dispatcher: Heartbeat Period: 5 seconds CA Configuration: Expiry Duration: 3 months Force Rotate: 0 Autolock Managers: false Root Rotation In Progress: false Node Address: 192.168.0.102 Manager Addresses: 192.168.0.102:2377 Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 89623f28b87a6004d4b785663257362d1658a729 runc version: b2567b37d7b75eb4cf325b77297b140ea686ce8f init version: 949e6fa Security Options: seccomp Profile: default Kernel Version: 3.10.0-693.11.1.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 1.102GiB Name: centOS-7 ID: DN4N:BHHJ:6DJ7:SZPG:FJJC:XP6T:23R4:CESK:E5PO:SJ6B:BOST:HZQ5 Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false
Debería ver la lista completa de nodos presentes en su clúster mediante el siguiente comando:
docker node ls
La salida debería verse así:
Agregue los nodos trabajadores al servicio de enjambre de Docker con el siguiente comando:
docker swarm join --token SWMTKN-1 3793hvb71g0a6ubkgq8zgk9w99hlusajtmj5aqr3n2wrhzzf8z-1s38lymnir13hhso1qxt5pqru 192.168.0.101:2377
La salida debe ser:
Ejecute el siguiente comando para verificar el estado de los nodos:
docker node ls
Si el proceso es exitoso, debería obtener el resultado que se muestra a continuación:
En caso de que desee recuperar un token de unión perdido, ejecute el siguiente comando:
docker swarm join-token manager -q
A estas alturas, el modo enjambre de Docker debería ejecutarse correctamente con dos nodos trabajadores.
Ahora inicie el servicio en modo enjambre. En este caso iniciamos un servicio web en Docker Swarm Mode con los tres contenedores.
Ejecute el siguiente comando solo desde Docker Manager:
docker service create -p 80:80 --name webservice --replicas 3 httpd
La salida debería verse así:
Ejecute el siguiente comando para verificar el estado de su servicio:
docker service ls
La salida será:
Con el resultado anterior, los contenedores se implementan correctamente en los nodos del clúster. Ahora es más fácil iniciar sesión en el sitio web desde cualquier nodo utilizando las siguientes direcciones de navegador web.
http:// 172.168. 0.101 http://172.168. 0.102 http://172.168. 0.103
El modo Docker Swarm contiene funciones únicas como la autorreparación del contenedor. En caso de que un contenedor no funcione, el administrador se asegura de que los contenedores de ese nodo en particular se reinicien automáticamente.
Para probar si el proceso está funcionando, eliminaremos un contenedor de workernode2 y averiguaremos si se inicia un nuevo contenedor o no.
Ejecute el siguiente comando para enumerar el ID del contenedor en Workernode2:
docker ps
La salida debería verse así:
Ahora ejecute el siguiente comando para eliminar el contenedor 9b01b0a55cb7:
docker rm 9b01b0a55cb7 -f
Ahora verifique si el nodo administrador aprovisiona un nuevo contenedor:
docker service ps webservice
Ahora puede notar que un contenedor ha fallado y otro contenedor se inició inmediatamente en workernode2:
En el clúster de Docker, es posible escalar contenedores hacia arriba y hacia abajo. En este caso, intentemos escalar los contenedores del servicio a 5.
[root@dkmanager ~]# docker service scale webserver=5 webserver scaled to 5 [root@dkmanager ~]#
Verifique nuevamente el estado del servicio con el siguiente comando:
Ahora intentemos reducir el contenedor del servicio a 2:
[root@dkmanager ~]# docker service scale webserver=2 webserver scaled to 2 [root@dkmanager ~]#
Verifique que el proceso se complete con el siguiente comando:
Ahora debería tener un clúster Docker Swarm completamente configurado en CentOS7.
Ahí tienes. Así de fácil es configurar Docker Swarm con la ayuda del nuevo modo Swarm y el motor Docker. Es importante tener en cuenta que una vez completada la configuración, asegúrese de proteger los servidores proporcionando una capa adicional de seguridad. Una característica de seguridad con funciones de firewall y vigilancia es un buen lugar para comenzar.