Для масштабируемой инфраструктуры 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 docker3. Проверить состояние Docker
docker version
docker info4. Открыть необходимые порты (если используется фаервол)
Docker Swarm требует открытых сетевых портов между всеми узлами кластера. На всех серверах необходимо разрешить:
| Назначение | Протокол | Порт |
|---|---|---|
| Docker Swarm management | TCP | 2377 |
| Межузловое взаимодействие | TCP/UDP | 7946 |
| Overlay-сеть | UDP | 4789 |
Пример для UFW:
sudo ufw allow 2377/tcp
sudo ufw allow 7946/tcp
sudo ufw allow 7946/udp
sudo ufw allow 4789/udp5. Присоединить узел к кластеру
После выполнения предыдущих шагов выполните команду, на сервере который хотите присоединить, данную команду вы получили при инициализации кластера на главном сервере:
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.