Введение в Docker Swarm Architecture
Docker Swarm - это инструмент кластеризации и оркестровки для контейнеров, который встроен в Docker Engine для распределенной системы, включающей сотни контейнеров. Docker Node, Docker Services и задачи Docker являются ключевыми компонентами архитектуры Docker Swarm.
- Docker Node: это экземпляр Docker Engine, включенный в рой Docker, имеет два вида:
- Узел диспетчера: отвечает за все задачи оркестровки и управления контейнерами, необходимые для поддержания системы в требуемом состоянии, такие как поддержание состояния кластера, планирование служб и обслуживание конечных точек HTTP в режиме роя.
- Docker Service: определение задачи, которое необходимо выполнить.
Типичная архитектура Docker Swarm
Ниже приведены пункты для типичной архитектуры Docker Swarm:
- Узел является ключевым членом архитектуры Docker Swarm, архитектура Swarm может иметь более одного узла менеджера, возглавляемого одним узлом менеджера, выбранным с использованием алгоритма Raft, узел менеджера также может работать как рабочий узел, но может быть настроен для работы в качестве менеджера узел тоже.
- Узлы диспетчера используют согласованный алгоритм Рафта для внутреннего управления состоянием кластера. Это необходимо для того, чтобы все управляющие узлы, которые планируют и управляют задачами в кластере, поддерживали / хранили согласованное состояние.
- Рой - это кластер Docker Engines или узлов, где мы развертываем наши сервисы. На ранней стадии Docker разработал систему управления кластером с протоколом связи, известным как Beam. Позже они добавили больше API и переименовали его в swarm. Рой первого поколения называется «рой v1».
Рабочий процесс Docker Swarm
Рабочий процесс Docker Swarm состоит из понимания того, как узлы и сервисы работают в архитектуре Docker Swarm:
Шаг 1: Первый шаг заключается в создании набора Docker-машины, который будет действовать как узел в Docker Swarm , один из этих узлов будет менеджером, остальные узлы будут действовать как рабочие узлы. Чтобы создать Docker-машину, используйте команду в Windows, запустите Docker Terminal.
docker-machine create –driver hyperv manager1
- Где 'manager1' - это имя докера-машины, чтобы вывести список машин и их запуск соответственно.
docker-machine ls
docker-machine ip manager1
Шаг 2: Второй шаг - создание рабочих машин. Используйте команду ниже, чтобы создать столько рабочих машин, сколько вам нужно, здесь давайте создадим 3 рабочих.
docker-machine create –driver hyperv worker1
docker-machine create –driver hyperv worker2
docker-machine create –driver hyperv worker3
- Мы можем подключиться к менеджеру или работнику с помощью приведенной ниже команды, которая поможет вам проникнуть внутрь машины.
docker-machine ssh manager1/worker1
Шаг 3: Шаг третий - инициализация роя докеров, мы должны запустить эту команду на машине, на которой мы хотим работать в качестве менеджера, то есть, как мы создаем менеджер узлов, мы также можем добавить больше менеджеров.
docker-machine ssh manager1
docker swarm init –advertise-and Manager1 IP
Шаг 4: Шаг четвертый - присоединить рабочие узлы к рою, получить команду присоединения к узлу в качестве рабочего, используя приведенную ниже команду на машине менеджера, и выполнить команду, полученную на рабочей машине, которую вы хотите сделать работником.
Docker swarm join-token worker1
- Чтобы проверить, присоединен ли рабочий к рою или нет, перейдите к машине менеджера и выполните команду, он перечислит добавленную рабочую машину с подробностями менеджера.
docker-machine ls
Шаг 5: Шаг пятый - запустить стандартные команды докера на менеджере.
docker info (fetches details about docker swarm)
docker swarm (commands that can run on docker swarm such as join, leave, update, init and unlock etc)
Шаг 6: Шаг шестой - запустить Docker-контейнеры на Docker Swarm, мы можем создать любой сервис и его реплики. Зайдите на ub.docker.com, войдите в систему и перейдите к исследованию депозитариев, мы можем увидеть различные изображения, которые являются движками, например, nginx (он работает на веб-сервере) создает сервис, и его реплика использует команду ниже на менеджере.
docker service create –replicas 3 -p 80:80 –name sample nginx
- Где 'sample' - это имя службы, а 80 - порт, который используется для проверки состояния команды запуска службы ниже на узле менеджера.
docker service ls
docker service ps sample
Проверьте службу, работающую на всех узлах, а также проверьте в браузере, задав IP для всех узлов.
Шаг 7: Шаг седьмой, теперь мы можем увидеть фактическое использование Docker Swarm, где мы масштабируем сервис вверх и вниз. Для масштабирования службы выполните следующую команду на машине менеджера
docker service scale sample=4
- Приведенная выше команда заставит пример службы работать на 4 узлах, даже если все узлы заняты, она создаст другую службу для менеджера или рабочего. Подобным образом мы можем уменьшить сервис.
docker service scale sample=2
- Мы также можем проверить узел, чтобы получить подробную информацию о том, сколько и какая служба запущена на узле, выполнив следующие команды на узле менеджера.
docker node inspect worker1/manager1
docker node inspect self
Шаг 8: Шаг восемь - обновить сервис, когда сервис работает на нескольких машинах, и если мы хотим обновить сервис, он очень прост и прост, например, если мы хотим обновить версию сервиса nginx.
docker service update –image nginx:1.14.0 sample
Шаг 9: выключение / остановка / удаление.
- Чтобы закрыть любой конкретный узел, используйте команду ниже, которая изменяет статус узла на «сток».
docker node update –availability drain worker1
- Удалить сервис со всех машин.
docker service rm sample
- Оставить рой, который меняет статус «вниз».
docker swarm leave
- Чтобы остановить машину (запускать из док-терминала, а не из менеджера или рабочего компьютера).
docker-machine stop worker1
docker-machine rm worker1
Преимущества Docker Swarm Architecture
Ниже приведены пункты, демонстрирующие преимущества Docker Swarm Architecture:
- Децентрализованный дизайн: мы можем управлять скоплениями роя с помощью команды роя. Это дает единственную точку доступа для создания целого роя.
- Это очень просто по сравнению с Kubernetes.
- Высокая доступность: среди узлов, доступных в Swarm, если мастер выйдет из строя, другой рабочий узел получит дополнительную плату.
- Согласование требуемого состояния: менеджер роя отслеживает состояние кластера, поэтому требуемое и фактическое состояние всегда совпадают.
- Когда мы указываем через сеть для подключения к вашим услугам, менеджер роя назначает адреса контейнеру в оверлейной сети, как только мы создаем / обновляем контейнеры
- Скользящие обновления: Сервисные обновления могут выполняться постепенно. Менеджер роя позволяет вам указать задержку между каждым обновлением без простоев.
Вывод
Docker Swarm - это простой инструмент вместо больших инструментов, которые выполняют эту задачу. Docker с Swarm обеспечивает необходимую нам оркестровку, его легко настроить и поставить натив с движком Docker, который мы собираемся установить и использовать в любом случае.
Рекомендуемые статьи
Это руководство по Docker Swarm Architecture. Здесь мы обсудим, как узлы и сервисы работают в архитектуре Docker Swarm с их преимуществами. Вы также можете просмотреть другие наши статьи, чтобы узнать больше -
- Docker Architecture
- Что такое Docker Swarm?
- Рой Интеллектуальные Приложения
- Помогает ли Swarm Technology расти гибким командам?