Связаться по:
[email protected]

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

GlusterFS с кластером Docker swarm

5/5 - (1 голос)

Здесь мы рассмотрим как создать кластер из трех нод Docker Swarm с подключить ко всем нодам общий реплицируемый том на GlusterFS.

Для созданий кластера из Docker хостов, используется Docker Swarm. Особенность в том, что если контейнер А с используемым им томом voltdata запущен на ноде1, то все внесенные изменения сохраняются локально на ноде1. В случае выключения контейнера А, а потом запуска например на ноде3, и подключении тома voldata — данных на хранилище не будет, и не будет тех внесенных изменений, которые были сделаны на ноде1.

Как решить это ограничение?

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

В примере использованы три инстанса AWS EC2, у каждого по тому EBS.

Настройка серверов

На всех серверах установим Ubuntu 16.04

Внесем изменения в /etc/hosts укажем имена нод

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

Перезагрузим сервера и установим нужные пакет для всех нод

выполним запуск сервисов

Далее создаем хранилище GlusterFS

Настройка GlusterFS

Выполним подготовку файловой системы GlusterFS на всех нодах

На node_1

Создание реплицируемого томя

sudo gluster volume create swarm-vols replica 3 node_1:/gluster/data node_2:/gluster/data node_3:/gluster/data force

Дадим разрешения на монтирование только с локального хоста

Выполним запуск тома

Монтируем его для каждой ноды

Настройка Docker swarm

Создадим управляющий узел и два рабочих

Для рабочих узлов получаем токен

На двух рабочих узлах введем команду

sudo docker swarm join --token SWMTKN-1-697xeeiei6wsnsr29ult7num899o5febad143ellqx7mt8avwn-1m7wlh59vunohq45x3g075r2h 172.32.24.235:2377

Выполним проверку swarm кластера

Испытание

Выполним создание меток для node_1 и node_3, и создание контейнера node_1. Затем выключим его, и создадим на node_3, смонтировав такие же томаи проверим остались файлы, которые были созданы при работе на node_1

Установка меток

Проверяем

Создаем докер на node_1 для тестирования общего хранилища

sudo docker service create --name testcon --constraint 'node.labels.nodename == node1' --mount type=bind,source=/swarm/volumes/testvol,target=/mnt/testvol /bin/touch /mnt/testvol/testfile1.txt

Проверяем

Проверим, что запущен на первой ноде

Проверим монтирование томов

Выключаем и создаем на третьей ноде

Проверяем где запущен

В результате мы увидим, что файлы созданные в разных контейнерах, хранятся в одном хранилище

Нужна установка, настройка или поддержка docker? Обращайтесь [email protected]

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.