Как установить и настроить кластер Docker Swarm в CentOS 8

12 set 2022 4 min di lettura
Как установить и настроить кластер Docker Swarm в CentOS 8
Indice dei contenuti

Введение

Docker — это инструмент с открытым исходным кодом, который можно использовать для создания, развертывания и запуска приложений с использованием контейнера. Контейнер позволяет упаковать приложение со всеми необходимыми зависимостями и отправить его как единый пакет.

Docker Swarm — это инструмент кластеризации, используемый для управления узлами Docker. Он позволяет превратить группу хостов Docker в единый логический виртуальный сервер. Таким образом, вы можете изменить размер приложения по горизонтали и увеличить количество экземпляров контейнера. Docker swarm предлагает очень полезные функции, включая автоматическое восстановление контейнеров, балансировку нагрузки, рост и уменьшение контейнеров, обнаружение сервисов и чередующиеся обновления.

В этой статье мы покажем вам, как настроить кластер Docker Swarm на CentOS 8.

Предпосылки

  • Два сервера под управлением CentOS 8.
  • Доступ root-пользователя на каждом сервере.

Установите Docker на оба узла

Во-первых, вам нужно установить Docker на оба узла. По умолчанию последняя версия Docker не включена в репозиторий CentOS 8 по умолчанию, поэтому вам нужно будет добавить репозиторий Docker в вашу систему.

Вы можете добавить его с помощью следующей команды:

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

После создания репозитория Docker установите Docker с помощью следующей команды:

dnf install docker-ce --nobest

После установки Docker запустите службу Docker и включите ее запуск при перезапуске системы с помощью следующей команды:

systemctl start docker
systemctl enable docker

Вы также можете проверить статус Docker с помощью следующей команды:

systemctl status docker

Вы должны получить следующий результат:

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

 Mar 11 02:55:24 workernode systemd[1]: Started Docker Application Container Engine.
 Mar 12 02:55:24 workernode dockerd[2173]: time="2021-03-11T02:55:24.119523516-05:00" level=info msg="API listen on /var/run/docker.sock"

Теперь проверьте установленную версию Docker с помощью следующей команды:

docker --version

Вы должны увидеть следующий вывод:

Docker version 20.10.5, build 55c4c88

Настроить брандмауэр

Затем вам нужно разрешить порты 2376, 2377, 7946 и 80 через брандмауэр на обоих узлах. Вы можете разрешить их с помощью следующей команды:

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

Затем перезагрузите firewalld, чтобы применить изменения:

firewall-cmd --reload

Инициализировать кластер Docker Swarm

Далее вам нужно будет инициализировать кластер Docker Swarm на узле менеджера. Вы можете сделать это с помощью следующей команды:

docker swarm init --advertise-addr 45.58.11.112

Вы должны получить следующий результат:

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

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

 docker swarm join --token SWMTKN-1-aisjdoj1o2812hfui31h4ifuh13iu4fh13i4ufh1o34ij1po4u9013gj0dsjv09u32er0901923if0 45.58.11.112:2377

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

Вы можете использовать команду, показанную в предыдущем выводе, на рабочем узле Docker, чтобы присоединить узел к кластеру.

Вы можете проверить информацию о кластере Docker Swarm с помощью следующей команды:

docker info

Вы должны получить следующий результат:

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: h19f38h12jd2398
 Is Manager: true
 ClusterID: 1f13nfv8jhf098jgz
 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.11.112
 Manager Addresses:
 45.58.11.112:2377

Теперь вы можете протестировать узел Docker Swarm с помощью следующей команды:

docker node ls

Вы должны получить следующий результат:

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

Добавьте рабочий узел в кластер Docker Swarm.

Далее вам нужно будет добавить рабочий узел к узлу менеджера Docker Swarm. Вы можете сделать это с помощью следующей команды на рабочем узле:

docker swarm join --token SWMTKN-1-aisjdoj1o2812hfui31h4ifuh13iu4fh13i4ufh1o34ij1po4u9013gj0dsjv09u32er0901923if0 45.58.32.185:2377

Вы должны получить следующий результат:

This node joined a swarm as a worker.

На узле Docker Manager проверьте рабочий узел с помощью следующей команды:

docker node ls

Вы должны увидеть, что рабочий узел добавлен в Docker Swarm:

h19f38h12jd2398 * masternode Ready Active Leader 20.10.5
 220fj2094fgj094 workernode Ready Active 20.10.5

Запуск службы в Docker Swarm

Здесь мы создадим новый веб-сервис Nginx и масштабируем его с помощью двух контейнеров. Вы можете создать его, выполнив следующую команду на узле Manager:

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

Вы должны получить следующий результат:

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

Теперь вы можете проверить веб-сервис с помощью следующей команды:

docker service ls

Вы должны увидеть следующий вывод:

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

Вы также можете проверить работающий контейнер с помощью следующей команды:

docker ps

Вы должны увидеть следующий вывод:

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

Чтобы получить подробную информацию о веб-службе, выполните следующую команду:

docker service ps webservice

Вы должны увидеть следующий вывод:

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

Проверьте Docker Swarm

На данный момент мы развернули контейнер Nginx между узлами кластера, включая узел управления. Теперь вы можете получить доступ к веб-серверу Nginx, используя любой IP-адрес рабочего узла или управляющего узла:

Вывод

В этом руководстве мы узнали, как установить и настроить кластер Docker Swarm в CentOS 8. Теперь вы можете добавить любое количество рабочих узлов в кластер Docker Swarm и изменить размер своего приложения.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.