Настройка GlusterFS в Astra Linux

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: GlusterFSAstra Linux.

В инструкции будет рассмотрен пример создания кластера GlusterFS. Нами будут использоваться 3 сервера:

  • server1: 192.168.0.10.
  • server2: 192.168.0.11.
  • server3: 192.168.0.12.

В качестве операционной системы используется Astra Linux. Также инструкция подойдет для Debian или Ubuntu.

Предварительная настройка

Подготовим наши серверы к развертыванию и настройке GlusterFS.

1. Установка curl

Обновляем кэш репозиториев:

apt update

Устанавливаем curl:

apt install curl

* данный пакет позволяет выполнять запросы по сети, в частности, для загрузки файлов.

2. Настройка брандмауэра

По умолчанию, в системах Linux на базе Deb брандмауэр работает в режиме «пропустить все». Но если в нашей системе он используется и блокирует соединения, нам необходимо открыть следующие порты:

  • 24007 — обработка запросов сервисом glusterfsd.
  • 24008 — порт управления.
  • 49152-49156 — порты кирпичиков (brick), которые являются единицей хранения GlusterFS. На каждый кирпич свой порт. В данном примере мы открыли портов с небольшим запасом.

Вводим команды:

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24008 -j ACCEPT

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 49152:49156 -j ACCEPT

Для сохранения правил используем iptables-persistent:

apt install iptables-persistent

netfilter-persistent save

Установка GlusterFS

Для установки самой актуальной версии GlusterFS мы воспользуемся официальным источником пакетов. Выполняем данные команды на всех серверах кластера.

В штатном источнике пакетов Linux уже может быть GlusterFS. При желании, можно пропустить часть с настройкой репозитория и перейти к установке.

Настройка репозитория

Скачиваем и устанавливаем ключ репозитория glusterfs:

curl -fsSL https://download.gluster.org/pub/gluster/glusterfs/9/rsa.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/gluster.gpg

В репозитории glusterfs нет отдельного дистрибутива для Astra Linux, поэтому нам нужно выполнить установку репозитория для Debian. Для этого нам нужно правильно сопоставить нашу версию Astra Linux с версией последнего. В зависимости от редакции системы, используем одну из двух страниц официального источника:

1. Таблица вариантов исполнения Astra Linux Special Edition.

2. Таблица вариантов исполнения Astra Linux Common Edition.

Например, если мы используем Astra Linux SE 1.7, то ей будет соответствовать версия Debian Buster.

Для удобства, создадим переменную, значением которой будет сопоставленная версия:

export DEB_VERSION=buster

Теперь создадим файл с настройками репозитория:

echo "deb [signed-by=/etc/apt/trusted.gpg.d/gluster.gpg] https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/${DEB_VERSION}/amd64/apt ${DEB_VERSION} main" > /etc/apt/sources.list.d/gluster.list

* команда запишет строку доступа к репозиторию glusterfs, подставив значение из созданной переменной. Результат будет сохранен в файле /etc/apt/sources.list.d/gluster.list.

Обновляем кэш репозиториев:

apt update

Установка glusterfs

Вводим команду:

apt install glusterfs-server

Разрешаем сервис glusterd и стартуем его:

systemctl enable glusterd

systemctl start glusterd

В зависимости от версии Astra Linux, сервис может называться glusterfs-server. Тогда команды будут следующие:

systemctl enable glusterfs-server

systemctl start glusterfs-server

Проверяем статус:

systemctl status glusterd

Или:

systemctl status glusterfs-server

GlusterFS установлена.

Подготовка диска

Предположим, что на всех трех серверах у нас есть диск /dev/sdb, который мы хотим задействовать под нужды GlusterFS.

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

export DISK_NAME=sdb

Зачистим диск

wipefs --all --force /dev/${DISK_NAME}

* утилита wipefs зачистит все метаданные диска.

Создадим файловую систему:

mkfs.xfs -i size=512 /dev/${DISK_NAME}

* в данном примере, файловая система xfs с размером индексного дескриптора 512 байт. Данные параметры указаны в официальной документации GlusterFS.

Создадим каталог для хранения brick:

mkdir -p /data/brick1

brick (или кирпич) — это единица хранения GlusterFS. По сути, обычный каталог с обычной файловой системой, где будут размещены служебные данные.

Посмотрим идентификаторы дисков на всех серверах, которые будут использоваться для построения GlusterFS:

blkid | grep ${DISK_NAME}

Теперь откроем файл:

vi /etc/fstab

И добавим информацию для автоматического монтирования диска:

UUID=3bb0b16a-fca8-4a93-b734-dd88e2bed53f   /data/brick1   xfs   defaults   1 2

* где:

  • UUID — идентификатор диска, который мы получили с помощью команды blkid.
  • /data/brick1 — созданный каталог, в котором будет храниться информация о brick.
  • xfs — файловая система, в которой был нами отформатирован диск.

Выполняем монтирование с использованием новой строки в fstab:

mount -a

Проверяем, что диск примонтировался:

df -h

Мы готовы к созданию кластерной файловой системы.

Настройка GlusterFS

Все серверы должны обращаться друг к другу по имени. Если в нашей инфраструктуре нет внутреннего DNS, на серверах открываем файл hosts:

vi /etc/hosts

И добавляем информацию о именах серверов и их адресах. В нашем случае записи будут такие:

192.168.0.10 server1
192.168.0.11 server2
192.168.0.12 server3

Теперь переходим на один из серверов кластера, например, на server1 и присоединяем к кластеру другие серверы:

gluster peer probe server2

gluster peer probe server3

* в нашем примере это серверы server2 и server3.

Мы должны увидеть сообщение об успешном присоединении 

peer probe: success

Теперь можно попробовать ввести команду с любого другого сервера:

gluster peer probe server1

Мы должны увидеть:

peer probe: success. Host server1 port 24007 already in peer list

* данное сообщение означает, что server1 уже добавлен к кластеру.

Теперь на любом из серверов введем:

gluster peer status

Мы должны увидеть:

Number of Peers: 2

Hostname: server2
Uuid: f0e7b138-4874-4bc0-ab91-54f20c7068b4
State: Peer in Cluster (Connected)

Hostname: server3
Uuid: f0e7b138-4532-4bc0-ab91-54f20c701241
State: Peer in Cluster (Connected)

* на server1 мы увидим два пира до server2 и server3, а на server2 — server1 и server3 и так далее.

Создадим каталог для брика (основной единицы хранения в GlusterFS):

mkdir -p /data/brick1/gv0

/data/brick1 — каталог, который мы создали на этапе выше.

Создадим том glusterfs с типом replicated:

gluster volume create gv0 replica 3 server1:/data/brick1/gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0

* где:

  • gv0 — имя тома.
  • replica — указываем на количество сервер, используемых для репликации данных
  • server[1,2,3] — перечисляем серверы-участники и пути к каталогам для brick.

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

Мы также можем создать кластер из двух нод репликации и одной — свидетеля. Для этого выполняем команду:

gluster volume create gv0 replica 2 arbiter 1 server1:/data/brick1/gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0

* в данном примере серверы server1 и server2 будут серверами репликации (идут по списку первыми), а server3 будет arbiter.

Мы должны увидеть что-то на подобие:

volume create: gv0: success: please start the volume to access data

Чтобы активировать том, вводим команду:

gluster volume start gv0

Мы должны увидеть:

volume start: gv0: success

Подробнее состояние тома можно посмотреть командой:

gluster volume info

В моем примере было:

Volume Name: gv0
Type: Replicate
Volume ID: f25cc3d8-631f-41bd-96e1-3e22a4c6f71f
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: server1:/data/brick1/gv0
Brick2: server2:/data/brick1/gv0
Brick3: server3:/data/brick1/gv0
Options Reconfigured:
transport.address-family: inet

Том создан и работает.

Подключение тома к клиенту

Мы можем проверить работу GlusterFS на одном из серверов или на любом компьютере в сети.

Необходимо, чтобы в системе был установлен клиент:

apt install glusterfs-client

Создадим каталог, который будет точкой монтирования:

mkdir /mnt/gluster-test

Вводим команду:

mount -t glusterfs server1:/gv0 /mnt/gluster-test

* данной командой мы примонтируем созданный том gv0 в каталог /mnt/gluster-test.

Проверим синхронизацию файлов — создадим любой файл в смонтированном каталоге:

touch /mnt/gluster-test/testfile

На сервере с GlusterFS проверим, что файл появился в каталоге тома:

ls /data/brick1/gv0

Перманентное подключение

Чтобы каталог с glusterfs был примонтирован после перезагрузки системы, нам нужно добавить настройку в файл fstab.

Для начала, отмонтируем предыдущий каталог:

umount /mnt/gluster-test

Откроем файл fstab:

vi /etc/fstab

Пропишем:

server1:/gv0   /srv   glusterfs   defaults,_netdev   0 0

* обратите внимание на адрес сервера, к которому мы будем подключаться (в моем примере server1).

Выполняем монтирование каталогов с использованием fstab:

mount -a

Удаление тома

На всех серверах открываем fstab:

vi /etc/fstab

Удаляем строку, где мы монтировали удаляемый том:

server1:/gv0   /srv   glusterfs   defaults,_netdev   0 0

* в нашем примере мы удалим том gv0.

Отмонтируем раздел. В нашем примере мы его монтировали в каталог /srv:

umount /srv

Останавливаем вольюм:

gluster volume stop gv0

Система запросит подтверждения — вводим y:

Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y

Теперь можно удалить раздел в самом гластере:

gluster volume delete gv0

Мы будем предупреждены, что данные будут потеряны. Соглашаемся:

Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y

Если удаление пройдет корректно, мы увидим что-то на подобие:

volume delete: gv0: success

# Linux # Настройки
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет