Для развертывания сервиса Docker Swarm необходимо: 3 сервера, физические или виртуальные. Конфигурация от 4 CPU Core, 4 Gb RAM для manage node; от 2 CPU Core, 2 Gb RAM для worker node. Для уменьшения количества сетевых задержек скорость сети должна быть от 1 Гбит\с. Объем и состав хранилища данных зависит от используемой полезной нагрузки. Рекомендовано использовать SSD-диски или HDD, но в конфигурации RAID-массива с ускорением чтения и записи.
В данной инструкции для развертывания сервиса использовалась ОС Ubuntu версии 22 и 20.
В файлы “/etc/hosts” на каждом сервере необходимо внести данные о всех нодах в кластере:
192.168.1.10 manager.esit.info manager 192.168.1.11 worker-01.esit.info worker-01 192.168.1.12 worker-02.esit.info worker-02
На все ноды кластера необходимо установить Docker.
- Устанавливаем зависимости:
sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common lsb-release
- Добавляем репозиторий и ключ безопасности к нему:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- Обновляем индекс репозитория и устанавливаем необходимый пакет:
sudo apt update apt install docker-ce
- Проверяем запустился ли Docker:
systemctl status docker
- Добавляем текущего пользователя в группу Docker при необходимости создаем её:
groupadd docker && sudo usermod -aG docker dockeruser
Создание кластера Docker Swarm
Настраиваем ноду управления (manager node)
- Устанавливаем зависимости:
sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common lsb-release
- Добавляем репозиторий и ключ безопасности к нему:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- Выполняем команду, указываем IP-адрес на котором будет работать нода управления:
sudo docker swarm init --advertise-addr 192.168.1.10
- В выводе будет указана команда, которую необходимо выбрать на вычислительных нодах для подключения их к кластеру:
sudo docker swarm join --token SWMTKN-1-254kasxcthd74z8fajb5c1u6jyz6qfk4ood8u4qotw7go9jj0p-ertgb7omy86xcgoh45vau2kaj 192.168.1.10:2377
Подключаем вычислительные ноды (worker node)
- Выполняем команду из предыдущего пункта на всех вычислительных нодах, которые необходимо подключить. Далее проверяем все ли ноды корректно добавились в кластер, выполняем команду:
docker node ls
- Если в выводе команды присутствуют все ноды и статус Ready значит все в порядке. Разворачивать приложения в Swarm можно через командную строку или через docker-compose файл:
docker stack deploy --compose-file docker-compose.yml stackdemo docker service create --name web-server --publish 8080:80 nginx:1.13-alpine
Репликация и масштабирование
docker service scale web-server=3 — web-server из предыдущего пункта будет запущен на всех нодах. Количество реплик будет увеличено до 3. Проверяем через docker service ls.
Настройку и поддержку Docker Swarm мы осуществляем в рамках DevOps-аутсорсинга!