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

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

Enjambre de acopladores es (también conocido como motor Docker en modo enjambre) una solución de agrupación en clúster nativa que convierte un grupo de hosts Docker en un único servidor virtual lógico. Swarm garantiza la disponibilidad y el alto rendimiento de su aplicación al distribuirla entre la cantidad de hosts Docker dentro de un clúster.

Además, con Docker Swarm, puede escalar su aplicación horizontalmente, es decir, aumentar el número de instancias de contenedor para la misma aplicación.

Nuestra Infraestructura

Para la demostración, estoy usando un entorno de sistema operativo mixto:

El enjambre Docker era anteriormente una herramienta separada. Ahora está integrado con el motor Docker de v 1.12 . Entonces, solo puede instalar Motor Docker en todos sus hosts (Administrador y nodos trabajadores ).

LEER :Cómo instalar Docker Community Edition en CentOS 7/RHEL 7

LEER :Cómo instalar Docker Community Edition en Ubuntu 16.04

LEER :Cómo instalar Docker Community Edition en Fedora 26/Fedora 25

Cortafuegos

Deberá abrir los siguientes puertos en el firewall para que un clúster de enjambre funcione correctamente.

CentOS / Fedora:

firewall-cmd --permanent --add-port=7946/tcp
firewall-cmd --permanent --add-port=4789/udp
firewall-cmd --permanent --add-port=7946/udp
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=80/tcp  ## We are Testing Docker Swarm with WebService
firewall-cmd --reload

Ubuntu:

ufw status
ufw allow 2376/tcp
ufw allow 7946/tcp
ufw allow 7946/udp
ufw allow 2377/tcp
ufw allow 4789/udp
ufw allow 80/tcp ## We are Testing Docker Swarm with WebService
ufw reload
ufw enable

Reinicie el motor de Docker después de haber abierto los puertos necesarios, ya que la cadena de firewall afecta las reglas de Docker.

systemctl restart docker

De aquí en adelante, todos los comandos mencionados son comandos universales de Docker, por lo que puede ejecutar el comando en cualquier sistema operativo compatible con Docker (en nuestro caso, CentOS 7 , Ubuntu 16.04 y Fedora 26/25 ).

Crear un enjambre

Iniciemos la creación de un clúster usando “swarm init “. Ejecute el siguiente comando en su nodo de administrador (dockerm.itzgeek.local ).

[root@dockerm ~]# docker swarm init --advertise-addr 192.168.12.10

–advertise-addr La opción especifica el nodo administrador para publicar su dirección como 192.168.12.10 para que el nodo trabajador pueda unirse al clúster.

Salida:

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

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

    docker swarm join \
    --token SWMTKN-1-5y1u36a0osykywxeme2akpjp4jgx2l67mbqbc4fnazs39bp314-e6djx8ma2qnevolztpplkn26j \
    192.168.12.10:2377

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

El resultado anterior tiene el token para agregar nodos trabajadores al clúster.

Vea el estado actual del enjambre usando el siguiente comando.

[root@dockerm ~]# docker info

Salida:

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.03.1-ce
Storage Driver: devicemapper
 Pool Name: docker-253:1-297-pool
.    .   .
.    .   .
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.135-RHEL7 (2016-11-16)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: active
 NodeID: uhh38rpazd5tnzjph2g5rhgxy
 Is Manager: true
 ClusterID: kp8tgowwcuiv3om0wzfgpngp7
 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
 Node Address: 192.168.12.10
 Manager Addresses:
  192.168.12.10:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-123.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 979.9 MiB
Name: dockerm.itzgeek.local
ID: OTNI:UJZA:7CC4:TS5N:TVJ7:XXQE:5J7Q:ENWW:ZVPD:3VJI:F5DL:JYSP
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

Puede enumerar los nodos de Docker en el enjambre con el siguiente comando.

[root@dockerm ~]# docker node ls

Salida:

ID                           HOSTNAME               STATUS  AVAILABILITY  MANAGER STATUS
uhh38rpazd5tnzjph2g5rhgxy *  dockerm.itzgeek.local  Ready   Active        Leader
Páginas:1 2
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 Fail2Ban en CentOS 8 y Fedora 33

  4. Cómo configurar Autofs en CentOS 7 / Ubuntu 16.04 / Debian 9 / Fedora 27/26

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

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

Cómo instalar y configurar Nagios 4.0.7 en CentOS 7

Cómo instalar y configurar ISPConfig CP en CentOS 7

Instalar y configurar phpLDAPAdmin en CentOS 7 / Ubuntu 16.04

Cómo configurar el registro privado de Docker en CentOS 7 / Ubuntu 16.04 / Fedora 26/25

Cómo instalar y configurar GitLab en CentOS 7 / Ubuntu 18.04 y Debian 9

    Nombre de host Dirección IP Sistema Operativo Propósito
    dockerm.itgeek.local 192.168.12.10 CentOS 7 Actúa como un administrador de Docker que administra el motor de Docker que se ejecuta en los nodos. Docker Manager también formará parte de un clúster, es decir, también ejecutará contenedores.
    nodo1.itzgeek.local 192.168.12.20 Ubuntu 16.04 Nodo trabajador 1 (motor de Docker en ejecución)
    nodo2.itzgeek.local 192.168.12.30 Fedora 26/25 Nodo trabajador 2 (motor de Docker en ejecución)