Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

SWARM_CLUSTER_INIT Linux / DevOps

Развертывание Docker Swarm: инициализация нод, Ingress-сеть и Docker Secrets

Обновлено: 21.08.2026
  • Необходимость оркестрации нескольких Docker-хостов без накладных расходов Kubernetes.
  • Ошибки синхронизации Raft-консенсуса между управляющими менеджерами Swarm.
  • Проблемы с маршрутизацией входящего трафика через встроенный Ingress Routing Mesh.
  • Небезопасное хранение паролей и SSL-сертификатов в открытом виде в переменных окружения.

1. Инициализация первичного Swarm Manager

docker swarm init --advertise-addr 192.168.1.10 --data-path-port=4789

2. Добавление Worker и дополнительных Manager нод

Получите токен для подключения:

# Токен для воркеров
docker swarm join-token worker

# Токен для менеджеров (кворум Raft)
docker swarm join-token manager

Выполните команду на подключаемом сервере:

docker swarm join --token SWMTKN-1-xxx 192.168.1.10:2377

3. Создание шифрованной Overlay сети

docker network create \
  --driver overlay \
  --opt encrypted \
  --attachable \
  production_overlay

4. Безопасная работа с Docker Secrets

# Создание секрета из файла или потока stdin
echo "MyUltraSecretDBPassword_2024" | docker secret create db_root_password -

5. Развертывание сервиса через Docker Stack

Создайте файл stack.yml:

version: "3.8"
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    networks:
      - production_overlay
    secrets:
      - db_root_password
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
        order: start-first
      restart_policy:
        condition: on-failure

secrets:
  db_root_password:
    external: true

networks:
  production_overlay:
    external: true

Запустите стек в кластере:

docker stack deploy -c stack.yml prod_infra
💡 Практика специалистов: Для корректной работы Ingress и Overlay сетей откройте на файрволе следующие порты: TCP 2377 (кластерное управление), TCP/UDP 7946 (node discovery), UDP 4789 (VXLAN data traffic) и протокол IP 50 (ESP для шифрования).

Частые вопросы (FAQ)

Какое количество Manager-нод считается оптимальным?

Для обеспечения кворума Raft требуется нечетное число менеджеров: 3 менеджера (допускается потеря 1) или 5 менеджеров (допускается потеря 2). Четное количество узлов снижает отказоустойчивость.

Куда монтируются Docker Secrets внутри контейнера?

Секреты монтируются в оперативную память контейнера (tmpfs) по пути /run/secrets/<secret_name> в расшифрованном виде и не сохраняются на дисковый накопитель.

Полезные материалы
Рекомендуем