Облачный сервер для Docker Swarm в Европе
Docker Swarm - встроенный режим кластеризации в Docker Engine. Он проще Kubernetes, работает со стандартными файлами docker-compose после небольших правок и представляет практичный путь для команд, которые уже используют Docker, но хотят запускать нагрузки на нескольких хостах.
Если ваша команда переходит с docker-compose на одном сервере к схеме с несколькими хостами, Docker Swarm стоит оценить до того, как брать на себя сложность Kubernetes. А если ваши пользователи в Европе, размещение кластера Swarm в инфраструктуре ЕС - прямой выбор по причинам задержки и соответствия.
Почему хостинг в ЕС важен для Docker Swarm
Docker Swarm распределяет контейнеры по узлам-менеджерам и рабочим узлам через оверлейную сеть. Оверлейная сеть инкапсулирует трафик между узлами, и задержка между ними влияет на то, как быстро сервисы обмениваются данными и насколько надёжно протокол консенсуса Raft держит менеджеры в синхронизации.
Размещение всех узлов Swarm в одном дата-центре ЕС или как минимум в одном регионе даёт задержку между узлами меньше миллисекунды. Облачные инстансы DCXV в одном дата-центре находятся в общей приватной сети, а это именно та схема, которая нужна оверлейной сети Swarm.
Соответствие GDPR - вторая причина размещаться в ЕС. Если сервисы Swarm обрабатывают или хранят персональные данные европейских пользователей, эти данные должны оставаться в юрисдикции ЕС. Европейский облачный провайдер решает это без дополнительных юридических конструкций.
Минимальные требования к серверу
Docker Swarm легче Kubernetes. Узлу-менеджеру не нужен такой запас, а рабочим узлам достаточно ресурсов под назначенные им контейнеры.
Для узлов-менеджеров:
- RAM: минимум 2 ГБ (1 ГБ зарезервирован под ОС и демон Docker)
- CPU: минимум 1 ядро (2 ядра рекомендуются для отзывчивости)
- Диск: 20 ГБ SSD
- Docker Engine: версия 24 или новее
Для рабочих узлов:
- RAM: минимум 2 ГБ на узел (масштабируйте под свои контейнерные нагрузки)
- CPU: минимум 1-2 ядра на узел
- Диск: 20 ГБ SSD на узел
Базовому кластеру Swarm нужен минимум один менеджер и один рабочий узел. Для отказоустойчивости используйте 3 узла-менеджера (Raft требует большинства, поэтому 3 менеджера переживают отказ одного) и столько рабочих узлов, сколько требует нагрузка.
Рекомендуемая конфигурация DCXV
Облачные инстансы DCXV на https://dcxv.com/data-center#cloud начинаются от EUR 15 в месяц. Минимальная схема Docker Swarm с 3 узлами-менеджерами и 2 рабочими узлами хорошо работает на пяти инстансах 2 ГБ RAM / 2 vCPU, что делает расходы предсказуемыми.
Все облачные инстансы DCXV в одном дата-центре соединены приватной сетью с низкой задержкой, на которую опирается оверлейная сеть Docker Swarm. Круглосуточная поддержка инженеров, включённая в каждый инстанс, означает, что есть кому позвонить, когда узел-менеджер отказал и кластер потерял кворум.
Для более крупных парков или нагрузок, которым нужны стабильные гарантии производительности, выделенные серверы DCXV начинаются от EUR 49 в месяц.
Руководство по настройке
Инициализация кластера Docker Swarm на инстансах DCXV:
# На первом узле-менеджере: инициализация swarm
docker swarm init --advertise-addr <manager-private-ip>
# Получить токен присоединения для worker
docker swarm join-token worker
# Получить токен присоединения для manager (для дополнительных узлов-менеджеров)
docker swarm join-token manager
# На каждом дополнительном узле-менеджере: присоединиться как manager
docker swarm join --token <manager-token> <first-manager-ip>:2377
# На каждом рабочем узле: присоединиться к swarm
docker swarm join --token <worker-token> <first-manager-ip>:2377
После инициализации кластера разверните стек из compose-файла:
docker stack deploy -c docker-compose.yml myapp
Ожидаемая производительность
На кластере Docker Swarm из 5 узлов на инстансах 2 ГБ / 2 vCPU (3 менеджера, 2 рабочих узла):
- время запуска сервиса 5-15 секунд для типичных образов контейнеров
- пропускная способность оверлейной сети от 500 Мбит/с до 2 Гбит/с между узлами в одной приватной сети
- обновления консенсуса Raft распространяются между менеджерами менее чем за 50 мс
- плавающие обновления проходят без простоя для сервисов с 2 и более репликами
- кластер такого размера держит 50-200 одновременных сервисов в зависимости от размера контейнерной нагрузки
Docker Swarm хорошо масштабируется горизонтально. Добавление рабочего узла в кластер - одна команда, а планировщик Swarm распределяет контейнеры по узлам автоматически. Командам, для которых Kubernetes слишком сложен на текущем масштабе, Docker Swarm на облачных инстансах в ЕС даёт практичную и поддерживаемую альтернативу.
Это ожидания для оборудования такого класса, а не измерения в нашей собственной лаборатории. Считайте их отправной точкой для расчёта размера и измеряйте свою нагрузку: реальные цифры зависят от ваших данных, запросов и настройки гораздо сильнее, чем от провайдера.
