Как установить и настроить Docker Swarm на VPS
Когда одного сервера с Docker становится мало, а полноценный Kubernetes кажется избыточным, есть промежуточное решение. Настроить Docker Swarm на VPS — значит объединить несколько серверов в кластер, где сервисы запускаются репликами, распределяются по нодам и переживают падение отдельной машины. Разберём установку по шагам: от инициализации кластера до деплоя отказоустойчивого сервиса с несколькими репликами.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Docker Swarm и кому он нужен
Docker Swarm — это встроенный в Docker режим оркестрации. Он превращает группу отдельных Docker-хостов в единый кластер, которым вы управляете как одним целым. Вы описываете, сколько реплик сервиса должно работать, а Swarm сам распределяет их по нодам, следит за их числом и перезапускает упавшие, в том числе перенося на другую машину, если нода вышла из строя.
Главное преимущество перед одиночным Docker — отказоустойчивость и масштабирование. Сервис в трёх репликах на трёх нодах продолжит работать, даже если одна нода упадёт: Swarm поднимет недостающую реплику на оставшихся. Масштабирование — это одна команда, меняющая число реплик. При этом Swarm использует привычный синтаксис Docker и compose-файлов, поэтому порог входа заметно ниже, чем у Kubernetes.
Честно о месте Swarm в 2026 году. Индустрия во многом ушла в сторону Kubernetes, и для крупных динамичных систем выбирают его. Но для небольших и средних проектов, которым нужна простая отказоустойчивость без огромной сложности, Swarm остаётся практичным: он ставится за минуты, понятен и не требует отдельной команды на обслуживание. Если ваша задача — надёжно разложить несколько сервисов по паре-тройке серверов, Swarm — разумный выбор.
Подготовка серверов и сети
Для кластера нужно минимум два, а лучше три сервера: один или несколько менеджеров и воркеры. Менеджер управляет кластером, воркеры выполняют задачи; на небольших кластерах менеджер тоже несёт нагрузку. Каждой ноде хватает 2 ядер и 2–4 ГБ RAM для старта, дальше — по потребностям сервисов. Поставьте Docker на все ноды:
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
Ноды общаются между собой по нескольким портам, которые нужно открыть в приватной сети кластера: TCP 2377 для управления, TCP и UDP 7946 для обмена между нодами и UDP 4789 для overlay-сетей. Откройте их между нодами:
ufw allow 2377/tcp
ufw allow 7946
ufw allow 4789/udp
Держите ноды в одной локации, чтобы задержки между ними были минимальны — кластер чувствителен к сетевым задержкам. У MAATRIX можно взять несколько VPS в одной локации (RU, US или UK) с оплатой из России картой, СБП или криптой, что удобно для сборки кластера без трансграничного пинга между нодами.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSИнициализация кластера
Кластер создаётся на будущей ноде-менеджере одной командой. Укажите адрес, по которому другие ноды будут к ней подключаться, — это приватный IP менеджера:
docker swarm init --advertise-addr 10.0.0.10
Команда инициализирует Swarm и выведет готовую команду для присоединения воркеров с токеном. Сохраните её. Проверьте, что нода стала менеджером:
docker node ls
docker info | grep Swarm
Строка Swarm: active подтверждает, что режим кластера включён. Пока в кластере одна нода-менеджер. Токены для присоединения можно посмотреть в любой момент — отдельно для воркеров и для дополнительных менеджеров:
docker swarm join-token worker
Присоединение нод-воркеров
На каждой ноде-воркере выполните команду присоединения, которую выдал swarm init. Она содержит токен и адрес менеджера:
docker swarm join --token SWMTKN-1-xxxx 10.0.0.10:2377
Нода подключится к кластеру и станет доступна для размещения задач. Вернитесь на менеджер и убедитесь, что все ноды видны и в статусе Ready:
docker node ls
В списке должны быть все ноды с ролями: менеджер помечен как Leader, воркеры — без роли менеджера. Если нода не появилась, почти всегда причина в закрытых портах между серверами или в неверном адресе менеджера. Для отказоустойчивости самого управления в продакшене держат нечётное число менеджеров (три), чтобы кластер переживал падение одного из них, — но для начала достаточно одного менеджера и нескольких воркеров.
Деплой сервиса с репликами
Теперь запустим сервис в кластере. В отличие от одиночного Docker, здесь мы не запускаем контейнер, а создаём сервис с нужным числом реплик, а Swarm сам раскладывает их по нодам:
docker service create \
--name web \
--replicas 3 \
--publish 80:8080 \
myapp:1.0
Swarm запустит три реплики сервиса, распределив их по доступным нодам, и опубликует порт 80 на всём кластере через встроенную маршрутизацию: запрос на любую ноду попадёт на одну из реплик. Проверьте, как разложились задачи:
docker service ls
docker service ps web
Масштабирование — одна команда. Чтобы увеличить или уменьшить число реплик, задайте новое значение:
docker service scale web=5
Отказоустойчивость проверяется просто: если нода с репликой упадёт, Swarm поднимет недостающую реплику на другой ноде, поддерживая заданное число. Именно это отличает кластер от одиночного сервера — заявленное состояние поддерживается автоматически.
Стеки, overlay-сети и обслуживание
Управлять сервисами по одному неудобно, поэтому в Swarm используют стеки — те же compose-файлы, развёрнутые на кластер целиком. Опишите сервисы в stack.yaml с разделом deploy и разверните одной командой:
docker stack deploy -c stack.yaml myapp
docker stack services myapp
Для связи между сервисами кластера используются overlay-сети — они охватывают все ноды, и сервисы общаются по именам независимо от того, на какой машине запущены реплики. Overlay-сеть создаётся флагом драйвера и подключается к сервисам, обеспечивая прозрачную связность внутри кластера.
Обслуживание сводится к контролю за состоянием нод и обновлениям. Swarm поддерживает плавящее обновление сервисов: при смене образа реплики обновляются по очереди, сохраняя доступность. Следите за здоровьем нод через docker node ls, держите менеджеры в нечётном количестве для надёжности и мониторьте ресурсы. Когда нагрузка растёт, кластер расширяется добавлением новых нод — и здесь удобно, что дополнительные VPS в той же локации у MAATRIX подключаются к кластеру за минуты, с оплатой из России картой или криптой. Так инфраструктура масштабируется горизонтально без смены провайдера и без перехода на более сложные системы, пока в этом нет реальной необходимости.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Чем Docker Swarm проще Kubernetes?
Swarm встроен в Docker, использует привычный синтаксис и compose-файлы, ставится за минуты и не требует отдельной команды на обслуживание — при меньшей гибкости он проще для небольших кластеров.
Сколько серверов нужно для Docker Swarm?
Минимум два, но для реальной отказоустойчивости управления держат три менеджера (нечётное число) плюс воркеры по потребностям.
Как масштабировать сервис в Swarm?
Одной командой docker service scale имя=число — Swarm сам добавит или уберёт реплики и распределит их по нодам.
Как оплатить серверы под Docker Swarm из России?
У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой или токеном MAAT, иностранная карта не нужна.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.