Введение
В этом руководстве вы узнаете, как присоединить рабочий узел к кластеру Docker Swarm. После прочтения этой статьи вы будете знать, как настроить и управлять средой Docker Swarm, а также как без труда добавлять новые узлы в кластер для масштабирования контейнеризованных приложений.
Введение в Docker Swarm
Docker Swarm - это встроенное решение для кластеризации и оркестрации Docker-контейнеров. Оно позволяет управлять группой Docker-хостов и развертывать приложения на них, обеспечивая высокую доступность, балансировку нагрузки и масштабируемость.
Что такое Docker Swarm?
Docker Swarm - это встроенная функция Docker Engine, которая позволяет объединить несколько Docker-хостов в один виртуальный Docker-хост. Это позволяет управлять и масштабировать контейнеризованные приложения на нескольких хостах, обеспечивая отказоустойчивость и высокую доступность.
Основные концепции в Docker Swarm
- Swarm (кластер): Swarm - это группа Docker-хостов (физических или виртуальных), на которых запущен Docker Engine и которые объединены в кластер.
- Node (узел): Node - это отдельный Docker-хост, входящий в состав Swarm. Узлы могут быть либо Manager (менеджерами), либо Worker (рабочими).
- Manager Node (узел-менеджер): Узлы-менеджеры отвечают за управление состоянием Swarm, планирование задач и поддержание желаемого состояния кластера.
- Worker Node (рабочий узел): Рабочие узлы отвечают за запуск фактических контейнеров по инструкциям узлов-менеджеров.
- Service (сервис): Service - это декларативный способ определения того, как приложение должно быть развернуто и масштабировано в рамках Swarm.
graph TD
A[Docker Host] --> B[Docker Host]
B[Docker Host] --> C[Docker Host]
C[Docker Host] --> D[Docker Host]
D[Docker Host] --> A[Docker Host]
A --- E[Manager Node]
B --- F[Worker Node]
C --- G[Worker Node]
D --- H[Worker Node]
Преимущества Docker Swarm
- Высокая доступность: Docker Swarm обеспечивает автоматическую балансировку нагрузки и отработку отказов, гарантируя высокую доступность ваших приложений.
- Масштабируемость: Вы можете легко масштабировать свои приложения вверх или вниз, добавляя или удаляя узлы из Swarm.
- Простота: Docker Swarm - это встроенная функция Docker Engine, что делает ее простой в настройке и управлении.
- Интеграция: Docker Swarm без труда интегрируется с другими инструментами и службами Docker, такими как Docker Compose и Docker Registry.
Настройка кластера Docker Swarm
Предварительные требования
Перед настройкой кластера Docker Swarm убедитесь, что у вас есть следующее:
- Не менее двух хостов с Ubuntu 22.04 (физических или виртуальных), на которых установлен Docker Engine.
- Доступ по SSH к хостам.
Шаг 1: Инициализация Swarm
На одном из хостов выполните следующую команду для инициализации Swarm:
docker swarm init --advertise-addr <HOST_IP_ADDRESS>
Замените <HOST_IP_ADDRESS> на IP-адрес хоста.
Эта команда выведет токен присоединения, который вы будете использовать для добавления других узлов в Swarm.
Шаг 2: Добавление рабочих узлов в Swarm
На других хостах выполните команду, полученную на предыдущем шаге, чтобы присоединиться к Swarm как рабочий узел:
docker swarm join --token <TOKEN> <HOST_IP_ADDRESS>:2377
Замените <TOKEN> на токен, полученный при инициализации Swarm, и <HOST_IP_ADDRESS> на IP-адрес узла-менеджера.
Шаг 3: Проверка Swarm
Выполните следующую команду на узле-менеджере, чтобы просмотреть узлы в Swarm:
docker node ls
В выводе должны отобразиться узел-менеджер и рабочие узлы.
Шаг 4: Развертывание сервиса
Чтобы проверить настройку Swarm, разверните простой сервис:
docker service create --name nginx --publish 80:80 nginx
Это создаст сервис с именем "nginx" и развернет его в рамках Swarm.
graph TD
A[Manager Node] --> B[Worker Node]
B[Worker Node] --> C[Worker Node]
C[Worker Node] --> A[Manager Node]
A -- "docker swarm init" --> D[Swarm]
B -- "docker swarm join" --> D[Swarm]
C -- "docker swarm join" --> D[Swarm]
D -- "docker service create" --> E[Nginx Service]
Присоединение рабочего узла к Swarm
Предварительные требования
Перед тем как присоединить рабочий узел к Swarm, убедитесь, что у вас есть следующее:
- Запущенный кластер Docker Swarm с минимум одним узлом-менеджером.
- Доступ по SSH к хосту, который вы хотите присоединить как рабочий узел.
Шаг 1: Получение команды присоединения
На узле-менеджере выполните следующую команду, чтобы получить команду присоединения для рабочего узла:
docker swarm join-token worker
В результате будет выведена команда, похожая на следующую:
docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377
Шаг 2: Присоединение к Swarm как рабочий узел
На хосте, который вы хотите присоединить как рабочий узел, выполните команду, полученную на предыдущем шаге:
docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377
После этого хост присоединится к Swarm как рабочий узел.
Шаг 3: Проверка присоединения узла к Swarm
На узле-менеджере выполните следующую команду, чтобы вывести список узлов в Swarm:
docker node ls
В выводе вы должны увидеть новый рабочий узел.
graph TD
A[Manager Node] --> B[Worker Node]
B[Worker Node] --> C[Worker Node]
C[Worker Node] --> A[Manager Node]
A -- "docker swarm join-token worker" --> D[Join Command]
B -- "docker swarm join" --> A[Manager Node]
Следуя этим шагам, вы можете легко присоединить новый рабочий узел к вашему кластеру Docker Swarm, расширив емкость и устойчивость ваших контейнеризованных приложений.
Резюме
В этом руководстве по Docker вы узнали, как настроить кластер Docker Swarm и присоединить к нему рабочий узел. Добавляя новые узлы в свой Swarm, вы можете легко масштабировать свои приложения на основе Docker и создать высокодоступную распределенную среду. С учетом знаний, полученных из этого руководства, вы теперь можете уверенно управлять и расширять свою инфраструктуру Docker Swarm, чтобы удовлетворить растущие потребности вашего бизнеса.



