🐳 Как установить Docker Swarm на Ubuntu 20.04

by itisgood
Docker swarm – это инструмент, используемый для создания кластера хостов Docker.
С помощью docker swarm мы можем создать высокодоступный и высокопроизводительный кластер, в котором приложения распределяются между хостами.
Docker swarm состоит из ноды manager и нод worker, а операции выполняются из менеджера.
В этом руководстве мы рассмотрим, как настроить кластер Docker Swarm на Ubuntu 20.04.

Шаг 1: Подготовьте свои ноды

В моей настройке у меня есть один управляющий узел ( manager ) и два рабочих узла (worker).

На каждом хосте настройте файл hosts, чтобы включить все остальные узлы.

sudo vim /etc/hosts

Добавьте в файл следующий контент

192.168.1.10	manager
192.168.1.11	worker-01
192.168.1.12	worker-02
Сохраните файл.
Убедитесь, что вы можете пинговать все хосты с каждого хоста, используя имя хоста, а не IP-адрес.

Шаг 2: Установка Docker CE на Ubuntu 20.04

Мы собираемся установить Docker CE на все хосты.

Чтобы установить Docker CE в Ubuntu 20.04, выполните следующие действия:

Установите пакеты зависимостей с помощью следующей команды

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Добавьте ключ и репозиторий Docker на свои хосты с помощью следующих команд:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Обновим пакеты:

sudo apt-get update
Убедитесь, что вы собираетесь установить пакеты из официального репозитория Docker вместо репозитория Ubuntu по умолчанию.
$ apt-cache policy docker-ce
docker-ce: 
 Installed: (none) 
 Candidate: 5:19.03.13~3-0~ubuntu-focal 
 Version table: 
    5:19.03.13~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 
    5:19.03.12~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 
    5:19.03.11~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 
    5:19.03.10~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 
    5:19.03.9~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Package

Установим Docker CE на Ubuntu 20.04

sudo apt install docker-ce
После установки должен быть запущен демон Docker.
Подтвердите статус, выполнив следующую команду:
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine 
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) 
    Active: active (running) since Sat 2020-10-17 16:28:08 EAT; 57s ago 
TriggeredBy: ● docker.socket 
      Docs: https://docs.docker.com 
  Main PID: 2807 (dockerd) 
     Tasks: 8 
    Memory: 37.5M 
    CGroup: /system.slice/docker.service 
            └─2807 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Добавьте своего пользователя в группу Docker, чтобы не вводить sudo каждый раз, когда вы запускаете команды Docker.

sudo usermod -aG docker ${USER}

Шаг 3. Создайте кластер Docker Swarm

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

Выполните приведенную ниже команду, чтобы инициализировать узел Docker Swarm на ноде менеджера:

$ sudo docker swarm init --advertise-addr 192.168.1.10

Swarm initialized: current node (fsuaqqpihi2eabmmq8gldzhpv) is now a manager. 
To add a worker to this swarm, run the following command: 
sudo docker swarm join --token SWMTKN-1-018kvdektwa74z8fajb5c1u6jyz6qfk4ood8u4qotw7go9jj0p-cfpnh7omy86xcgoh45vau2kaj 192.168.1.10:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Теперь мы собираемся добавить узлы «worker-01» и worker-02 в кластер, используя «join-token» из узла «manager» кластера.

Запустите команду, показанную в выходных данных команды init.

$ sudo docker swarm join --token SWMTKN-1-13xo81gxpb3ttjh5e335pfrmz9fbnliikgfys7u8l4r8k4m575-2gsjwjs3y1i4kgeua2yu840hw 192.168.1.10:2377 
This node joined a swarm as a worker.

Убедитесь, что воркер ноды успешно добавлены в кластер, выполнив следующую команду на менеджере:

$ sudo docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION 
etx5xc5guzftmsqx4naqwvump     worker-02           Ready               Active                                  19.03.13 
xop4jvrkywz4ldsgwqmfacssc *   manager             Ready               Active              Leader              19.03.13 
bghrkp7ll1b9lb0ikv8x51gzy     worker-01           Ready      

Шаг 4: Разверните приложение в кластере

Давайте создадим  веб-сервер Nginx для работы на http-порте 80 по умолчанию, а затем предоставим ему порт 8080 на хосте.

$ sudo docker service create --name web-server --publish 8080:80 nginx:1.13-alpine
pq5txw0p9c1qcjrrl2lw3mh5p 
overall progress: 1 out of 1 tasks  
1/1: running   [==================================================>]  
verify: Service converged 

Подтвердите созданную службу, выполнив следующую команду:

$ sudo docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
pq5txw0p9c1q        web-server          replicated          1/1                 nginx:1.13-alpine   *:8080->80/tcp

Шаг 5: Реплики и масштабирование службы.

Мы собираемся сделать 3 реплики службы веб-сервера, чтобы она была доступна для менеджера и двух рабочих узлов.

$sudo docker service scale web-server=3
web-server scaled to 3 
overall progress: 3 out of 3 tasks  
1/3: running   [==================================================>]  
2/3: running   [==================================================>]  
3/3: running   [==================================================>]  
verify: Service converged 

Подтвердите созданные реплики службы

$ sudo docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS 
pq5txw0p9c1q        web-server          replicated          3/3                 nginx:1.13-alpine   *:8080->80/tcp
Получите доступ к службе из своего браузера, используя IP-адреса всех узлов: http://192.168.1.10:8080, http://192.168.1.11:8080 и http://192.168.1.12:8080, и вы должны увидеть страницу приветствия nginx!
Это было пошаговое руководство по настройке Docker Swarm в Ubuntu 20.04!

You may also like

Leave a Comment