Как присоединить рабочий узел к кластеру Docker Swarm

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

Введение

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

Введение в Docker Swarm

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

Что такое Docker Swarm?

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

Основные концепции в Docker Swarm

  1. Swarm (кластер): Swarm - это группа Docker-хостов (физических или виртуальных), на которых запущен Docker Engine и которые объединены в кластер.
  2. Node (узел): Node - это отдельный Docker-хост, входящий в состав Swarm. Узлы могут быть либо Manager (менеджерами), либо Worker (рабочими).
  3. Manager Node (узел-менеджер): Узлы-менеджеры отвечают за управление состоянием Swarm, планирование задач и поддержание желаемого состояния кластера.
  4. Worker Node (рабочий узел): Рабочие узлы отвечают за запуск фактических контейнеров по инструкциям узлов-менеджеров.
  5. 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 убедитесь, что у вас есть следующее:

  1. Не менее двух хостов с Ubuntu 22.04 (физических или виртуальных), на которых установлен Docker Engine.
  2. Доступ по 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, убедитесь, что у вас есть следующее:

  1. Запущенный кластер Docker Swarm с минимум одним узлом-менеджером.
  2. Доступ по 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, чтобы удовлетворить растущие потребности вашего бизнеса.