Categories: Шпаргалки

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

Используемые термины: GlusterFS , Astra 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

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago