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

Как установить Docker Swarm на Debian 11


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

  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 обеспечивает высокий уровень доступности приложений. В Docker Swarm вы можете запускать одно приложение или службу на нескольких узлах, называемых «рабочими узлами». Существует также узел под названием «Swarm Manager», который обеспечивает централизованное управление и оркестрацию Docker Swarm.

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

Предпосылки

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

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

Hostname    IP Address        Used as
-------------------------------------
manager     192.168.5.100     Swarm Manager
node1       192.168.5.120     Node
node2       192.168.5.121     Node

Выполнив все эти требования, вы готовы начать.

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

Репозиторий Debian по умолчанию предоставляет пакет для Docker. Но чтобы убедиться, что вы устанавливаете последнюю версию Docker, вы установите Docker через официальный репозиторий Docker.

Кроме того, вы должны установить Docker на все ваши серверы Debian.

Перед добавлением репозитория выполните следующую команду apt, чтобы установить некоторые базовые пакеты. Когда будет предложено подтвердить установку, введите Y и нажмите ENTER.

sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y

После установки базовых пакетов добавьте ключ GPG для репозитория Docker с помощью следующей команды. С помощью этой команды вы создадите новый каталог \/etc/apt/keyrings\ и сохраните в нем ключ GPG репозитория Docker.

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

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

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Теперь обновите и обновите индекс вашего пакета с помощью приведенной ниже команды apt.

sudo apt update

Вы увидите, что новый репозиторий Docker обновляется.

Затем установите пакеты Docker с помощью следующей команды apt. Вам будет предложено подтвердить установку, введите Y для подтверждения и нажмите ENTER для продолжения.

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

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

sudo systemctl start docker
sudo systemctl enable docker

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

sudo systemctl status docker

Если служба docker запущена, вы должны увидеть результат, подобный следующему снимку экрана:

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

sudo usermod -aG docker user

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

Если вы развертываете Docker Swarm для производства, вы должны настроить брандмауэр между всеми узлами. В этом примере вы будете использовать UFW в качестве брандмауэра по умолчанию для ваших серверов Debian.

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

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

Установите UFW в свои системы Debian, используя следующую команду apt.

sudo apt install ufw -y

После установки UFW выполните следующую команду ufw, чтобы добавить профиль приложения \OpenSSH\. Затем запустите и включите UFW.

В процессе вам будет предложено подтвердить запуск и включение брандмауэра UFW. Введите y для подтверждения и нажмите ENTER для продолжения.

sudo ufw allow "OpenSSH"
sudo ufw enable

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

sudo ufw allow 2377/tcp
sudo ufw allow 7946/tcp
sudo ufw allow 7946/udp
sudo ufw allow 4789/udp

Наконец, проверьте список включенных правил UFW на вашем сервере с помощью следующей команды ufw. Убедитесь, что все порты для Docker Swarm включены и доступны на UFW.

sudo ufw status

На данный момент у вас установлен Docker и настроен UFW. Далее давайте инициализируем Swarm Manager.

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

Swarm Manager — это центр развертывания Docker Swarm. Он сам управляет состоянием роя и не имеет ограничений на количество узлов-менеджеров. Развертывание нескольких Swarm Manager создаст отказоустойчивую среду.

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

В этом примере вы инициализируете один узел как Swarm Manager.

Чтобы инициализировать Swarm Manager, выполните следующую команду docker. В этом примере менеджер Swarm будет работать на IP-адресе 192.168.5.30. А сеть для контейнеров в среде Docker Swarm будет 10.20.0.0/16.

docker swarm init --advertise-addr 192.168.5.30 --default-addr-pool 10.20.0.0/16

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

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

docker info

На следующем снимке экрана вы можете видеть, что режим Swarm «активен» с пулом IP-адресов «10.20.0.0/16». Кроме того, текущий узел, доступный в Docker Swarm, равен \1\.

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

docker node ls

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

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

Чтобы добавить рабочий узел, вы можете использовать команду «docker swarm join», за которой следует токен, сгенерированный при инициализации Swarm Manager.

Добавьте серверы node1 и node2 в Docker Swarm с помощью приведенной ниже команды \docker swarm join\. Вы можете заменить токен сгенерированным токеном во время инициализации Swarm Manager.

docker swarm join \
--token SWMTKN-1-5tui5dveqw6n2b0m6suut0w7nf9w0wb5jyvfhmykb4jdehps1j-ag99f7750mmnim6ao5yp0x3s2 \
192.168.5.30:2377

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

Ниже приведен вывод, который вы увидите на серверах node1 и node2.

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

docker swarm join-token worker

Наконец, вернитесь к серверу \manager\ и проверьте список узлов в среде Docker Swarm с помощью приведенной ниже команды \docker\.

docker node ls

На следующем снимке экрана вы можете видеть, что и «узел 1», и «узел 2» добавлены в Docker Swarm со статусом «Готово» и механизмом докера «20.10.18».

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

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

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

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

После того, как вы развернули Docker Swarm, вы изучите основы развертывания своих сервисов в Docker Swarm.

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

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

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

Когда служба \test-httpd\ запущена, проверьте ее с помощью следующей команды. Вы должны увидеть, что служба «test-httpd» работает с 1 репликой и выставляет TCP-порт 8000.

docker service ls

Теперь выполните следующую команду, чтобы проверить службу сведений \test-httpd\.

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

Ниже вы можете увидеть подробную информацию о сервисе «test-httpd», включая количество реплик, внешние порты, используемый вами базовый образ и т. д.

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

docker service ps test-httpd

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

Теперь откройте порт «8000» на всех серверах с помощью приведенной ниже команды ufw.

sudo ufw allow 8000/tcp

Затем проверьте службу \test-httpd\, используя команду curl, как показано ниже. «192.168.5.30» — это IP-адрес Swarm Manager, а служба «test-httpd» работает на порту 8000.

curl 192.168.5.30:8000
curl -I 192.168.5.30:8000

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

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

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

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

docker service scale test-httpd=3

Теперь проверьте работающий контейнер в службе «test-httpd», используя приведенную ниже команду. Вы должны увидеть три разных контейнера в службе «test-http», которая работает на диспетчере серверов, node1 и node2.

docker service ps test-httpd

Наконец, выполните следующую команду docker, чтобы проверить работающий контейнер на серверах node1 и node2. Вы должны увидеть, что контейнер с именем test-httpd.random name работает на обоих серверах. Также видно, что контейнер доступен через TCP-порт 8000.

Проверка контейнера на node1.

docker ps
curl node1:8000

Проверка контейнера на node2.

docker ps
curl node2:8000

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

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

Выполните следующую команду, чтобы удалить и удалить службу 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 с тремя серверами Debian 11. Вы также изучили базовую установку Docker Engine на сервере Linux и базовую настройку брандмауэра UFW в системе Debian. И, наконец, вы также изучили базовое развертывание приложений в Docker Swarm с помощью команды «docker service».

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