Быть в курсе
Аватарка автора Редакция Рег.облако
ИнструкцииОблако

Docker Swarm: настройка и управление кластерами

5 марта 2026

5 минут

Телеграм

ВКонтакте

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

Предварительная настройка

Мы будем развертывать Docker Swarm на серверах с Ubuntu 24.04 LTS. Перед началом настройки кластера необходимо:

Всё актуальное — в наших соцсетях. Подписывайтесь!
  1. Установить Docker на все серверы.
  2. Настроить разрешение имен между узлами. Для тестовой среды добавьте записи в /etc/hosts на каждом сервере:

У нас будут 3 машины со следующими IP, так что выдадим им следующие имена:

В продуктивной инфраструктуре рекомендуется использовать внутренний DNS.

  1. Настроить брандмауэр. Если используется iptables, выполните на всех узлах:

На manager дополнительно откройте порт 2377:

При развертывании кластера в облаке убедитесь, что аналогичные правила добавлены в панели управления провайдера.

Если вы планируете разворачивать кластер в облаке, стоит обратить внимание на облачные решения от Рег.облака. Это удобный вариант для быстрого запуска виртуальных серверов, масштабирования ресурсов под нагрузку и гибкой конфигурации сети.

Источник: Freepik. Swarm ― инструмент для создания и управления кластерами

Инициализация кластера на хосте управления

Перейдите на сервер, который будет выполнять роль управляющей ноды (в нашем примере ― 10.0.0.10).

  1. Инициализируйте кластер Docker Swarm:

Параметр --advertise-addr указывает IP-адрес, по которому другие ноды будут подключаться к управляющему узлу.

Docker выведет сообщение об успешной инициализации и сгенерирует команду для подключения воркер-нод. Она будет выглядеть примерно так:

Скопируйте эту команду ― она потребуется для добавления рабочих серверов в кластер.

  1. Проверьте состояние кластера:

В списке отобразится текущий узел со статусом Ready и ролью Leader.

  1. При необходимости получите токен повторно.

Чтобы добавить воркер-ноду, пропишите:

Добавить управляющие ноды:

Подключение к кластеру воркеров

Теперь нужно подключить рабочие узлы (worker01 ― 10.0.0.11, worker02 ― 10.0.0.12).

  1. На управляющем сервере получите команду подключения для воркер-нод:

Вывод будет следующим:

  1. Перейдите на каждый рабочий сервер и выполните полученную команду:

Если соединение настроено корректно и порты открыты, узел будет добавлен в кластер.

  1. Проверьте подключение на manager:

В списке должны отобразиться все ноды со статусом Ready. Роль воркер-узлов будет указана как Worker, а управляющий сервер останется Leader.

Источник: Freepik. Swarm помогает запускать контейнеры на нескольких машинах

Создание стека с сервисами

В Docker Swarm приложения обычно разворачиваются в виде стеков. Стек описывается в YAML-файле формата Docker Compose и может включать несколько взаимосвязанных сервисов.

  1. Создайте файл stack.yml на управляющем узле:

Пример конфигурации:

В этом примере мы развернули веб-сервис на базе Nginx с двумя репликами и сервис Redis.

  1. Разверните стек в кластере:

Где mystack ― имя создаваемого стека.

  1. Проверьте развернутые сервисы:

И список запущенных контейнеров в рамках стека:

Docker Swarm автоматически распределит реплики сервисов между доступными worker-нодами. Если один из узлов откажет, контейнеры будут перезапущены на других серверах кластера в соответствии с заданной политикой.

Пример полезных команд

Команда Описание
docker node ls Выводит список всех нод кластера
docker node inspect <нода> Отображает подробную информацию о выбранной ноде
docker service ls Показывает список всех сервисов
docker service ps <сервис> Отображает задачи сервиса и их размещение по нодам
docker service logs <сервис> Выводит логи сервиса
docker stack ls Показывает список развернутых стеков
docker stack services <стек> Отображает сервисы выбранного стека
docker stack rm <стек> Удаляет стек и все его сервисы
docker swarm leave Выполняет выход текущего узла из кластера
docker swarm leave --force Принудительно удаляет управляющую ноду из кластера

Заключение

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

Новые статьи