Установка и настройка GlusterFS-server 3.5.2 в ОС Debian

Oct 24, 2016 22:41 · 684 words · 4 minute read glusterfs

GlusterFS — простая в настройке и использовании распределенная файловая система, работающая поверх основной файловой системы. Давайте разберемся с установкой и GlusterFS-server в ОС Debian Wheezy!

Прежде всего, хочу объяснить, почему был выбран GlusterFS-server версии 3.5.2 — далеко не самой свежей на момент написания статьи. В моем случае, на нескольких серверах под управлением ОС Debian Wheezy уже был настроен и успешно использовался GlusterFS-server версии 3.2.7, но при необходимости добавления новых узлов в кластер возникли сложности. Как выяснилось, для расширения кластера нужен GlusterFS-server версии не ниже 3.3, а в репозитории wheezy-backports как раз нашлась версия 3.5.2.

Считаем, что все хосты будущего кластера доступны друг для друга, в firewall открыты TCP порты 111, 24007-24050 и созданы все необходимы каталоги/точки монтирования.

Примечание. В нашем примере GlusterFS настраивается как replicated volume на 5 машинах с локальными ip-адресами 192.168.0.1, 192.168.0.3, 192.168.0.7, 192.168.0.13 и 192.168.0.14

Устанавливаем GlusterFS-server на всех серверах:

aptitude install -t wheezy-backports glusterfs-server

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

gluster peer status
Number of Peers: 0

Подключаемся на любой хост из нашего списка (например, 192.168.0.1) и создаем кластер:

gluster peer probe 192.168.0.3
peer probe: success.
gluster peer probe 192.168.0.7
peer probe: failed: 192.168.0.7 is already part of another cluster
gluster peer probe 192.168.0.13
peer probe: success.
gluster peer probe 192.168.0.14
peer probe: success.

Добавлять в список хостов кластера «самого себя» не нужно:

gluster peer probe 192.168.0.1
peer probe: success. Probe on localhost not needed

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

gluster peer probe 192.168.0.3
peer probe: success. Host 192.168.0.3 port 24007 already in peer list

Как вы наверняка заметили, что-то пошло не так при добавлении узла с ip-адресом 192.168.0.7. Проверяем состояние нашего кластера:

gluster peer status
Number of Peers: 4

Hostname: 192.168.0.7
Uuid: 1b138a89-64dc-4a5e-8095-8892abaaf0e5
State: Accepted peer request (Connected)

Hostname: 192.168.0.3
Uuid: b9789ef4-1f26-4320-a7ba-0902c3434d76
State: Peer in Cluster (Connected)

Hostname: 192.168.0.13
Uuid: c8618f71-fdb3-4f28-8266-9eebca69e4e2
State: Peer in Cluster (Connected)

Hostname: 192.168.0.14
Uuid: 92876551-847a-4a9d-9a86-07c23b3e91f0
State: Peer in Cluster (Connected)

Мы не можем создать кластер, так как один из его узлов находится в состоянии Accepted peer request. В моем случае всему виной старые конфиги GlusterFS-server 3.2.7, поэтому делаем так:

gluster peer detach 192.168.0.7
peer detach: success
gluster peer probe 192.168.0.7
peer probe: success.

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

gluster peer status
Number of Peers: 4

Hostname: 192.168.0.13
Uuid: c8618f71-fdb3-4f28-8266-9eebca69e4e2
State: Peer in Cluster (Connected)

Hostname: 192.168.0.3
Uuid: b9789ef4-1f26-4320-a7ba-0902c3434d76
State: Peer in Cluster (Connected)

Hostname: 192.168.0.14
Uuid: 92876551-847a-4a9d-9a86-07c23b3e91f0
State: Peer in Cluster (Connected)

Hostname: 192.168.0.7
Uuid: 5837f180-6b00-403c-83ff-e993ef7bf4ef
State: Peer in Cluster (Connected)

Можно сделать аналогичные проверки со всех хостов кластера. Теперь создадим реплицируемый том (volume):

gluster volume create www replica 5 transport tcp 192.168.0.1:/var/www/testsite 192.168.0.7:/var/www/testsite 192.168.0.3:/var/www/testsite 192.168.0.13:/var/www/testsite 192.168.0.14:/var/www/testsite
volume create: www: success: please start the volume to access data

Запускаем созданный том:

gluster volume start www
volume start: www: success

После чего проверим статус нашего тома:

gluster volume status
Status of volume: www
Gluster process						Port	Online	Pid
------------------------------------------------------------------------------
Brick 192.168.0.1:/var/www/testsite			49152	Y	29660
Brick 192.168.0.7:/var/www/testsite			49152	Y	13559
Brick 192.168.0.3:/var/www/testsite			49153	Y	7743
Brick 192.168.0.13:/var/www/testsite			49152	Y	28423
Brick 192.168.0.14:/var/www/testsite			49152	Y	21147
NFS Server on localhost					2049	Y	29674
Self-heal Daemon on localhost				N/A	Y	29679
NFS Server on 192.168.0.14				2049	Y	21161
Self-heal Daemon on 192.168.0.14			N/A	Y	21167
NFS Server on 192.168.0.13				2049	Y	28437
Self-heal Daemon on 192.168.0.13			N/A	Y	28442
NFS Server on 192.168.0.3				2049	Y	7761
Self-heal Daemon on 192.168.0.3				N/A	Y	7766
NFS Server on 192.168.0.7				2049	Y	13631
Self-heal Daemon on 192.168.0.7				N/A	Y	13642

Task Status of Volume www
------------------------------------------------------------------------------
There are no active volume tasks

Интересующую информацию о реплицируемом томе можно еще посмотреть так:

gluster volume info

Volume Name: www
Type: Replicate
Volume ID: 782e8fd8-0a72-4966-9590-77c244bce3b6
Status: Started
Number of Bricks: 1 x 5 = 5
Transport-type: tcp
Bricks:
Brick1: 192.168.0.1:/var/www/testsite
Brick2: 192.168.0.7:/var/www/testsite
Brick3: 192.168.0.3:/var/www/testsite
Brick4: 192.168.0.13:/var/www/testsite
Brick5: 192.168.0.14:/var/www/testsite

Добавляем в /etc/fstab на первом узле (192.168.0.1) следующую строку:

...
localhost:/www    /var/www/svnup             glusterfs rw,nosuid,nodev,exec,nouser,async,_netdev  0 0
...

Монтируем:

mount /var/www/svnup

Теперь можно ‘заливать’ данные в каталог /var/www/svnup на первом узле кластера и они будут легко и просто реплицироваться на все 5 хостов к каталог /var/www/testsite. Это очень удобно, например, для распределения web-контента на бэкэндах.

tweet Share