Начиная с версии Docker 1.12.0, Docker Swarm был включен в движок Docker. Это значит, что для сборки кластера с контейнерами Docker нам не потребуются дополнительные средства и необходимые действия можно сделать не прибегая к установке других пакетов. Рассмотрим процесс подробнее. Мы будем работать на системе Linux.
Предварительная настройка
Инициализация кластера на хосте управления
Подключение к кластеру воркеров
Создание стека с сервисами
Пример полезных команд
Читайте также
Предварительно выполним несколько действий.
Для начала работы достаточно установленного Docker Engine. Ниже на этой странице можно найти ссылку на подробную инструкцию, как это сделать.
Наши узлы должны видеть друг друга по имени. Для этого необходимо создать записи во внутреннем DNS или на каждом сервере открыть файл hosts:
vi /etc/hosts
И добавить записи такого вида:
192.168.100.12 manager
192.168.100.13 worker01
192.168.100.14 worker02
* предполагается, что мы разворачиваем кластер из трех серверов:
Для продуктивной среды лучше не использовать файл hosts — при росте числа нод в кластере процесс управления будет становиться сложнее и менее удобным.
На всех узлах кластера открываем следующие порты:
iptables -I INPUT -p tcp —dport 2376 -j ACCEPT
iptables -I INPUT -p tcp —dport 7946 -j ACCEPT
iptables -I INPUT -p udp —dport 7946 -j ACCEPT
iptables -I INPUT -p udp —dport 4789 -j ACCEPT
Дополнительно на менеджере открываем порт 2377:
iptables -I INPUT -p tcp —dport 2377 -j ACCEPT
* рассмотрим подробнее, за что они отвечают:
На сервере, который будет выступать в роли менеджера вводим команду:
docker swarm init —advertise-addr 192.168.100.12
* где 192.168.100.12 — IP-адрес нашего сервера менеджера.
Команда отработает, довольно, быстро. Мы должны увидеть что-то на подобие:
Swarm initialized: current node (rl5gu1oysyqzjfh3h44cfpscv) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join —token SWMTKN-1-3r0wk9gxu2c3ttr0fjkp3c83qhfwt97h6doqx8n79a7yp1etlq-8vjglkkqmfdqmudi28qhm4k35 192.168.100.12:2377
To add a manager to this swarm, run ‘docker swarm join-token manager’ and follow the instructions.
Наш кластер создан. Токен для подключения новых нод SWMTKN-1-3r0wk9gxu2c3ttr0fjkp3c83qhfwt97h6doqx8n79a7yp1etlq-8vjglkkqmfdqmudi28qhm4k35. Его нужно скопировать и сохранить.
После инициализации менеджера мы увидели команду для присоединения к кластеру нод. Введем ее на наших воркерах:
docker swarm join —token SWMTKN-1-3r0wk9gxu2c3ttr0fjkp3c83qhfwt97h6doqx8n79a7yp1etlq-8vjglkkqmfdqmudi28qhm4k35 192.168.100.12:2377
* где 192.168.100.12 — IP-адрес нашего сервера менеджера.
Мы должны увидеть:
This node joined a swarm as a worker.
Готово — кластер полностью настроен.
Смотрим состояние хостов:
docker node ls
Проверяем, чтобы STATUS был Ready и AVAILABILITY Active :
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
rl5gu1zjfh3h44cfpscv * manager Ready Active Leader
42pae4wzqodipone24o5 worker01 Ready Active
jndx3jrbz7hyj7n16iaz worker02 Ready Active
Давайте попробуем запустить веб-сервер nginx на нашем кластере. Для этого подготовим файл docker-compose с необходимым описанием состояния сервиса.
Для начала, создадим каталог, где будет храниться файл:
mkdir /opt/my_web
Создаем в нем docker-compose:
vi /opt/my_web/docker-compose.yml
version: «3.9»
services:
web_nginx:
image: nginx
container_name: web_nginx
hostname: web_nginx
restart: unless-stopped
environment:
TZ: «Europe/Moscow»
ports:
— 80:80
* в данном примере мы написали небольшое описание запуска сервиса на базе nginx . Подробнее про работу с docker-compose рассказано в одной из инструкций ниже на странице .
Запустим stack (набор контейнеров для осуществления сервиса) с применением файла compose:
docker stack deploy -c /opt/my_web/docker-compose.yml my_web
Мы должны увидеть что-то на подобие:
Creating network my_web_default
Creating service my_web_web_nginx
Посмотреть список запущенных стеков можно командой (запускаем на manager node):
docker stack ls
Мы увидим что-то на подобие:
NAME SERVICES ORCHESTRATOR
my_web 15 Swarm
Список запущенных в стеке сервисов можно получить командой:
docker stack services my_web
Рассмотрим некоторые полезные команды по работе с Docker Swarm.
1. Удаление стека:
docker stack rm my_web
2. Просмотр журнала для конкретного сервиса:
docker service logs my_web_carts
3. Обновить деплой для конкретного сервиса:
docker service update my_web_carts
Другая полезная информация по теме:
1. Установка Docker на Linux .
2. Установка и настройка кластера Kubernetes на Ubuntu Server .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…