GNU/Linux >> Tutoriales Linux >  >> Cent OS

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

Docker es una herramienta de código abierto que se puede usar para crear, implementar y ejecutar aplicaciones usando un contenedor. El contenedor le permite empaquetar una aplicación con todas las dependencias requeridas y enviarla como un solo paquete.

Docker Swarm es una herramienta de agrupación que se utiliza para administrar el host de Docker. Le permite convertir un grupo de hosts Docker en un único servidor virtual lógico. De esta manera, puede escalar su aplicación horizontalmente y aumentar el número de instancias del contenedor. El enjambre de Docker ofrece características muy útiles que incluyen recuperación automática de contenedores, balanceo de carga, ampliación y reducción de contenedores, descubrimiento de servicios y actualizaciones continuas.

En esta publicación, le mostraremos cómo configurar un clúster Docker Swarm en CentOS 8.

Requisitos

  • Dos servidores que ejecutan CentOS 8.
  • Se configura una contraseña raíz en cada servidor.

Instalar Docker en ambos nodos

Primero, deberá instalar Docker en ambos nodos. De forma predeterminada, la última versión de Docker no está incluida en el repositorio predeterminado de CentOS 8. Por lo tanto, deberá agregar un repositorio de Docker en su sistema.

Puede agregarlo con el siguiente comando:

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Una vez que se crea el repositorio de Docker, instálelo con el siguiente comando:

dnf install docker-ce --nobest

Después de instalar Docker, inicie el servicio de Docker y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start docker
systemctl enable docker

También puede verificar el estado de Docker con el siguiente comando:

systemctl status docker

Deberías obtener el siguiente resultado:

? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-03-12 03:55:24 EST; 6s ago
     Docs: https://docs.docker.com
 Main PID: 2173 (dockerd)
    Tasks: 8
   Memory: 44.7M
   CGroup: /system.slice/docker.service
           ??2173 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.570387991-05:00" level=error msg="Failed to built-in GetDriver graph btrfs>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617049696-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617096273-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617278059-05:00" level=info msg="Loading containers: start."
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.884953789-05:00" level=info msg="Default bridge (docker0) is assigned with>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.039811428-05:00" level=info msg="Loading containers: done."
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066358016-05:00" level=info msg="Docker daemon" commit=363e9a8 graphdriver>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066498611-05:00" level=info msg="Daemon has completed initialization"
Mar 12 03:55:24 workernode systemd[1]: Started Docker Application Container Engine.
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.119523516-05:00" level=info msg="API listen on /var/run/docker.sock"

Ahora, verifique la versión instalada de Docker usando el siguiente comando:

docker --version

Debería ver el siguiente resultado:

Docker version 20.10.5, build 55c4c88

Configurar cortafuegos

A continuación, deberá permitir los puertos 2376, 2377, 7946 y 80 a través del firewall en ambos nodos. Puede permitirlos con el siguiente comando:

firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=7946/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=7946/udp
firewall-cmd --permanent --add-port=4789/udp

A continuación, vuelva a cargar el cortafuegos para aplicar los cambios:

firewall-cmd --reload

Inicializar el clúster de Docker Swarm

A continuación, deberá inicializar el clúster de Docker Swarm en el nodo del administrador. Puedes hacerlo con el siguiente comando:

docker swarm init --advertise-addr 45.58.32.185

Deberías obtener el siguiente resultado:

Swarm initialized: current node (cq8xpscsls2ctqhdha8lhdrph) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Puede usar el comando que se muestra en el resultado anterior en el nodo trabajador de Docker para unir el nodo al clúster.

Puede verificar la información del clúster Docker Swarm con el siguiente comando:

docker info

Deberías obtener el siguiente resultado:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.5
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: active
  NodeID: cq8xpscsls2ctqhdha8lhdrph
  Is Manager: true
  ClusterID: m7jrgvuw1k7pvfd1qyc3mffpl
  Managers: 1
  Nodes: 1
  Default Address Pool: 10.0.0.0/8  
  SubnetSize: 24
  Data Path Port: 4789
  Orchestration:
   Task History Retention Limit: 5
  Raft:
   Snapshot Interval: 10000
   Number of Old Snapshots to Retain: 0
   Heartbeat Tick: 1
   Election Tick: 10
  Dispatcher:
   Heartbeat Period: 5 seconds
  CA Configuration:
   Expiry Duration: 3 months
   Force Rotate: 0
  Autolock Managers: false
  Root Rotation In Progress: false
  Node Address: 45.58.32.185
  Manager Addresses:
   45.58.32.185:2377

Ahora puede verificar el nodo Docker Swarm con el siguiente comando:

docker node ls

Deberías obtener el siguiente resultado:

ID                            HOSTNAME     STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
cq8xpscsls2ctqhdha8lhdrph *   masternode   Ready     Active         Leader           20.10.5

Agregar nodo de trabajo al clúster de Docker Swarm

A continuación, deberá agregar el nodo trabajador al nodo administrador de Docker Swarm. Puede hacerlo con el siguiente comando en el nodo trabajador:

docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377

Deberías obtener el siguiente resultado:

This node joined a swarm as a worker.

En el nodo Docker Manager, verifique el nodo trabajador con el siguiente comando:

docker node ls

Debería ver que el nodo trabajador se agrega a Docker Swarm:

cq8xpscsls2ctqhdha8lhdrph *   masternode   Ready     Active         Leader           20.10.5
bipfv8sfm94a9po0uame5rd1n     workernode   Ready     Active                          20.10.5

Iniciar un servicio en Docker Swarm

Aquí, crearemos un nuevo servicio web Nginx y lo escalaremos con dos contenedores. Puede crearlo ejecutando el siguiente comando en el nodo Administrador:

docker service create -p 80:80 --name webservice --replicas 2 nginx

Deberías obtener el siguiente resultado:

agyxlaswxakrbboakkyydsh0k
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged 

Ahora puede verificar el servicio web con el siguiente comando:

docker service ls

Debería ver el siguiente resultado:

ID             NAME         MODE         REPLICAS   IMAGE          PORTS
agyxlaswxakr   webservice   replicated   2/2        nginx:latest   *:80->80/tcp

También puede verificar el contenedor en ejecución con el siguiente comando:

docker ps

Debería ver el siguiente resultado:

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
c887cad1df2e   nginx:latest   "/docker-entrypoint.…"   32 seconds ago   Up 30 seconds   80/tcp    webservice.2.jelyj9gmeb7ikl2scg7mz8yg8

Para obtener la información detallada del servicio web, ejecute el siguiente comando:

docker service ps webservice

Debería ver el siguiente resultado:

ID             NAME           IMAGE          NODE         DESIRED STATE   CURRENT STATE           ERROR     PORTS
eye9zukwwrkq   webservice.1   nginx:latest   workernode   Running         Running 3 minutes ago             
jelyj9gmeb7i   webservice.2   nginx:latest   masternode   Running         Running 3 minutes ago   

Verificar Docker Swarm

En este punto, implementamos un contenedor Nginx en los nodos del clúster, incluido el nodo de administración. Ahora puede acceder a su servidor web Nginx utilizando cualquiera de las direcciones IP del nodo de trabajo o del nodo de administrador:

Conclusión

En la guía anterior, aprendió a configurar el clúster de Docker Swarm en CentOS 8. Ahora puede agregar cualquier cantidad de nodos trabajadores al clúster de Docker Swarm y escalar su aplicación.


Cent OS
  1. Cómo instalar y configurar Nginx en CentOS 7

  2. Cómo instalar y configurar Redis en CentOS 7

  3. Cómo instalar y configurar GitLab en CentOS 7

  4. Cómo instalar y configurar Redmine en CentOS 7

  5. Cómo instalar y configurar docker en Rocky Linux/Centos 8

Cómo instalar y configurar Nagios 4.0.7 en CentOS 7

Cómo instalar y configurar ISPConfig CP en CentOS 7

Cómo instalar y configurar Docker Swarm en CentOS 7 / Ubuntu 16.04 / Fedora 26/25

Cómo instalar y configurar ownCloud en CentOS 7

Cómo instalar y configurar Samba en CentOS 8

Cómo instalar y configurar Fail2ban en CentOS 8