Введение
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.



