Как настроить GlusterFS | МАРС Телеком

ПерезвонимВам

Попробовать бесплатно
Нажимая ОТПРАВИТЬ я соглашаюсь с обработкой персональных данных
Вы также можете связаться с нашими специалистами по телефону 8 800 333-65-40 (звонок бесплатный по всей территории России).
аватарка
MARS Connector

Программа служит для подключения к услуге «Аренда виртуального сервера» и «Аренда 1С».

СКАЧАТЬ

Как настроить GlusterFS


GlusterFS это распределённая отказоустойчивая файловая система. Позволяет объединять хранилища, расположенные как на разных серверах в одной сети, так и на разных серверах в рамках глобальной сети Интернет.

Получить консультацию
Листайте ниже

GlusterFS это распределённая отказоустойчивая файловая система. Позволяет объединять хранилища, расположенные как на разных серверах в одной сети, так и на разных серверах в рамках глобальной сети Интернет.

Гластер работает в User Space и поверх существующих файловых систем, что в свою очередь добавляет определенные накладные расходы. Особенно в случае небольших файлов. Но, если от хранилища требуется в первую очередь отказоустойчивость и простота, GlusterFS идеально подойдет на данную роль. Для повышения производительности хранилища можно выстроить отдельную сеть с поддержкой InfiniBand RDMA, но это несколько усложнит всю систему.

GlusterFS представляет из себя службу glusterd, которая отдает клиентам указанное ему хранилище в качестве тома, синхронизирует хранилище между brick’ами (единица хранения GlusterFS - представляет из себя простой каталог).

В данной статье я хочу продемонстрировать простой деплой кластера, состоящий из трех нод, базовые настройки и управление кластером. Все это поможет в короткий срок ознакомится с данной технологией и решить можно ли будет использовать ее в Вашей производственной среде.

Подготовка виртуальных машин

Для начала нам понадобятся три сервера. Я буду использовать Ubuntu 20.04 Server. Каждая машина будет иметь на борту 1 ядро, 1024 МБ ОЗУ, 2 виртуальных SSD накопителя. Один на 10ГБ, будет использоваться исключительно под систему, второй на 20ГБ, будет целиком отдан под хранилище. Машины будут иметь следующие адреса и имена.

172.16.0.1 glstr-n1
172.16.0.2 glstr-n2
172.16.0.3 glstr-n3

Если нет возможности использовать DNS, будет достаточно сделать записи в файле /etc/hosts на каждом сервере:

sudo echo -e "172.16.0.1 glstr-n1 \n172.16.0.2 glstr-n2 \n172.16.0.3 glstr-n3" >> /etc/hosts

В качестве клиента будет выступать виртуальная машина glsrt-cl с IP адресом 172.16.0.254.

В нем также надо добавить строку в /etc/hosts.

Само собой, все эти и последующие действия надо выполнить на все трех нодах.

Подготовка хранилища

Далее следует подготовить хранилище. Я планирую сделать простое реплицируемое хранилище с одним экземпляром данных на одной ноде кластера. Это будет эквивалентно трехстороннему зеркальному рейду.

В первую очередь надо создать раздел на подготовленном хранилище (в моем случае, это /dev/sdb). Для этого я воспользуюсь утилитой gdisk.

sudo gdisk /dev/sdb

Далее выберу создание нового раздела (n) и отдам весь накопитель под этот раздел.

После чего можно сохранить настройку и выйти (w).

Теперь надо отформатировать этот раздел. В моем случае это будет файловая система XFS.

sudo mkfs.xfs /dev/sdb1

Создадим каталог /gluster, в который примонтируем данный раздел.

mkdir /gluster

Для монтирования сразу пропишем его в /etc/fstab.

sudo echo -e "/dev/sdb1 \t/gluster \txfs \tdefaults \t0 \t0" >> /etc/fstab
sudo mount -a

Утилитой df можно проверить что все прошло хорошо. В выводе должна присутствовать строчка.

/dev/sdb1                           20G   0G  0G  0% /gluster

Подготовим сетевой экран, в нашем случае, в качестве сетевого экрана выступает UFW.

Сначала его надо включить.

sudo ufw enable

И добавить порт ssh, разрешив его только для нужного адреса. В моем случае, пусть будет так:

sudo ufw allow proto tcp from 172.16.0.100 to any port 22

Надо открыть порты для обмена информацией между glusterd:

sudo ufw allow proto tcp from 172.16.0.0/30 to any port 24007, 24008
sudo ufw allow proto udp from 172.16.0.0/30 to any port 111

И порты для клиента:

sudo ufw allow proto tcp from 172.16.0.254 to any port 24007, 24008, 49152, 49154, 49155

Установка GlusterFS

Теперь можно приступать к установке и настройке самой GlusterFS. Тут все предельно просто.

Обновляем пакеты.

sudo apt update

Ставим сервис.

sudo apt install -y glusterfs-server

Включаем службу.

sudo systemctl enable glusterd

Убедиться, что служба установлена и работает можно, выполнив, команду.

sudo systemctl glusterd status

Поле Active должно быть в состоянии active (running).

На этом установку можно считать законченной.

Настройка GlusterFS

Первым делом надо сделать так, чтобы сервера видели друг друга.

sudo gluster peer probe glstr-n1, glstr-n2, glstr-n3

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

sudo gluster peer status
В выводе мы должны увидеть остальные ноды нашего кластера. Например:
Number of Peers: 2

Hostname: glstr-n2
Uuid: 8c945f19-6422-4a05-a000-6d6b9f76832a
State: Peer in Cluster (Connected)

Hostname: glstr-n3
Uuid: 7fd95426-db1b-49c7-a2b8-fcd0f9bb573a
State: Peer in Cluster (Connected)

Далее создадим папку, которая будет служить нам brick'ом.

mkdir /gluster/brick0

Создадим том. Это можно выполнить один раз на любой из нод кластера.

gluster volume create gv replica 3 glstr-n1:/gluster/brick glstr-n2:/gluster/brick glstr-n3:/gluster/brick

Где gv это имя тома, replica – тип тома.

Запускаем том:

gluster volume start gv

На этом базовая настройка закончена.

Установка клиента GlusterFS

В данной статье, я буду рассматривать только подключение через glusterfs-client.

Заходим на машину glst-cl, которая будет выступать у нас в качестве клиента

Тут все так же предельно просто. Устанавливаем клиент:

sudo apt update
sudo apt install -y glusterfs-client

Создаем каталог.

mkdir /gluster-storage

Монтируем том стразу через /etc/fstab. Добавляем строку.

glstr-n1:gv	/gluster-storage 	glusterfs 	defaults,_netdev,backupvolfile-server=glstr-n2:glstr-n3	 	0 	0

Параметр: backupvolfile-server=glstr-n2:glstr-n3 – указывает на дополнительные ноды кластера.

Перечитываем fstab.

mount -a

На этом базовая настройка завершена.

Управление кластером

Перечислю несколько базовых команд для управления кластером. Запустить их можно с любого узла кластера.

sudo gluster help
sudo gluster volume help

Справка.

sudo gluster volume heal gv info

Покажет информацию о рассинхронизованых файлах на томе, если таковые есть.

sudo gluster volume info gv

Покажет информацию о томе.

sudo gluster volume heal gv0

Ручная синхронизация файлов.

Некоторые значимые параметры

Кластер имеет множество настроек. Посмотреть их можно командой:

sudo gluster volume get gv all

Переопределить параметры можно командой:

sudo gluster volume set gv [ИмяПараметра] [ЗначениеПараметра], например:

sudo gluster volume set gv performance.cache-size 256MB

Установит размер кэша кластера в 256 Мб.

cluster.favorite-child-policy

Политика автоматического восстановления после split-brain. Может принимать следующие значения:

  • none: Значение по-умолчанию;
  • size: Приоритет буду иметь файлы большего размера;
  • ctime: Приоритет будут иметь файлы с более поздней датой изменения прав доступа или владельца;
  • mtime: Приоритет будут иметь файлы с более поздней датой изменения;
  • majority: выбирает файл с одинаковым mtime и размером более чем в половине количества brick в реплике.

performance.readdir-ahead и performance.parallel-readdir

Повышает производительность листинга каталогов.

Значения: on\off

Операции чтения небольших файлов

Производительность повышается за счет включения кэша на клиенте.

performance.cache-invalidation on

features.cache-invalidation on

performance.qr-cache-timeout 600 --> 10 min recommended setting

cache-invalidation-timeout 600 --> 10 min recommended setting

Заключение

В данной статье я попытался описать базовую установку и настройку отказоустойчивого хранилища GlusterFS. За рамками данной статьи осталось множество различных аспектов, таких как шифрование и аутентификация по открытому RSA ключу, распределенный (в рамках глобальной сети) кластер, отличные от репликации виды томов. Обо всем этом можно прочитать в документации https://docs.gluster.org/en/v3 или заказать у нас уже настроенный сервис.


https://marstel.ru/routeros

Уже уходите?Хотите, перезвоним Вам за 30 секунд?

Сейчас на линии несколько свободных специалистов и мы сможем перезвонить Вам в течение нескольких секунд.

Пользовательское соглашение Звонок для Вас бесплатный