opened image

Подключение рабочих узлов к кластеру n8n Docker Swarm: подготовка серверов

 

 

Для масштабируемой инфраструктуры n8n в Docker Swarm необходимо, чтобы рабочие узлы (worker nodes), на которых планируется запускать n8n-worker, были правильно подготовлены. В этом разделе рассмотрим, какие действия нужно выполнить на каждом сервере перед подключением его к кластеру.

 

Что такое рабочий узел?

 

Рабочий узел (worker node) — это дополнительный сервер, подключённый к Swarm-кластеру, который не принимает управленческих решений, но может запускать контейнеры, включая воркеры n8n. В отличие от главного узла (manager), воркер предназначен для распределённой обработки задач и масштабирования.

 

 

Подготовка рабочего узла

 

Перед тем как выполнить команду docker swarm join, на каждом рабочем сервере необходимо:

 

1. Установить Docker Engine

 

apt update
apt install -y ca-certificates curl gnupg lsb-release

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

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



apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 \
  -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose

 

 

2. Включить и запустить Docker

 

systemctl enable --now docker

 

 

3. Проверить состояние Docker

 

docker version
docker info

 

 

4. Открыть необходимые порты (если используется фаервол)

 

Docker Swarm требует открытых сетевых портов между всеми узлами кластера. На всех серверах необходимо разрешить:

 

НазначениеПротоколПорт
Docker Swarm managementTCP2377
Межузловое взаимодействиеTCP/UDP7946
Overlay-сетьUDP4789

 

 

Пример для UFW:

 

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

 

 

5. Присоединить узел к кластеру

 

После выполнения предыдущих шагов выполните команду, на сервере который хотите присоединить, данную команду вы получили при инициализации кластера на главном сервере:

 

sudo docker swarm join --token <TOKEN> <IP_MANAGER>:2377

 

<TOKEN> — уникальный ключ доступа к кластеру

<IP_MANAGER> — IP главного узла

 

 

 

Если вы потеряли команду — её можно повторно получить на менеджере, сервере на котором был развернут n8n:

 

docker swarm join-token worker

 

 

 

 

Проверка подключения

 

docker node ls

 

Вы должны увидеть список узлов кластера, включая новые worker-ноды:

 

 

 

Готово!

 

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

 

docker service scale n8n_n8n-worker=6

 

Swarm автоматически распределит контейнеры по доступным рабочим узлам.

 

 

 

Заключение

 

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

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

 

Разделение ролей между менеджером и воркерами также обеспечивает отказоустойчивость: при падении одного из воркеров, остальные продолжают обработку заданий. Таким образом, внедрение Swarm не просто упрощает масштабирование, но и позволяет строить устойчивые и управляемые DevOps-процессы вокруг платформы n8n.

Не забывайте также о регулярных обновлениях, настройке логирования и бэкапах данных, особенно при использовании внешней базы PostgreSQL и Redis.