GlusterFS, опыт новой версии

в 13:01, , рубрики: glusterfs, linux, распределенные файловые системы, системное администрирование, метки: ,

Всем привет.

В прошлый раз (Взрослеем с GlusterFS) я описывал как настроить для своих нужд GlusterFS 3.0.x. Недавно мы сделали апгрейд GlusterFS до 3.2.х., и так как между этими версиями обнаружилось масса различий в настройке, то решил описать процесс для общего ИТ разума.

Сразу оговорюсь, что переход на новую версию был обусловлен глюками старой.
Дело было после очередных сбоев Амазоновских EBS. Диск на втором мастере деградировал и мы выключили сервис на время исправления проблем бравыми инженерами AWS. После того как все пришло в норму, мы пытались включить второй мастер в обратно схему, но происходило непоправимое и все клиенты попросту подвисали и сетевые диски банально не отвечали. В клиентах нашлись ошибки, долгое гугление которых привело к “намекам” на форумах, что такие подвисания исправили в новых версиях, что было воспринято и радостно и грустно одновременно:) Пришлось обновляться.

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

Инициализируем peer:

root@files1.domain.com:~# gluster peer probe files2.domain.com
Probe successful

Проверяем:

root@files1.domain.com:~# gluster peer status
Number of Peers: 1


Hostname: files2.domain.com
Uuid: c8f2fg43-ch7e-47f3-9ec5-b4b66f81101d
State: Peer in Cluster (Connected)

Далее создаем диск(volume):

root@files1.domain.com:~# gluster volume create volume_data replica 2 transport tcp files1.domain.com:/data files2.domain.com:/data
Creation of volume volume_data has been successful. Please start the volume to access data.

Стартуем диск:

root@files1.domain.com:~# gluster volume start volume_data
Starting volume volume_data has been unsuccessful

Выполняем на обоих мастерах:

/etc/init.d/glusterfs-server restart

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

root@files1.domain.com:~# gluster volume info

Volume Name: volume_data
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: files1.domain.com:/data
Brick2: files2.domain.com:/data

Ограничиваем доступ к нашим шарам таким образом:

root@files1.domain.com:~# gluster volume set volume_data auth.allow 10.*

Смотрим снова info:

Volume Name: volume_data
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: files1.domain.com:/data
Brick2: files2.domain.com:/data
Options Reconfigured:
auth.allow: 10.*

Настройка на серверах закончена, идем на клиент. Я предполагаю, что вы в состоянии установить нужную версию пакета для клиента и она уже есть в системе.

root@client.domain.com:~# mkdir /data

root@client.domain.com:~# mount -t glusterfs files1.domain.com:/volume_data /data

Смотрим на результат:

root@client.domain.com:~#  df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.9G  6.6G  987M  88% /
none                  3.4G  112K  3.4G   1% /dev
none                  3.6G     0  3.6G   0% /dev/shm
none                  3.6G   64K  3.6G   1% /var/run
none                  3.6G     0  3.6G   0% /var/lock
none                  3.6G     0  3.6G   0% /lib/init/rw
/dev/sdb              414G  6.1G  387G   2% /mnt
tmpfs                  10M  8.0K   10M   1% /tmp/tmpfs
files1.domain.com:/ volume_data 
		200G  109G   92G  55% /data

Прописываем в /etc/fstab на client.domain.com :

files1.domain.com:/volume_data /data glusterfs defaults,_netdev 0 0

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

root@client.domain.com:~#  umount /data
root@client.domain.com:~#  mount -a

Проверяем, что все ок:

root@client.domain.com:~#  df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.9G  6.6G  987M  88% /
none                  3.4G  112K  3.4G   1% /dev
none                  3.6G     0  3.6G   0% /dev/shm
none                  3.6G   64K  3.6G   1% /var/run
none                  3.6G     0  3.6G   0% /var/lock
none                  3.6G     0  3.6G   0% /lib/init/rw
/dev/sdb              414G  6.1G  387G   2% /mnt
tmpfs                  10M  8.0K   10M   1% /tmp/tmpfs
files1.domain.com:/ volume_data 
		200G  109G   92G  55% /data

Вот и все.

Отдельно хотел остановиться на минусах в новой GlusterFS:

1)Если у вас нет онлайн обоих мастеров при настройке, то вы остановитесь на первой же команде.
2)В предыдущей версии я ставил пароли на свои шары, в новой можно только сделать как мы делали выше auth.allow: 10.*, что как вы понимаете не всегда хорошая практика.
3)

/etc/fstab:

files1.domain.com:/volume_data /data glusterfs defaults,_netdev 0 0

Гластеровцы говорят, что такая привязка к одному серверу лишь для того, что бы вытянуть конфиг пиров и прочего, НО!
Действительно, если пропадает один мастер, то клиент знает где второй, все отрабатывает хорошо в том случае когда уже все примонтировано, но увы и ах, если вам пришлось ребутать, поднимать из образа машину в то время как прописанный в fstab хост лежит. Ваша шара не заведется, так как не сможет вытянуть конфиг. И это изменение в новой версии очень неправильное для распределенной файловой системы, имхо.

Автор: astlock

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js