Настройка и управление кластерами Docker Swarm

DockerBeginner
Практиковаться сейчас

Введение

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

Основы Docker Swarm

Введение в Docker Swarm

Docker Swarm — это собственное решение для кластеризации и оркестрации контейнеров для сред Docker. Оно позволяет разработчикам создавать и управлять кластером Docker-узлов, превращая несколько хостов Docker в один виртуальный хост Docker.

Основные понятия

Архитектура кластера Swarm

graph TD A[Узел менеджера Swarm] --> B[Рабочий узел 1] A --> C[Рабочий узел 2] A --> D[Рабочий узел 3]

Типы узлов Swarm

Тип узла Описание Ответственность
Узел менеджера Управляет состоянием кластера Оркестрация, планирование
Рабочий узел Выполняет рабочие нагрузки контейнеров Запуск сервисов

Инициализация кластера Swarm

## Инициализация Swarm на главном узле
docker swarm init --advertise-addr 192.168.1.100

## Генерация токена присоединения для рабочих узлов
docker swarm join-token worker

## Присоединение рабочих узлов к кластеру
docker swarm join --token < token > 192.168.1.100:2377

Ключевые особенности

  • Децентрализованная архитектура
  • Декларативная модель сервисов
  • Масштабирование и постепенные обновления
  • Обнаружение сервисов
  • Сбалансировка нагрузки
  • Защищенное общение

Пример развертывания сервиса

## Создание реплицированного сервиса
docker service create --replicas 3 --name web nginx

## Масштабирование сервиса
docker service scale web=5

## Обновление сервиса
docker service update --image nginx:latest web

Настройка кластера

Топология кластера Swarm

graph TD A[Узел менеджера] --> B[Рабочий узел 1] A --> C[Рабочий узел 2] A --> D[Рабочий узел 3]

Стратегии инициализации узлов

Настройка узла менеджера

## Инициализация кластера Swarm на главном узле менеджера
docker swarm init --advertise-addr 192.168.1.100

## Просмотр токенов присоединения к кластеру
docker swarm join-token manager
docker swarm join-token worker

Настройка рабочего узла

## Присоединение рабочего узла к кластеру
docker swarm join \
  --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxx \
  192.168.1.100:2377

Параметры конфигурации кластера

Параметр Описание Значение по умолчанию
Адрес объявления Сетевой интерфейс узла Основной IP-адрес
Порт прослушивания Порт связи Swarm 2377
Метки узла Метаданные для выбора узла Нет

Расширенная настройка кластера

## Добавление пользовательских меток узла
docker node update --label-add type=frontend worker1

## Установка доступности узла
docker node update --availability drain worker2

Настройка сети

## Создание сети overlay
docker network create \
  --driver overlay \
  --subnet 10.0.0.0/24 \
  my-network

Управление сервисами

Рабочий процесс развертывания сервиса

graph LR A[Создать сервис] --> B[Развернуть контейнеры] B --> C[Масштабировать сервис] C --> D[Обновить сервис] D --> E[Мониторить производительность]

Создание базового сервиса

## Развернуть сервис nginx с 3 репликами
docker service create \
  --name web-service \
  --replicas 3 \
  --publish 80:80 \
  nginx:latest

Параметры конфигурации сервиса

Параметр Описание Пример
--replicas Количество экземпляров контейнеров 3
--update-parallelism Параллельные обновления 2
--constraint Правила размещения узлов node.labels.type==frontend

Стратегии масштабирования сервиса

## Динамическое масштабирование сервиса
docker service scale web-service=5

## Горизонтальное масштабирование
docker service update \
  --replicas-max-per-node 2 \
  web-service

Настройка балансировки нагрузки

## Создание сервиса с пользовательской балансировкой нагрузки
docker service create \
  --name api-service \
  --replicas 4 \
  --publish mode=host,target=8080,published=80 \
  --update-delay 10s \
  api-image:latest

Механизмы обновления сервиса

## Стратегия постепенного обновления
docker service update \
  --image nginx:latest \
  --update-parallelism 2 \
  --update-delay 10s \
  web-service

Мониторинг сервиса

## Список активных сервисов
docker service ls

## Просмотр конкретного сервиса
docker service ps web-service

Резюме

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