Как управлять большим количеством контейнеров с помощью Docker Swarm

kak upravlyat bolshim kolichestvom kontejnerov s pomoshhyu docker swarm?v=1656618135

от Нолан Грейс

-bM6Oas90jZXdx8ll25mlKQPunSHLtkyUSCe

Масштабирование за пределы одного сервера – важная функция для понимания контейнеров. Когда вы начинаете использовать контейнеры для облегчения масштабирования программы, все становится действительно интересным. Представьте, что вы используете контейнеры Docker для разработки и тестирования. Теперь вы готовы к прямому эфиру.

Как вы можете убедиться, что у вашей программы достаточно ресурсов? Если вы станете вирусным, как вы будете масштабироваться?

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

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

Что такое Docker?
Запуск вашего первого контейнера
Создание вашего первого Dockerfile
Создание своего первого имиджа
Перемещение мимо одного контейнера

Возвращайтесь сюда, когда почувствуете, что будете готовы.

Lgg-h5hp0KgtrcuhueqFiFCciZwSoGRff0m7

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

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

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

Начало роя

Для начала необходимо установить Docker-CE. Чтобы помочь установить Docker на вашем компьютере, просмотрите сайт Docker-CE.

После того, как вы успешно установили Docker, запустите свой первый Docker Swarm так же легко, как запустить одну команду. Откройте терминал или командную строку и запустите команду ниже.

> docker swarm init

Вы сделали это! Вы запускаете свой первый Swarm.

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

Другой вариант – раскрутить свой кластер Rancher. После того как вы настроите Rancher, вы можете позволить ему выполнять трудную работу за вас. Rancher – это сервис, которым я пользуюсь, когда исследую особенности разных оркестраторов контейнеров. Rancher позволяет легко раскрутить кластер машин и запустить оркестратор контейнеров по вашему выбору. Rancher имеет хорошую и интерактивную веб-панель, которая позволяет легко запускать разные оркестраторы, включая Swarm, Mesos или Kubernetes.

Вы можете найти информацию о начале работы с Rancher и использования Rancher для создания роя в документации Rancher.

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

Развернуть в Swarm

Теперь, когда ваш рой работает, давайте начнем несколько контейнеров! Если вы знакомы с Docker, развертывание в Docker Swarm должно быть простым. Команды, используемые для развертывания служб и стеков для Docker-CE, представляют собой те же команды, которые используются для Docker Swarm.

Чтобы развернуть образ докера pintail-whoami, выполните следующую команду.

> docker service create --name pintail-whoami -p 80:80 pintailai/pintail-whoami:0.0.1

Откройте свои браузеры и перейдите к и вы должны увидеть страницу ниже.

9EnRZmrQVM5uRjhsnB81zMyOFurWzZD62YAM

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

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

Итак, как получить доступ к службе, которую можно запустить в любом месте вашего кластера?

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

9hagYkC57mS2Ne9YCDAKnqUOHXPKPXfH0Z7z

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

В реальном мире, если у вас есть веб-приложение и Rest API, вы можете развернуть веб-приложение на порту 80, а свой API – на 8080. С помощью этой конфигурации вы можете масштабировать количество контейнеров, на которых работают разные части вашего приложения. Но вы всегда можете быть уверены, что порт 80 на любом узле в кластере Swarm переведет вас на веб-сайт, а порт 8080 – к Rest API.

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

Масштабирование вашего сервиса

Теперь, когда у нас запущена служба, давайте немного расширим дело!

Представьте, что вы запускаете свой веб-сайт на Docker Swarm в производстве и ваш сайт начинает популярно в Hacker News. Ваш трафик утраивается, и вам нужно справиться с дополнительной нагрузкой. Чтобы утроить количество используемых контейнеров, просто выполните команду ниже:

> docker service scale pintail-whoami_pintail-whoami=3

Presto! Docker Swarm масштабирует количество запускаемых реплик и маршрутизирует трафик в контейнеры. После завершения приведенной выше команды вернитесь в «Пример докера Pintail.ai» в своем браузере и нажмите кнопку «Обновить» несколько раз. Вы должны увидеть, как изменяется номер, когда сетка маршрутизации переведет вас в разные контейнеры.

Swarm облегчает масштабирование услуг, поэтому вы можете беспокоиться о больших проблемах.

Убирать

Теперь давайте уберем наши контейнеры и рой.

Чтобы удалить стек pintail-whoami, запустите

> docker stack rm pintail-whoami

Будьте осторожны со следующей командой. Если вы запускаете что-нибудь другое в рою, оно будет удалено.

Чтобы удалить кластер Swarm, запустите

> docker swarm leave --force

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован.