Glusterfs centos 7 настройка

Обновлено: 04.07.2024

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

Рас­смот­рим уста­нов­ку сер­вер­ной и кли­ент­ской частей рас­пре­де­лён­ной фай­ло­вой систе­мы Gluster

В нали­чии у нас име­ют­ся 2 сер­ве­ра и 1 кли­ент­ская машина.

Сеть: 192.168.1.0/24.

1-й сер­вер: хост glusterfs-srv1, IP-адрес 192.168.1.170

2-й сер­вер: хост glusterfs-srv2, IP-адрес 192.168.1.171

Кли­ент­ская маши­на: хост glusterfs-client1, IP-адрес 192.168.1.23

1. Под­го­тов­ка и уста­нов­ка необ­хо­ди­мо­го про­грамм­но­го обеспечения

На всех машинах:

Уста­нав­ли­ва­ем wget и attr

Затем откры­ва­ем файл /etc/hosts

и в нём про­пи­шем IP-адре­са и хосты машин

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

systemctl stop firewalld

systemctl disable firewalld

Добав­ля­ем необ­хо­ди­мые репозитории:

Теперь созда­дим ката­лог /mnt/data

Уста­нав­ли­ва­ем сер­вер­ную часть GlusterFS

yum install -y glusterfs gluster-cli glusterfs-libs glusterfs-server

После это­го под­клю­ча­ем новые жёст­кие дис­ки ути­ли­той fdisk

Вво­дим n (add a new partition)

В Partition type выби­ра­ем p (primary)

Пер­вый сек­тор: остав­ля­ем по умолчанию

Номер раз­де­ла: 1

Ути­ли­та сно­ва пред­ло­жит команду

Вво­дим w для при­ме­не­ния изме­не­ний и выхо­да из fdisk

Затем созда­дим на жёст­ком дис­ке фай­ло­вую систему

и мон­ти­ру­ем его в ката­лог /mnt/data

для того, что­бы новый жёст­кий диск авто­ма­ти­че­ски мон­ти­ро­вал­ся при загруз­ке сер­ве­ра, откры­ва­ем файл /etc/fstab

и впи­шем в него сле­ду­ю­щую строчку

/dev/sdb1 /mnt/data ext4 defaults 1 2

Запус­ка­ем служ­бу GlusterFS и добав­ля­ем её в автозагрузку

systemctl start glusterd

systemctl enable glusterd

На кли­ент­ской машине

Уста­нав­ли­ва­ем кли­ент­скую часть GlusterFS

Полез­но знать, что про­цес­сов у Гла­сте­ра несколь­ко, вот их назначения:

glusterd = management daemon
Глав­ный демон, управ­ля­ет волью­мом, тянет за собой осталь­ные демо­ны, отве­ча­ю­щие за бри­ки и вос­ста­нов­ле­ние данных.

glusterfsd = per-brick daemon
У каж­до­го бри­ка запус­ка­ет свой glusterfsd демон.

glustershd = self-heal daemon
Отве­ча­ет за ребилд дан­ных у реп­ли­ци­ро­ван­ных волью­мов в слу­ча­ях отва­ла нод кластера.

glusterfs = usually client-side, but also NFS on servers
Напри­мер, при­ле­та­ет с паке­том натив­но­го кли­ен­та glusterfs-fuse.

2. Объединение серверов в кластер

Что­бы сер­ве­ра рабо­та­ли сов­мест­но, объ­еди­ним их в кластер.

Для это­го на 1-м сер­ве­ре glusterfs-srv1 вво­дим команду:

gluster peer probe glusterfs-srv2

долж­но появить­ся сооб­ще­ние о результате

peer probe: success

Воз­мож­но, потре­бу­ет­ся так­же и на 2-м сер­ве­ре glusterfs-srv2

gluster peer probe glusterfs-srv1

долж­но появить­ся сооб­ще­ние о результате

peer probe: success

Затем на обо­их сер­ве­рах пере­за­пус­ка­ем служ­бу GlusterFS

После это­го на любом из сер­ве­ров (мож­но на обо­их) проверяем

Долж­на появить­ся такая табличка
[root@cent

gluster volume info all

Умень­шим вре­мя в тече­ние кото­ро­го кли­ент ожи­да­ет ответ от сер­ве­ра и в слу­чае недо­ступ­но­сти сер­ве­ра авто­ма­ти­че­ски пере­под­клю­ча­ет­ся к дру­го­му сер­ве­ру в trusted storage pool(по умол­ча­нию тай­маут 42 секун­ды, что вынуж­да­ет кли­ен­та ожи­дать 42 секун­ды, что­бы пере­клю­чи­тя на дру­гую ноду,если теку­щая не отвечает)

3. Настройка хранения и распределения данных

GlusterFS под­дер­жи­ва­ет 5 типов рас­пре­де­ле­ния дан­ных, объ­еди­нён­ных в том (volume):

— Distributed Volume (рас­пре­де­лён­ный) — рас­пре­де­ле­ние дан­ных в слу­чай­ном поряд­ке меж­ду ката­ло­га­ми, вхо­дя­щи­ми в том

— Replicated Volume (реп­ли­ци­ру­е­мый) — зер­каль­ное рас­пре­де­ле­ние дан­ных (в каж­дом томе оди­на­ко­вые файлы)

— Striped Volume (раз­де­лен­ный по частям) — раз­би­е­ние фай­лов по частям и хра­не­ние каж­дой части на отдель­ном сервере

— Distributed Striped Volume (рас­пре­де­лён­ный и раз­де­лен­ный по частям) — раз­би­е­ние фай­лов на части и рас­пре­де­ле­ние по каталогам

— Distributed Replicated Volume (рас­пре­де­лён­ный и реп­ли­ци­ру­е­мый) — рас­пре­де­ле­ние дан­ных в слу­чай­ном поряд­ке по ката­ло­гам, каж­дый из кото­рых име­ет свою зер­каль­ную копию

Настрой­ка Distributed Volume

На обо­их сер­ве­рах созда­дим пап­ку /mnt/data/dv

На 1-м сер­ве­ре glusterfs-srv1 созда­дим том dv-data и стар­та­нём его

gluster volume create dv-data transport tcp glusterfs-srv1:/mnt/data/dv glusterfs-srv2:/mnt/data/dv force

gluster volume start dv-data

На кли­ент­ской машине созда­дим ката­лог /mnt/data/dv-data

и мон­ти­ру­ем в него создан­ный том dv-data

mount.glusterfs glusterfs-srv1:/dv-data /mnt/data/dv-data

После мон­ти­ро­ва­ния тома в /mnt/data/dv-data мож­но копи­ро­вать какие-либо дан­ные. На кли­ент­ской машине они будут отоб­ра­жать­ся в исход­ном виде, на сер­ве­рах же они будут распределены.

Для того, что­бы кли­ент­ская маши­на мог­ла мон­ти­ро­вать том при загруз­ке, необ­хо­ди­мо открыть файл /etc/fstab

и доба­вить в него такую строку:

glusterfs-srv1:/dv-data /mnt/data/dv-data glusterfs defaults,_netdec 0 0

Если необ­хо­ди­мо раз­мон­ти­ро­вать том dv-data на кли­ент­ской машине, вво­дим команду:

Оста­но­вить и уда­лить том мож­но на 1-м сервере:

gluster volume stop dv-data

gluster volume delete dv-data

Настрой­ка Replicated Volume

На сер­ве­рах созда­дим пап­ку /var/shara

На 1-м сер­ве­ре glusterfs-srv1 созда­дим том shara и стар­та­нём его

gluster volume create shara replica 2 transport tcp glusterfs-srv1:/var/shara glusterfs-srv2:/var/shara force

gluster volume start shara

  • gluster — коман­да для GlusterFS;
  • volume — коман­ду сле­ду­ет при­ме­нить к хра­ни­ли­щу ( volume );
  • add-brick — доба­вить «кир­пич» ( brick );
  • www — имя хра­ни­ли­ща, к кото­ро­му добав­ля­ет­ся «кир­пич»;
  • replica 2 — ука­зы­ва­ем, что тип хра­ни­ли­ща реп­ли­ци­ру­е­мый, а коли­че­ство ‘кир­пи­чей’ уве­ли­чит­ся на 1;
  • glusterfs-srv1:/var/shara — ip-адрес(или хост­нейм) и абсо­лют­ный путь к месту, где будут хра­нить­ся данные.

Если необ­хо­ди­мо уда­лить «кир­пич» из хра­ни­ли­ща GlusterFS, то сле­ду­ет выпол­нить сле­ду­ю­щую команду:

gluster volume remove-brick shara replica 1 glusterfs-srv2 :/var/shara force Removing brick ( s ) can result in data loss . Do you want to Continue ? ( y/n ) y

Здесь вме­сто add-brick исполь­зу­ем коман­ду remove-brick и коли­че­ство реплик умень­ша­ем на 1 (было 2 ста­нет 1).

Что­бы навер­ня­ка уда­лить peer - ов
rm -f /var/lib/glusterd/peers/*
systemctl restart glusterd

На кли­ент­ской машине созда­дим ката­лог /var/shara/

и мон­ти­ру­ем в него создан­ный том shara

mount.glusterfs glusterfs-srv1:/shara /var/shara/

После мон­ти­ро­ва­ния тома в /var/shara/ мож­но копи­ро­вать какие-либо дан­ные. На кли­ент­ской машине они будут отоб­ра­жать­ся в исход­ном виде, а на сер­ве­рах же они будут реп­ли­ци­ро­ва­ны, то есть сер­ве­ра будут слу­жить зер­ка­ла­ми друг для друга.

Для того, что­бы кли­ент­ская маши­на мог­ла мон­ти­ро­вать том при загруз­ке, необ­хо­ди­мо открыть файл /etc/fstab

и доба­вить в него такую строку:

glusterfs-srv1:/shara /var/shara/ glusterfs defaults,_netdec 0 0

Если необ­хо­ди­мо раз­мон­ти­ро­вать том shara на кли­ент­ской машине, вво­дим команду:

Оста­но­вить и уда­лить том мож­но на 1-м сервере:

gluster volume stop shara

gluster volume delete shara

Что­бы дан­ные копи­ро­ва­лись реп­ли­ци­ро­ва­лись с сер­вер 1 на сер­вер 2 и наобо­рот, необходимо:
при­мон­ти­ро­вать разделы:
на сервер1 выполняем:
mount -t glusterfs glusterfs-srv2:/shara /sh
на сер­вер 2 соответственно
mount -t glusterfs glusterfs-srv1:/shara /sh
отме­тим, что здесь дирек­то­рия /var/shara исполь­зу­ет­ся в каче­стве моста и исполь­зо­вать дан­ную дирек­то­рию при мон­ти­ро­ва­нии не возможно.
дан­ные если созда­вать дан­ные в дирек­то­рии /var/shara или /sh они будут кор­рект­но добав­лять­ся и на дру­гие сервера.

созда­дим фай­ло­вую систе­му из 4-х серверов:

Hostname: 192.168.1.171
Uuid: 1d26e5b2-300e-4de3-aaca-a28a5b130906
State: Peer in Cluster (Connected)

Hostname: 192.168.1.172
Uuid: ad24f48f-b692-4ebf-921c-16920b28f000
State: Peer in Cluster (Connected)

Hostname: 192.168.1.173
Uuid: e90276da-a5f7-4897-bd73-b2638e6a2e3e
State: Peer in Cluster (Connected)

gluster volume create shara replica 3 transport tcp 192.168.1.171:/var/shara 192.168.1.172:/var/shara 192.168.1.173:/var/shara force
volume create: shara: success: please start the volume to access data

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


Мы не рекомендуем использовать кластерные системы в задачах, где предполагается интенсивная запись данных, требующая высоких показателей IOPS и прогнозируемую задержку IO. Однако, для задач, в которых операции чтения значительно преобладают над операциями записи и нет требований к ультранизкой задержке IO, кластерные файловые системы вполне могут использоваться.

Настройка разрешения имен для приватной сети

В рамках настройки будем полагать, что все узлы соединены доверенной приватной сетью, в которой они доступны по доменными именам:

  • server1.private 10.0.0.1/24
  • server2.private 10.0.0.2/24
  • server3.private 10.0.0.3/24

Убедитесь, что серверы находятся в разных доменах отказа, чтобы не столкнуться с ситуацией, когда авария затронет сразу две или больше машин.

В ходе настройки будем предполагать, что используются серверы под управлением Debian 9, Ubuntu 16.04 или 18.04 или CentOS7.

Файрвол, SELinux, AppArmor

Мы предполагаем, что для приватной сети весь трафик разрешен и не блокируется. AppArmor (Ubuntu, Debian), SELinux не накладывают ограничений или полностью отключены.

Установка NTPD

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

Ubuntu, Debian Linux:

CentOS 7:

Выбор фактора репликации

Задание пространства для файловой системы

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

На каждом узле создадим каталог /opt/gluster-volume:

При выделении отдельного устройства для тома GlusterFS рекомендуется создать на нем файловую систему XFS

Установка и настройка GlusterFS

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

Debian Linux:

Ubuntu Linux 16.04, 18.04:

CentOS 7:

Добавление узлов в пул

Для добавления узлов в пул узлов необходимо на любом из узлов выполнить команду:

Посмотреть добавленные в пул узлы можно командой:

Создание тома хранения данных

Теперь, когда все серверы находятся в пуле, можно создать том для хранения данных. Поскольку в нашем примере том создается в корневой файловой системе, нам придется использовать аргумент force.

Убедиться в том, что том создан можно с помощью команды:

Для активации тома его необходимо запустить:

Теперь можно запросить состояние тома gfs:

Информация о томе:

Настройка доступа к тому

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

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

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

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

Проверьте на двух других узлах, что файл доступен:

Добавьте на каждом хосте запись в /etc/fstab для автоматического монтирования тома при запуске системы:

Перезапустите каждый сервер поочередно для того, чтобы убедиться, что после старта сервер автоматически монтирует каталог /mnt/gluster:

Почему не Ceph

По сравнению с GlusterFS Ceph более сложна в настройке и более тяжеловесна (MON,OSD, MDS). Для распределенных файловых систем начального уровня, которые развертываются на малом количестве узлов GlusterFS выглядит более предпочтительной и легковесной.

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

С помощью GlusterFS можно создать масштабированный, виртуальный пул, приспособленный для работы RAID через сеть интернет. с различными методами объединения пространства. В дополнение здесь есть возможности, которых нет в аппаратных решениях. В этой статье мы рассмотрим как выполняется настройка GlusterFS в Ubuntu и на что способна эта файловая система.

Как работает GlusterFS

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

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


Файловая система реализована в пространстве пользователя и для доступа к реальной файловой системе используется Fuse. Это позволяет работать с файловой системой более просто и прозрачно. Хотя существует библиотека libgfapi, которая дает прямой доступ к жесткому диску, позволяет более эффективно хранить образы виртуальных машин qemu.

Как уже говорилось GlusterFS позволяет объединять несколько сетевых устройств в одну файловую систему. Они могут связываться между собой с помощью TCP/IP или InfiniBand. Общее хранилище будет доступно с помощью клиента GlusterFS, по NFS или Samba.

При зеркалировании данных элементарной единицей считается один файл, а при разделении, отдельные части файла разделяются между системами. Этот подход хорошо масштабируется при использовании больших систем, и чем больше систем, тем выше производительность. Вы можете создавать несколько копий файла и использовать разделение одновременно. Баланс между зеркалированием и разделением важен для максимальной производительности и безопасности данных.

Объем GlusterFS очень просто расширить, для этого достаточно добавить еще одно устройство.

Установка GlusterFS

Все необходимые пакеты есть в официальных репозиториях большинства дистрибутивов. Например, для установки GlusterFS в Fedora достаточно выполнить:

sudo dnf install glusterfs glusterfs-cli glusterfs-server

sudo apt install glusterfs glusterfs-cli glusterfs-server

Дальше нам нужно запустить сервис и убедится, что он запущен и работает:

sudo systemctl start glusterd.service
$ sudo systemctl status glusterd.service

sudo systemctl start glusterfs-server.service
$ sudo systemctl status glusterfs-server.service

Команда gluster

Для управления всеми возможностями Glusterfs используется утилита gluster. Для того чтобы вы могли лучше ориентироваться в ней мы рассмотрим ее синтаксис и использование. Синтаксис команды выглядит следующим образом:

$ gluster команда подкоманда параметры

Вот основные команды:

  • volume - управление разделами;
  • peer - управление подключенными машинами;
  • snapshot - работа со снапшотами;

Рассмотрим синтаксис основных команд volume, с помощью которых будет выполняться настройка glusterfs:

  • volume info - информация о томе;
  • volume create - создать новый том на устройстве;
  • volume delete - удалить том;
  • volume start - запустить том;
  • volume stop - временно остановить том;
  • volume add-brick - добавить раздел к тому;
  • volume remove-brick - удалить раздел из тома;
  • volume replace-brick - заменить раздел на другой;
  • volume rebalance - перебалансировать файлы.

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

  • peer probe - подключить новый компьютер к пулу;
  • peer detach - отключить компьютер от пула;
  • peer status - отобразить подключенные устройства.

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

Настройка Glusterfs

Мы будем настраивать распределение данных GlusterFS между двумя системами, сервис должен быть установлен и настроен на обоих из них. На обоих компьютерах наши устройства хранения смонтированы в /storage. Перед тем как начать работать с Glusterfs, давайте добавим ip адреса наших серверов /etc/hosts, чтобы обращаться с ними было легче:

sudo vi /etc/hosts

192.168.51.1 gluster1
192.168.51.2 gluster2

Это необходимо сделать на обоих машинах. Дальше нам нужно создать пул. Неважно какую машину вы выберете для этого все будет работать одинаково. Мы будем использовать gluster1. Чтобы комьпютеры могли получить доступ друг к другу, нужно открыть несколько портов в брандмауэре:

firewall-cmd --zone=public --add-port=24007-24008/tcp --permanent
$ firewall-cmd --zone=public --add-port=24009/tcp --permanent
$ firewall-cmd --zone=public --add-service=nfs --add-service=samba --add-service=samba-client --permanent
$ firewall-cmd --zone=public --add-port=111/tcp --add-port=139/tcp --add-port=445/tcp --add-port=965/tcp --add-port=2049/tcp --add-port=38465-38469/tcp --add-port=631/tcp --add-port=111/udp --add-port=963/udp --add-port=49152-49251/tcp --permanent
$ firewall-cmd --reload

Для подключения машины gluster2 выполните команду:

sudo gluster peer probe gluster2

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

sudo gluster volume create gv0 replica gluster1:/storage/brick1/gv0/ gluster2:/storage/brick1/gv0/

По умолчанию используется протокол TCP/IP для взаимодействия, но вы можете вручную указать InfiniBand. Если вы попытаетесь создать хранилище на корневом разделе, то у вас ничего не получиться, для его создания нужно добавить в конец команды опцию force. Далее смотрим информацию о созданном хранилище:

sudo gluster volume info gv0

Дальше можно запустить созданную группу:

sudo gluster volume start gv0

Существует несколько способов получить доступ к хранилищу GlusterFS. Работа через FUSE будет наиболее быстрой. Также можно использовать Samba или NFS. Кроме того, преимущество использование официального клиента, в том, что вы можете получить доступ к отдельным хранилищам. Для подключения Glusterfs с помощью официального инструмента используйте mount:

sudo mount -t glusterfs gluster1:/gv0 /mnt/glusterfs/

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

sudo gluster peer probe gluster3

sudo gluster volume add-brick replica 3 gv0 gluster3:/storage/brick1/gv0/

Естественно, что ip адрес узла gluster3 должен быть добавлен в файл /etc/hosts. Сначала мы добавляем его в список пиров, затем инициализируем на нем наш раздел. После выполнения команды наше хранилище будет состоять из трех устройств. Вы можете очень просто удалить один из разделов и открепить устройство:

sudo gluster volume remove-brick gv0 gluster3:/storage/brick1/gv0/
$ sudo gluster peer detach gluster3

Когда вы добавляете или удаляете разделы, необходимо пересортировать данные, система работала наиболее эффективно. Для этого выполните:

gluster volume rebalance gv0 start

Чтобы посмотреть статус балансировки используйте команду status:

gluster volume rebalance gv0 status

Настройка шифрования GlusterFS

Если все узлы находятся в приватной сети, то это еще ничего, но если вы собираетесь применять GlusterFS через сеть, то желательно включить шифрование и аутентификацию по RSA ключу. По умолчанию никакая аутентификация не используется. Сначала создаем серитфикаты на каждом узле:

cd /etc/ssl/
$ sudo openssl genrsa -out glusterfs.key 2048
$ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN=gluster1" -out glusterfs.pem

Скопируйте ключ gluster.key на другой сервер и создайте там на основе него сертификат, вместо gluster0 используйте имя своего хоста:

cd /etc/ssl/
$ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN=gluster2" -out glusterfs.pem

Объедините содержимое обоих файлов pem и файле .ca и разместите его на всех серверах в папке /etc/ssl:

cat /etc/ssl/glusterfs.pem gluster2.pem > glusterfs.ca

Включите поддержку шифрования и перезапустите сервер:

sudo touch /var/lib/glusterd/secure-access
$ sudo systemctl restart glusterd

Включите ssl на всех серверах и клиентах:

sudo gluster volume set gv0 auth.ssl-allow '*'
$ gluster volume set gv0 server.ssl on

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

sudo gluster vol stop gv0
$ sudo gluster vol start gv0

Проверить работает ли ssl сейчас вы можете посмотрев лог файл:

grep -i ssl /var/log/glusterfs/gv0.log

Выводы

В этой статье мы рассмотрели как выполняется настройка Glusterfs для хранения и репликации данных на нескольких серверах в сети. Этому может быть мало применений для домашних пользователей, но такая технология незаменима при обработке больших объемов данных в организациях. Жаль, что пока Glusterfs работает очень медленно, особенно с небольшими файлами и если узлов не много, а синхронизация будет выполняться через интернет, то целесообразнее использовать lsyncd.

Пример установки и настройки репликации GlusterFS с защитой SSL сертификатов.

Предисловие

GlusterFS на тестах показал очень низкую производительность. Был создан кластер из двух серверов и одним клиентом с гигабитным каналам. Rsync и обычный cp работал со скоростью 70.59kB/s. 200МБ копировался час. Вобщем производительность у гластера очень низкая.

Установка на Ubuntu

Установка на Centos 7

Проверка статуса запуска

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

По умолчанию, к кластеру может подключиться любой. Чтобы этого не произошло, нужно включить SSL и создать сертификаты. Тогда к вашему кластеру могут подключиться только те сервера чьи сертификаты прописаны в glusterfs.ca.

Включите SSL настройки:

На каждом хосте, входящий в кластер glusterfs сделайте следующие настройки:

Файл glusterfs.ca должен содержать ключи со всех серверов содержимого файлов glusterfs.pem.

При желании можете сгенерировать dhparam:

После настроек перезапустите сервис:

Настройка IPTables

Создание кластера реплики

Предположим у вас два сервера с IP адресами 192.168.1.10 и 192.168.1.11. На них будет установлен gluster сервер с репликой. На каждом хосте в файле /etc/hosts пропишите хосты кластера.

На 0м сервере выполните команду. Это позволит подключить первый сервер к нулевому.

Проверьте подключение пиров:

После подключение серверов, создайте на двух серверах папки /data/volume1. Там будут хранится файлы кластера.

В параметре auth.allow вы можете указать IP адреса клиентов через запятую, которые могут монтировать volume. Например: 192.168.1.15,192.168.1.50

На клиенте. Создайте папку.

Подключитесь к кластеру с клиента:

Если все прошло успешно, добавьте монтирование в /etc/fstab.

Опция backupvolfile-server позволяет, если не доступен srv1, подключаться к srv2. Это работает только в момент первого подключения к кластеру. После подключения к кластеру, клиент узнает все IP адреса кластера, и уже работает с ними напрямую.

Читайте также: