Как добавить узлы в Docker Swarm

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

Введение

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

Основы Docker Swarm

Что такое Docker Swarm?

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

Ключевые понятия Docker Swarm

  • Узел (Node): Узел — это экземпляр Docker-движка, участвующий в рое. Узлы могут быть менеджерами или рабочими.
  • Узел-менеджер (Manager Node): Узлы-менеджеры отвечают за управление роем, включая планирование задач, поддержание состояния кластера и обработку переключения.
  • Рабочий узел (Worker Node): Рабочие узлы получают и выполняют задачи, распределенные узлами-менеджерами.
  • Сервис (Service): Сервис определяет желаемое состояние набора задач (контейнеров) в рое. Сервисы являются строительными блоками для развертывания приложений в рое.
  • Задача (Task): Задача — это отдельный контейнер, который является частью сервиса и запланирован для выполнения на узле.

Преимущества Docker Swarm

  • Простота: Docker Swarm встроен в Docker-движок, что упрощает настройку и управление.
  • Высокая доступность: Swarm обеспечивает автоматическое распределение нагрузки и переключение, гарантируя высокую доступность ваших приложений.
  • Масштабируемость: Вы можете легко масштабировать свои приложения, добавляя или удаляя узлы в рой.
  • Безопасность: Docker Swarm использует встроенные функции безопасности, такие как шифрование коммуникаций и управление доступом на основе ролей.

Начало работы с Docker Swarm

Для начала работы с Docker Swarm вам необходимо настроить кластер роя. Это включает инициализацию узла-менеджера и добавление рабочих узлов в рой. Давайте рассмотрим пример с использованием Ubuntu 22.04:

## Инициализация роя на узле-менеджере

## Подключение рабочего узла к рою

После настройки роя вы можете начать развертывание своих приложений в качестве сервисов.

Добавление узлов в кластер Docker Swarm

Подключение рабочих узлов к рою

Для добавления рабочих узлов в ваш кластер Docker Swarm можно использовать команду docker swarm join. Эта команда требует токена подключения, который можно получить с узла-менеджера.

На узле-менеджере выполните следующую команду для получения токена подключения:

docker swarm join-token worker

Это выведет команду, которую можно использовать для подключения рабочего узла к рою, например:

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7riia...

Теперь на рабочем узле выполните команду, предоставленную узлом-менеджером, для подключения к рою.

Подключение узлов-менеджеров к рою

Вы также можете добавить узлы-менеджеры в ваш кластер Docker Swarm. Это полезно для повышения отказоустойчивости и высокой доступности вашего роя.

Для добавления нового узла-менеджера выполните следующую команду на новом узле:

docker swarm join --token SWMTKN-1-61ztec9roubhglb7xbc...

Токен для подключения узла-менеджера можно получить с существующего узла-менеджера, используя следующую команду:

docker swarm join-token manager

Проверка статуса узлов

После добавления узлов в рой вы можете использовать команду docker node ls для просмотра статуса всех узлов в кластере. Это покажет вам роль каждого узла (менеджер или рабочий) и его текущий статус.

docker node ls

Это выведет таблицу с информацией о каждом узле в рое.

Удаление узлов из роя

Если вам нужно удалить узел из роя, вы можете использовать команду docker node rm. Например, для удаления рабочего узла:

docker node rm worker-node

Для удаления узла-менеджера вам необходимо сначала понизить его до рабочего узла, а затем удалить:

docker node demote manager-node
docker node rm manager-node

Помните, что планирование удаления узлов должно быть тщательным, так как это может повлиять на доступность и отказоустойчивость вашего роя.

Управление и мониторинг узлов Swarm

Мониторинг узлов Swarm

Для мониторинга состояния и работоспособности узлов Docker Swarm можно использовать следующие команды:

## Список всех узлов в рое
docker node ls

## Просмотр информации о конкретном узле
docker node inspect node-name

## Просмотр метрик узла
docker node ps node-name

Команда docker node ls предоставляет общий обзор всех узлов в вашем рое, включая их роль (менеджер или рабочий), статус и доступность.

Команда docker node inspect предоставляет подробную информацию о конкретном узле, такую как его IP-адрес, ресурсы и метки.

Команда docker node ps позволяет просмотреть запущенные задачи и контейнеры на конкретном узле.

Управление узлами Swarm

Помимо мониторинга, вы также можете управлять узлами в вашем кластере Docker Swarm с помощью различных команд:

## Повышение рабочего узла до менеджера
docker node promote worker-node

## Понижение узла-менеджера до рабочего
docker node demote manager-node

## Обновление меток узла
docker node update --label-add label=value node-name

## Отключение узла (предотвращение планирования новых задач)
docker node update --availability drain node-name

## Возвращение узла в активное состояние
docker node update --availability active node-name

Команды docker node promote и docker node demote позволяют изменить роль узла в рое.

Вы можете использовать команду docker node update для добавления, изменения или удаления меток на узле. Метки могут использоваться для применения определенных ограничений или предпочтений при планировании задач.

Команда docker node update --availability drain позволяет временно вывести узел из работы, предотвращая планирование новых задач на нем. Это может быть полезно для проведения технического обслуживания или обновлений на узле.

Резервное копирование и восстановление состояния Swarm

Важно регулярно создавать резервные копии состояния вашего кластера Docker Swarm, чтобы обеспечить возможность восстановления после любых проблем или сбоев. Вы можете использовать команду docker swarm init --force-new-cluster для инициализации нового роя с использованием данных резервной копии.

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

Резюме

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