Поиск по сайту:

Как установить Docker Swarm на Rocky Linux


На этой странице

  1. Предпосылки
  2. Установка Docker
  3. Настройка брандмауэра
  4. Инициализация Swarm Manager
  5. Добавление рабочих узлов в Swarm
  6. Управление службами в Docker Swarm
  7. Масштабирование сервисов в Docker Swarm
  8. Удаление служб в Docker Swarm
  9. Заключение

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

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

В этом руководстве показано, как настроить Docker Swarm с использованием серверов Rocky Linux. Вы установите Docker на каждый сервер, настроите firewalld, инициализируете Swarm Manager и добавите узлы, и, наконец, вы также изучите основы использования Docker Swarm для развертывания контейнерных приложений.

Предпосылки

Для выполнения этого руководства вам потребуются как минимум три сервера Rocky Linux и пользователь без полномочий root с правами sudo/administrator.

Для этой демонстрации мы будем использовать три сервера Rocky Linux со следующими подробностями:

Hostname            IP Address        Used as
---------------------------------------------------
swarm-manager1     192.168.5.100     Swarm Manager
worker1            192.168.5.120     Node
worker2            192.168.5.121     Node

Выполнив все эти требования, вы готовы приступить к развертыванию Docker Swarm.

Установка Докера

Чтобы настроить Docker Swarm, вы должны установить Docker Engine на каждую машину/сервер. Для дистрибутива Rocky Linux вы можете установить Docker через официальный репозиторий Docker.

Теперь вы установите Docker Engine на каждый из ваших серверов Rocky Linux.

Добавьте репозиторий Docker для системы Rocky Linux с помощью приведенной ниже команды dnf.

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

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

sudo dnf repo list
sudo dnf update

Если репозиторий Docker добавлен, вы увидите результат ниже:

Затем установите Docker с помощью приведенной ниже команды dnf. Когда будет предложено подтвердить установку, введите y и нажмите ENTER, чтобы продолжить.

sudo dnf install docker-ce docker-ce-cli containerd.io

После установки Docker запустите и включите службу docker с помощью приведенной ниже команды systemctl. Служба docker должна быть запущена и будет автоматически запускаться при загрузке системы.

sudo systemctl enable docker
sudo systemctl start docker

Наконец, проверьте службу docker с помощью приведенной ниже команды, чтобы убедиться, что служба работает.

sudo systemctl status docker

Если служба docker запущена, вы должны получить вывод, как показано ниже.

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

sudo usermod -aG docker user

Настройка брандмауэра

В производственной среде вы должны включить брандмауэр на каждом сервере. В системе Rocky Linux по умолчанию firewalld включен по умолчанию. Поэтому вам просто нужно добавить несколько портов TCP и UDP для развертывания Docker Swarm.

Ниже приведены некоторые порты TCP и UDP, которые необходимо открыть на каждом сервере для развертывания Docker Swarm и обеспечения его правильной работы:

  • TCP-порт 2377 для связи по управлению кластером — если у вас несколько Swarm Manager.
  • Порт TCP и UDP 7946 для связи между узлами — для всех узлов в среде Swarm.
  • Порт UDP 4789 для оверлейного сетевого трафика

Добавьте порты Docker Swarm в firewalld с помощью приведенной ниже команды firewall-cmd.

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

Затем перезагрузите правила firewalld и проверьте список портов на firewalld с помощью приведенной ниже команды.

sudo firewall-cmd --reload
sudo firewall-cmd --list-port

Вы должны увидеть, что некоторые порты TCP и UDP для развертывания Docker Swarm добавлены в файл firewalld.

С двигателем Docker, установленным на каждом сервере, и конфигурацией Firewalld вы теперь можете настроить развертывание Docker Swarm, инициализировав первый узел в качестве «менеджера Swarm».

Инициализация менеджера Swarm

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

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

В этом примере мы инициализируем сервер «swarm-manager1» с IP-адресом «192.168.5.100» в качестве Swarm Manager.

Запустите следующую команду «docker swarm init» на сервере «swarm-manager1», чтобы начать инициализацию Swarm Manager в вашем развертывании.

В этом примере Swarm Manager работает с IP-адресом «192.168.5.100», а сетью по умолчанию для служб Docker Swarm будет «10.10.0.0/16».

docker swarm init --advertise-addr 192.168.5.100 --default-addr-pool 10.10.0.0/16

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

Затем выполните следующую команду docker, чтобы убедиться, что режим Swarm активирован и включен.

docker info

Вы увидите, что режим Swarm является «активным» с сетевым IP-адресом для служб «10.10.0.0/16», что совпадает с конфигурацией во время процесса инициализации. Кроме того, вы можете видеть, что текущим узлом, доступным в Docker Swarm, является только «1».

Проверьте список доступных узлов в Docker Swarm с помощью приведенной ниже команды \docker node\. И вы увидите, что в вашем развертывании Docker Swarm есть только один узел.

docker node ls

Добавление рабочих узлов в Swarm

В Docker Swarm рабочий узел имеет ту же концепцию, что и в другой оркестрации контейнеров, где контейнеры выполняются и работают. Docker Engine должен быть установлен на каждом рабочем узле, а также рабочий может быть назначен \Swarm Manager\.

В то же время Swarm Manager также можно использовать в качестве рабочего узла, что означает, что ваше приложение также может работать на Swarm Manager.

Выполните следующую команду \docker swarm join\, чтобы добавить серверы \worker1\ и \worker2\ в Docker Swarm. Кроме того, обязательно замените токен сгенерированным токеном в вашей среде.

docker swarm join \
--token SWMTKN-1-4qxedy87gygenejrw06hlqpuwfm6erulccfj1jhnmsn0kehbnb-2ld4g3zo36bzu8d8ss4115rhq 192.168.5.100:2377

Когда вы получаете выходное сообщение, такое как «Этот узел присоединился к рою как рабочий», это означает, что рабочий узел добавлен.

Вы можете увидеть аналогичный вывод, когда \worker1\ и \worker2\ присоединяются к Docker Swarm.

Затем снова перейдите в Swarm Manager и выполните приведенную ниже команду docker, чтобы проверить список узлов в вашем Docker Swarm.

docker node ls

Вы должны увидеть три узла в своей среде Docker Swarm. В этом примере swarm-manager1 используется в качестве Swarm Manager, а серверы worker1 и worker2 используются в качестве рабочего узла.

Кроме того, вы также можете проверить список узлов, используя приведенную ниже команду docker.

docker info

На сервере Swarm Manager вы можете увидеть результат на следующем снимке экрана. Есть 1 менеджер и 3 ноды (в качестве воркера используется swarm-менеджер).

Но на серверах \worker1\ и \worker2\ вы увидите результат, подобный следующему. Вы можете увидеть IP-адрес Swarm Manager с TCP-портом по умолчанию 2377.

На данный момент вы завершили развертывание Docker Swarm с использованием Rocky Linux. Затем вы развернете приложение/сервис в своей среде Swarm.

Управление службами в Docker Swarm

Когда вы развертываете приложение в среде Docker Swarm, это приложение будет называться «службой». Это образ вашего микросервисного приложения, и это может быть HTTP-сервер, сервер базы данных или другие приложения.

Чтобы развернуть службу в Docker Swarm, вы должны указать базовый образ, который вы будете использовать, порты, конкретное имя вашей службы, а также количество реплик для вашей службы.

Теперь вы изучите базовое развертывание ваших сервисов в Docker Swarm.

В этом примере вы создадите новую службу «test-httpd» с 1 репликой и выставите порт «8000» на узле Swarm. Вы будете использовать изображение \httpd:alpine\.

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

docker service create --replicas 1 --name test-httpd -p 8000:80 httpd:alpine

Теперь проверьте сервисы на вашем Docker Swarm с помощью команды docker ниже. Вы должны увидеть, что служба «test-httpd» запущена, а также открыт TCP-порт 8000 только с 1 репликой.

docker service ls

Затем проверьте детали службы «test-httpd» с помощью приведенной ниже команды.

docker service inspect test-httpd
docker service inspect --pretty test-httpd

Ниже вы можете увидеть подробный сервис \test-httpd\.

Кроме того, вы можете проверить контейнер, который работает в службе «test-httpd», с помощью команды «docker service», как показано ниже.

docker service ps test-httpd

Вы можете видеть, что контейнер test-httpd.1 работает на сервере swarm-manager1.

Теперь откройте порт «8000» на всех серверах, используя следующую команду firewall-cmd.

sudo firewall-cmd --add-port=8000/tcp

После этого проверьте службу «test-httpd», используя команду curl, как показано ниже. В этом примере IP-адрес \swarm-manager1\ равен \192.168.5.100\.

curl 192.168.5.30:8000
curl -I 192.168.5.30:8000

Вы увидите страницу index.html по умолчанию сервиса test-httpd.

Масштабирование сервисов в Docker Swarm

После того, как вы развернули службу в Docker Swarm, теперь вы узнаете, как масштабировать свои службы и приложения.

Выполните следующую команду, чтобы масштабировать сервис test-httpd до 3 реплик. Эта команда создаст еще две службы test-httpd на рабочих узлах.

docker service scale test-httpd=3

Теперь проверьте список запущенных служб, используя следующую команду. Вы должны увидеть другую службу test-httpd, работающую как на серверах worker1, так и на серверах worker2.

docker service ps test-httpd

Наконец, проверьте службу с помощью команды curl, как показано ниже, на серверах «worker1» и «worker2». Если служба запущена, вы должны увидеть на экране страницу index.html по умолчанию.

Проверка сервиса на worker1.

docker ps
curl worker1:8000

Проверка сервиса на worker2.

docker ps
curl worker2:8000

Удаление сервисов в Docker Swarm

Вы изучили основные сервисы развертывания и масштабирования в Docker Swarm. Затем вы будете очищать свою среду Docker Swarm, удаляя службу «test-httpd».

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

docker service rm test-httpd

После этого проверьте службу \test-httpd\ с помощью приведенной ниже команды \docker service inspect\. Вы должны увидеть, что служба удалена.

docker service inspect test-httpd

Кроме того, вы также можете проверить с помощью приведенной ниже команды docker список запущенных контейнеров и образов в вашем Swarm.

Вы должны увидеть, что контейнер удален, а образ httpd:alpine доступен на всех серверах.

docker ps
docker images

Заключение

В этом руководстве вы развернули Docker Swarm с тремя серверами Rocky Linux. Вы также узнали об установке Docker Engine на сервере Linux и настройке Firewalld в системе Rocky Linux. И, наконец, вы также изучили базовое развертывание приложений в Docker Swarm с помощью команды «docker service».

Теперь вы можете развернуть свои контейнерные приложения со всеми зависимостями от Docker Swarm. Вы также можете добавить больше Swarm Manager, чтобы настроить высокую доступность вашей среды Docker Swarm.