Для масштабируемой инфраструктуры 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 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/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.