Портал > Документация > Изграждане на GlusterFS-базирани клъстерни файлови системи в инфраструктурата на УНИТе под CentOS 7 и Scientific Linux 7
Изграждане на GlusterFS-базирани клъстерни файлови системи в инфраструктурата на УНИТе под CentOS 7 и Scientific Linux 7
Съдържание:
- Предварителна информация
- Изтегляне,инсталиране на необходимите пакети и стартиране на glusterfs върху сървърите, които участват в Gluster FS клъстера
- Предварително разделяне на физическото дисково пространство за споделените Gluster FS дялове и локалното им монтиране върху участниците в клъстера
- Топология на клъстера и настройки на пакетния филтър firewalld
- Създаване на ресурс в Gluster FS клъстера
- Локално монтиране и използване Gluster FS ресурсите върху сървъри и работни станции, които са клиенти на клъстера
- Криптиране на данните, обменяни между участниците в Gluster FS клъстера и клиентите
1. Предварителна информация
Gluster FS е клъстерна файлова система от висок клас, която се използва за предоставяне на мрежово достъпни файлови системи в облачни и HPC инфраструктури. Какви са предимства от използването на Gluster FS в HPC инфраструктура:
Транспортният IPsec протокол има следните предимства:
-
изцяло IP бизирана клъстерна файлова система:
Това ознчава, че както отделните компоненти на клъстера, така и клиентите на ресурсите, могат да се намират в различни физически локации и да са свързани един към друг през Интернет. Не е нужно да се изграждат специални интранет системи, освен в случаите, когато се налага да се поддържа висока скорост на свързаност между участниците в клъстера.
-
позволява избор на активни нодове:
В случай, че някой от компонените в клъстера отпадне, останалите компоненти провеждат избор помежду си и обявяват кои от ресурсите са синхронизирани.
-
позволява използването на RDMA при наличие на InfiniBand свързаност между нодовете:
Това позволява да се постигне висока производителност и да се криптират големи потоци трафик с минимално влошаване на качеството на услугата, заради процеса на криптиране и декриптиране.
2. Изтегляне, инсталиране на необходимите пакети и стартиране на glusterfs върху сървърите, които участват в Gluster FS клъстера
Всички нужни пакети се намират в системното хранилище на CentOS 7 (подобна е ситуацията за Scientific Linux 7). Преди да започнете с инсталирането им, убедете се, че системата е актуализирана и последната версия на пакета kernel е инсталирана и ядрото, която я предоставя, е текущото работно ядро на системата. След това, използвайте yum за да инсталирате пакетите свързани с реализирането на Gluster FS сървъра:
$ sudo yum install centos-release-gluster
$ sudo install glusterfs glusterfs-libs glusterfs-server
За да стартирате Gluster FS мениджъра glusterd и да го укажете за стартиране при зареждане на системата, изпълнете следното:
$ sudo systemctl enable glusterd
$ sudo systemctl restart glusterd
3. Предварително разделяне на физическото дисково пространство за споделените Gluster FS дялове и локалното им монтиране върху участниците в клъстера
ВНИМАНИЕ: Процедурата описана по-долу се изпълнява върху всеки един от сървърите, които ще участват в Gluster FS клъстера. Тя не касае клиентите на клъстера - работни станции и сървъри, които само ще използват ресурсите отдалечено.
За примера по-долу се предполага, че всеки един от трите участника в Gluster FS клъстерирането, има при себе си RAID масив, който е видим локално в системата на участника като /dev/sdb (за примера този масив е с капацитет 4TB). Върху този диск на масив, трябва да се изгради GPT таблица и да се създадат четири дяла от по 1 терабайт, с помощта на parted :
$ sudo parted /dev/sdb mktable gpt
$ sudo parted -a optimal /dev/sdb mkpart primary 0TB 1TB
$ sudo parted -a optimal /dev/sdb mkpart primary 1TB 2TB
$ sudo parted -a optimal /dev/sdb mkpart primary 2TB 3TB
$ sudo parted -a optimal /dev/sdb mkpart primary 3TB 4TB
След това върху всеки един от дяловете трябва да се създаде XFS файлова система:
$ sudo mkfs.xfs /dev/sdb1
$ sudo mkfs.xfs /dev/sdb2
$ sudo mkfs.xfs /dev/sdb3
$ sudo mkfs.xfs /dev/sdb4
Накрая, изпълнете blkid и проверте дали създадените XFS файлови системи са детектирани от ядрото. Трябва да видите резултат подобен на следния (гледайте първата колонка и тази с "TYPE"):
/dev/sdb1: UUID="7b28d124-146b-4fb5-8487-f77c2cb7b209" TYPE="xfs" PARTLABEL="primary" PARTUUID="6b353844-4760-4222-9131-3ed419940b69"
/dev/sdb2: UUID="690d2c92-3c86-4fd0-ac7c-f02c9995c79e" TYPE="xfs" PARTLABEL="primary" PARTUUID="c5b233cb-d2fd-47bf-a433-bec37efafa9e"
/dev/sdb3: UUID="bdeead8d-29a0-44a4-b3de-6ebd31712b59" TYPE="xfs" PARTLABEL="primary" PARTUUID="c5aa2c04-f79c-4ff8-a3e7-2c316a40b9ef"
/dev/sdb4: UUID="5755ab80-d76c-4fad-af20-1529b690051f" TYPE="xfs" PARTLABEL="primary" PARTUUID="fabfb0a8-0650-4548-9d59-9bfeac390847"
Във файла /etc/fstab създайте следните записи (вижте във вашия случай конкретните стойности на UUID - те ще са различни от тези в примера):
UUID=7b28d124-146b-4fb5-8487-f77c2cb7b209 /srv/glfs1 xfs defaults 0 0
UUID=690d2c92-3c86-4fd0-ac7c-f02c9995c79e /srv/glfs2 xfs defaults 0 0
UUID=bdeead8d-29a0-44a4-b3de-6ebd31712b59 /srv/glfs3 xfs defaults 0 0
UUID=5755ab80-d76c-4fad-af20-1529b690051f /srv/glfs4 xfs defaults 0 0
За да монтирате дяловете, съгласно въведената в /etc/fstab информация, изпълнете:
$ sudo mount -a
и ако не получите съобщение за грешка, ще видите дяловете с XFS файловите системи монтирани локално в /srv . Ако изпълните:
$ ls /srv
ще получите следния списък:
glfs1 glfs2 glfs3 glfs4
4. Топология на клъстера и настройки на пакетния филтър firewalld
ВНИМАНИЕ! Всичко в тази секция касае само сървърите, които са част от топологията на клъстера и не се отнася за работните станции и онези сървъри в инфраструктурата на УНИТе, които използват ресурсите от клъстера в ролята си на клиент!
За илюстрация на примерните конфигурации по-долу се предполага, че следните хостове ще участват в клъстерирането на Gluster FS ресурси (IPv4 адреса на хоста е в скобите):
host1.unite (192.168.199.1)
host2.unite (192.168.199.2)
host3.unite (192.168.199.3)
Дамонът glusterfsd слуша на порт ≥ 49152/tcp, като за всеки ресурс се стартира отделен порт. Този порт трябва да е достъпен на всеки от хостовете за останалите хостове в клъстера (за да има комуникация помежду им) и отделно трябва да бъде достъпен за клиентите, които ще монтират ресурси от клъстера локално при себе си. Допълнително, когато създавате споделени ресурси в клъстера, те могат да изискат използване на още един порт, ≥ 24007, по който да синхронизират комуникацията помежду си. Добре е предварително да отворите поне няколко порта ≥ 24007/tcp и 49152/tcp, за да може да покриете евентуалното деклариране на нови ресурси в клъстера, без да се налага да редактирате конфигурацията на firewalld . Това ознчава, че следните firewalld правила трябва да бъдат зададени върху всички членове на клъстера:
-
на host1.unite (192.168.199.1):
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.2/32 destination address=192.168.199.1/32 port port=49152-50000 protocol=tcp accept'
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.2/32 destination address=192.168.199.1/32 port port=24007-24017 protocol=tcp accept'
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.3/32 destination address=192.168.199.1/32 port port=49152-50000 protocol=tcp accept'
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.3/32 destination address=192.168.199.1/32 port port=24007-24017 protocol=tcp accept'
$ sudo firewall-cmd --reload
-
на host2.unite (192.168.199.2):
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.1/32 destination address=192.168.199.2/32 port port=49152-50000 protocol=tcp accept'
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.1/32 destination address=192.168.199.2/32 port port=24007-24017 protocol=tcp accept'
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.3/32 destination address=192.168.199.2/32 port port=49152-50000 protocol=tcp accept'
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.3/32 destination address=192.168.199.2/32 port port=24007-24017 protocol=tcp accept'
$ sudo firewall-cmd --reload
-
на host3.unite (192.168.199.3):
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.1/32 destination address=192.168.199.3/32 port port=49152-50000 protocol=tcp accept'
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.1/32 destination address=192.168.199.3/32 port port=24007-24017 protocol=tcp accept'
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.2/32 destination address=192.168.199.3/32 port port=49152-50000 protocol=tcp accept'
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.199.2/32 destination address=192.168.199.3/32 port port=24007-24017 protocol=tcp accept'
$ sudo firewall-cmd --reload
5. Създаване на ресурс в Gluster FS клъстера
ВНИМАНИЕ! Всичко в тази секция касае само сървърите, които са част от топологията на клъстера и не се отнася за работните станции и онези сървъри в инфраструктурата на УНИТе, които използват ресурсите от клъстера в ролята си на клиент!
След като сте извършили всичко, както е описано по-горе, ще можете да пристъпите към декларирате ресурси в клъстера.
Сканирайте хостовете, които ще участват в клъстера за дадения ресурс. Това сканиране е необходимо, за да могат те да бъдат включени в таблицата на топологията на клъстера:
-
на host1.unite (192.168.199.1):
$ sudo gluster peer probe host2.unite
$ sudo gluster peer probe host3.unite
-
на host2.unite (192.168.199.2):
$ sudo gluster peer probe host1.unite
$ sudo gluster peer probe host3.unite
-
на host3.unite (192.168.199.3):
$ sudo gluster peer probe host1.unite
$ sudo gluster peer probe host2.unite
При успешна комуникация в хода на сканиранете, ще получавате отговора:
peer probe: success.
В случай, че хоста е вече добавен в таблицата с топологията, ще бъде върнат резултат подобен на:
peer probe: success. Host host1.unite port 24007 already in peer list
За нуждите на инфраструктурата на УНИТе, ще са нужни два типа Gluster FS ресурси:
репликиран/резериван:
Този ресурс използва модел на репликация - изравнява съдържанието на една директория (чието съдържание е обект на ресурса) върху всички хостове в топологията. Създаването на подобен ресурс може да стане по следния начин:
$ sudo gluster volume create glfs-vol1 replica 3 transport tcp host1.unite:/srv/glfs1/storage host2.unite:/srv/glfs1/storage host3.unite:/srv/glfs1/storage
ВАЖНО! При наличието на RDMA, вместо tcp , при декларирането на ресурса, задайте tcp,rdma . При успешното създаване на ресурса, ще получите следното съобщение:
volume create: glfs-vol1: success: please start the volume to access data
Репликираният ресурс ще е представен и на трите хоста в топологията като директория /srv/glfs1/storage , която ще има едно и също съдържание и на трите хоста. След като ресурса е бил създаден, той трябва да се стартира, за да е достъпен:
$ sudo gluster volume start glfs-vol1
При успешно стартиране, ще получите като резултат:
volume start: glfs-vol1: success
дистрибутиран:
Този ресурс използва модел на репликация, който е аналог на модела на RAID0 - разпростира една директория и съдържанието ѝ върху няколко носителя, които са на различни хостове. Създаването на подобен ресурс може да стане по следния начин:
$ sudo gluster volume create glfs-vol2 disperse 3 transport tcp host1.unite:/srv/glfs2/scratch host2.unite:/srv/glfs2/scratch host3.unite:/srv/glfs2/scratch
ВАЖНО! При наличието на RDMA, вместо tcp , при декларирането на ресурса, задайте tcp,rdma . При успешното създаване на ресурса, ще получите следното съобщение:
volume create: glfs-vol2: success: please start the volume to access data
Репликираният ресурс ще е представен и на трите хоста в топологията като директория /srv/glfs2/scratch , която ще има привидно едно и също съдържание и на трите хоста. След като ресурса е бил създаден, той трябва да се стартира, за да е достъпен:
$ sudo gluster volume start glfs-vol2
При успешно стартиране, ще получите като резултат:
volume start: glfs-vol2: success
За да видите моментното състояние на ресурсите в клъстера, може да изпълните:
$ sudo gluster volume status
Ако предположим, че са изградени два ресурса, съгласно примерите по-горе, то резултата ще бъде побен на следния:
Status of volume: glfs-vol1
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick host1.unite:/srv/glfs1/storage 49152 0 Y 14469
Brick host2.unite:/srv/glfs1/storage 49152 0 Y 18761
Brick host3.unite:/srv/glfs1/storage 49152 0 Y 2160
Self-heal Daemon on localhost N/A N/A Y 8081
Self-heal Daemon on host2.unite N/A N/A Y 17203
Self-heal Daemon on host3.unite N/A N/A Y 5507
Task Status of Volume glfs-vol1
------------------------------------------------------------------------------
There are no active volume tasks
Status of volume: glfs-vol2
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick host1.unite:/srv/glfs2/temp 49153 0 Y 7989
Brick host2.unite:/srv/glfs2/temp 49153 0 Y 17181
Brick host3.unite:/srv/glfs2/temp 49153 0 Y 5485
Self-heal Daemon on localhost N/A N/A Y 8081
Self-heal Daemon on host2.unite N/A N/A Y 17203
Self-heal Daemon on host3.unite N/A N/A Y 5507
Task Status of Volume glfs-vol2
------------------------------------------------------------------------------
There are no active volume tasks
6. Локално монтиране и използване Gluster FS ресурсите върху сървъри и работни станции, които са клиенти на клъстера
ВНИМАНИЕ! Работните станции и сървъри, които ще монтират Gluster FS ресурси, обикновено не са част от Gluster FS клъстера и добрата практика по управлението на такива ресурси изисква да не бъдат част от него!
На сървърите и работните станции, трябва да имате инсталирани пакетите, чрез които те да могат да бъдат клиенти на Gluster FS ресурс:
$ sudo yum install centos-release-gluster
$ sudo yum install glusterfs-fuse
Когато тествате дали даден Gluster FS ресурс е монтируем локално, използвайте ръчно монтиране. След като се убедите, че ръчното монтиране е успешно, може да направите съответните записи в /etc/fstab за автоматично монтиране на ресурса при зареждане на системата. По-долу са представени и двата начина:
-
ръчно монтиране:
Ръчното монтиране на ресурс става след като той е бил стартиран в клъстера (виж секция 5). В този случай, монтирането може да стане чрез следния команден ред:
$ sudo mount -t glusterfs host1.unite:/glfs-vol1 /storage
Ако получите съобщение за грешка от типа:
Mount failed. Please check the log file for more details.
то най-вероятната причина за това е проблеми с пакетния филтър (при условие, че всички участници в клъстера функционират). Друга причина може да е несъвместимост на версията на FUSE модула за Gluster FS с другите инструменти от клиентския пакет.
-
автоматично монтиране:
Автоматичното монтиране на ресурс работи само за тези ресурси, които са достъпни в момента в клъстера (виж секция 5). Монтирането на ресурса при зареждане на системата се случва само, ако е било предварително зададено glusterd да бъде зареждан при стартирането на системата. Записът в /etc/fstab , на база на който ще става автоматичното монтиране, изглежда по подобен начин (заменете хоста и точката на монтирате с тази, която отговаря на вашата топология на ресурси и локална файлова система):
host1.unite:/glfs-vol1 /storage glusterfs defaults,_netdev 0 0
7. Криптиране на данните, обменяни между участниците в Gluster FS клъстера и клиентите
|