GlusterFS. Centos 7. Установка и настройка: различия между версиями

Материал из Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «Категория:GlusterFS __ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__»)
 
Строка 1: Строка 1:
[[Категория:GlusterFS]]
[[Категория:GlusterFS]]
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__
== Ссылки ==
[https://bogachev.biz/2019/11/05/nastraivaem-raspredelyonnuyu-faylovuyu-sistemu-glusterfs-na-centos-7/https://ivirt-it.ru/glusterfs-create-volumes/http://sysadm.pp.ua/linux/glusterfs-setup.html https://bogachev.biz/2019/11/05/nastraivaem-raspredelyonnuyu-faylovuyu-sistemu-glusterfs-na-centos-7/]
[https://bogachev.biz/2019/11/05/nastraivaem-raspredelyonnuyu-faylovuyu-sistemu-glusterfs-na-centos-7/https://ivirt-it.ru/glusterfs-create-volumes/http://sysadm.pp.ua/linux/glusterfs-setup.html https://ivirt-it.ru/glusterfs-create-volumes/]
[https://bogachev.biz/2019/11/05/nastraivaem-raspredelyonnuyu-faylovuyu-sistemu-glusterfs-na-centos-7/https://ivirt-it.ru/glusterfs-create-volumes/http://sysadm.pp.ua/linux/glusterfs-setup.html http://sysadm.pp.ua/linux/glusterfs-setup.html]
== Описание ==
Для создания кластера будем использовать 3 машины Сentos 7
Соответствие "'''IP - hostname'''" пропишем либо в '''/etc/hosts''' на каждой машине, либо на DNS сервере, на который смотрят машины.
Все машины кластера, а также КЛИЕНТ, НА КОТОРОМ БУДЕМ МОНТИРОВАТЬ "VOLUME" должны видеть все машины кластера по HOSTNAME !
'''192.168.199.111''' - gfs01
'''192.168.199.112''' - gfs02
'''192.168.199.113''' - gfs03
== Настройка ==
=== На всех машинах ===
Установка утилит и включение сервисов
<code>systemctl enable firewalld</code>
<code>systemctl start firewalld</code>
<code>yum install epel-release -y</code>
<code>yum install yum-priorities yum-utils -y</code>
<code>yum install centos-release-gluster -y</code>
<code>yum install glusterfs-server -y</code>
<code>systemctl start glusterd</code>
<code>systemctl enable glusterd</code>
<code>firewall-cmd --zone=public --add-service=nfs --add-service=samba --add-service=samba-client --permanent</code>
<code>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=24007-24009/tcp --add-port=49152-49251/tcp  --permanent</code>
<code>firewall-cmd --zone=public --add-port=24007-24008/tcp --permanent</code>
<code>firewall-cmd --zone=public --add-port=24009/tcp --permanent</code>
<code>firewall-cmd --zone=public --add-service=nfs --add-service=samba --add-service=samba-client --permanent</code>
<code>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</code>
<code>firewall-cmd --reload</code>
Команды для формирования доверенного пула хранения с соседними хостами
<code>gluster peer probe gfs01</code>
<code>gluster peer probe gfs02</code>
<code>gluster peer probe gfs03</code>
Проверяем
<code>gluster peer status</code>
Number of Peers: 2
Hostname: gfs02
Uuid: 247b073e-1bb2-4784-b3d5-a39a915f3d17
State: Peer in Cluster (Connected)
Hostname: gfs03
Uuid: 3befd565-5cff-48d4-9b8e-f1956119e0b4
State: Peer in Cluster (Connected)
<code>gluster pool list</code>
UUID                    Hostname     State
247b073e-1bb2-4784-b3d5-a39a915f3d17    gfs02        Connected
3befd565-5cff-48d4-9b8e-f1956119e0b4    gfs03        Connected
bc6f57b3-ddb9-4511-b9da-3202950eb43c    localhost    Connected
Создаём брики (сущности, обслуживающие свои отдельные директории или диски)
==== Вариант 1. Локальная директория хранения данных ====
<code>mkdir -p /mnt/gfs_data01</code>
==== Вариант 2. LVM-Thin - отдельный примонтированный раздел ('''sdb''') ====
<code>fdisk /dev/sdb</code>
<code>   n, Enter, Enter, Enter, Enter, w</code>
<code>pvcreate /dev/sdb1</code>
<code>vgcreate vg01 /dev/sdb1</code>
<code>lvcreate -l 100%FREE -T vg01/lv01</code>
   ИЛИ
<code>lvcreate -L 20G -T vg01/lv01</code>
<code>mkfs.ext4 /dev/mapper/vg01-lv01</code>
<code>mkdir /mnt/gfs_data01</code>
<code>mount /dev/mapper/vg01-lv01 /mnt/gfs_data01/</code>
<code>echo "/dev/mapper/vg01-lv01 /mnt/gfs_data01 ext4 defaults 0 0" >> /etc/fstab</code>
Не нужно использовать корень монтирования для хранения данных брика '''glusterfs'''
Создаем для этого директорию '''data''' в корне примонтированного диска
<code>mkdir /mnt/gfs_data01/data</code>
=== На любой одной машине ===
==== Вариант 1. Replicated. Репликация ====
<blockquote>Создаем '''Distributed Replicated VOLUME'''
('''ОТКАЗОУСТОЙЧИВЫЙ''')
Все ФС бриков в кластере ('''3''') реплицируются
На клиенте объем примонтированной ФС будет '''N''', где '''N''' - объем брика на каждой машине кластера</blockquote><code>gluster volume create gfs_volume01 replica 3 gfs01:/mnt/gfs_data01/data gfs02:/mnt/gfs_data01/data gfs03:/mnt/gfs_data01/data force</code>
Запускаем VOLUME
gluster volume start gfs_volume01
Проверяем статус
<code>gluster volume status gfs_volume01</code>
Остановить volume
<code>gluster volume stop gfs_volume02</code>
Удалить volume
<code>gluster volume delete gfs_volume02</code>
Настраиваем отказоустойчивость
'''''network.ping-timeout''''' - устанавливаем период опроса в 5 секунд, вместо 42 по умолчанию.
'''''cluster.quorum-type(нет|auto|fixed)''''' - Если установлено значение fixed, этот параметр разрешает запись в файл, только если количество активных блоков в этом наборе реплик (к которому принадлежит файл) больше или равно количеству, указанному в параметре quorum-count.
'''''cluster.quorum-count''''' - количество блоков, которые должны быть активны в наборе реплик, чтобы разрешить запись.
'''''performance.quick-read(on|off)''''' - включение быстрого чтения для транслятора пула.
<code>gluster volume set gfs_volume01 network.ping-timeout 5</code>
<code>gluster volume set gfs_volume01 cluster.quorum-type fixed</code>
<code>gluster volume set gfs_volume01 cluster.quorum-count 1</code>
<code>gluster volume set gfs_volume01 performance.quick-read on</code>
==== Вариант 2. Distributed ====
<blockquote>При данной настройке данные будут распределяться в случайном порядке между каждой папкой, которая входит в volume
('''УВЕЛИЧЕНИЕ ОБЪЕМА ЗА СЧЕТ СУММИРОВАНИЯ ФС БРИКОВ''')
Создаем Distributed VOLUME ('''НЕОТКАЗОУСТОЙЧИВЫЙ - ПОВЫШАЕМ ОБЩИЙ ОБЪЕМ''')
Все ФС бриков в кластере (3) складываются</blockquote>На клиенте объем примонтированной ФС будет N*3, где '''N''' - объем брика на каждой машине кластера, 3 - кол-во бриков в кластере
<code>gluster volume create gfs_volume01 gfs01:/mnt/gfs_data01 gfs02:/mnt/gfs_data01 gfs03:/mnt/gfs_data01 force</code>
Запускаем VOLUME
<code>gluster volume start gfs_volume01</code>
Проверяем статус
<code>gluster volume status gfs_volume01</code>
Остановить volume
<code>gluster volume stop gfs_volume02</code>
Удалить volume
<code>gluster volume delete gfs_volume02</code>
=== Монтируем пулы сами к себе ===
<blockquote>НЕОБЯЗАТЕЛЬНО - ПРОСТО ДЛЯ ПРОВЕРКИ ИСПОЛЬЗОВАНИЯ МАШИН КЛАСТЕРА В КАЧЕСТВЕ КЛИЕНТОВ GLUSTERFS</blockquote>На каждой машине вводить соответствующую ей команду
==== On gfs01 ====
<code>mkdir /mnt/gfs_volume01</code>
<code>mount -t glusterfs gfs01:/gfs_volume01 /mnt/gfs_volume01</code>
==== On gfs02 ====
<code>mkdir /mnt/gfs_volume01</code>
<code>mount -t glusterfs gfs02:/gfs_volume01 /mnt/gfs_volume01</code>
==== On gfs03 ====
<code>mkdir /mnt/gfs_volume01</code>
<code>mount -t glusterfs gfs03:/gfs_volume01 /mnt/gfs_volume01</code>
Автомонтирование
<code>nano /etc/fstab</code>
==== On gfs01 ====
<code>gfs01:/gfs_volume01 /mnt/gfs_volume01 glusterfs defaults,_netdev 0 0</code>
==== On gfs02 ====
<code>gfs02:/gfs_volume01 /mnt/gfs_volume01 glusterfs defaults,_netdev 0 0</code>
==== On gfs03 ====
<code>gfs03:/gfs_volume01 /mnt/gfs_volume01 glusterfs defaults,_netdev 0 0</code>
Кладем в '''/mnt/gfs_volume01''' файл
Проверяем что на всех машинах по этому пути файл синхронизируется
=== Монтируем gfs-volume на другой машине ===
<blockquote>Все машины gfs-кластера должны быть видны по hostname, поэтому на клиенте либо правим соответствие в /etc/hosts, либо прописываем соответствие имен ip-адресам на dns-сервере</blockquote>
==== Centos 7 ====
<code>yum install glusterfs-fuse</code>
==== Debian 10 ====
<code>apt install glusterfs-client</code>
Монтируем
<code>mkdir /mnt/gfs_volume01</code>
<code>mount -t glusterfs gfs01:/gfs_volume01 /mnt/gfs_volume01</code>
Проверяем
<code>df -h</code>
При ошибках смотрим логи
<code>cat /var/log/glusterfs/opt-tmp.log</code>

Версия 21:13, 25 марта 2022


Ссылки

https://bogachev.biz/2019/11/05/nastraivaem-raspredelyonnuyu-faylovuyu-sistemu-glusterfs-na-centos-7/

https://ivirt-it.ru/glusterfs-create-volumes/

http://sysadm.pp.ua/linux/glusterfs-setup.html

Описание

Для создания кластера будем использовать 3 машины Сentos 7

Соответствие "IP - hostname" пропишем либо в /etc/hosts на каждой машине, либо на DNS сервере, на который смотрят машины.

Все машины кластера, а также КЛИЕНТ, НА КОТОРОМ БУДЕМ МОНТИРОВАТЬ "VOLUME" должны видеть все машины кластера по HOSTNAME !

192.168.199.111 - gfs01

192.168.199.112 - gfs02

192.168.199.113 - gfs03

Настройка

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

Установка утилит и включение сервисов

systemctl enable firewalld

systemctl start firewalld

yum install epel-release -y

yum install yum-priorities yum-utils -y

yum install centos-release-gluster -y

yum install glusterfs-server -y

systemctl start glusterd

systemctl enable glusterd

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=24007-24009/tcp --add-port=49152-49251/tcp  --permanent

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

Команды для формирования доверенного пула хранения с соседними хостами

gluster peer probe gfs01

gluster peer probe gfs02

gluster peer probe gfs03

Проверяем

gluster peer status

Number of Peers: 2
Hostname: gfs02
Uuid: 247b073e-1bb2-4784-b3d5-a39a915f3d17
State: Peer in Cluster (Connected)
Hostname: gfs03
Uuid: 3befd565-5cff-48d4-9b8e-f1956119e0b4
State: Peer in Cluster (Connected)

gluster pool list

UUID                    Hostname     State
247b073e-1bb2-4784-b3d5-a39a915f3d17    gfs02        Connected
3befd565-5cff-48d4-9b8e-f1956119e0b4    gfs03        Connected
bc6f57b3-ddb9-4511-b9da-3202950eb43c    localhost    Connected

Создаём брики (сущности, обслуживающие свои отдельные директории или диски)

Вариант 1. Локальная директория хранения данных

mkdir -p /mnt/gfs_data01

Вариант 2. LVM-Thin - отдельный примонтированный раздел (sdb)

fdisk /dev/sdb

   n, Enter, Enter, Enter, Enter, w

pvcreate /dev/sdb1

vgcreate vg01 /dev/sdb1

lvcreate -l 100%FREE -T vg01/lv01

   ИЛИ

lvcreate -L 20G -T vg01/lv01

mkfs.ext4 /dev/mapper/vg01-lv01

mkdir /mnt/gfs_data01

mount /dev/mapper/vg01-lv01 /mnt/gfs_data01/

echo "/dev/mapper/vg01-lv01 /mnt/gfs_data01 ext4 defaults 0 0" >> /etc/fstab

Не нужно использовать корень монтирования для хранения данных брика glusterfs

Создаем для этого директорию data в корне примонтированного диска

mkdir /mnt/gfs_data01/data

На любой одной машине

Вариант 1. Replicated. Репликация

Создаем Distributed Replicated VOLUME

(ОТКАЗОУСТОЙЧИВЫЙ)

Все ФС бриков в кластере (3) реплицируются

На клиенте объем примонтированной ФС будет N, где N - объем брика на каждой машине кластера

gluster volume create gfs_volume01 replica 3 gfs01:/mnt/gfs_data01/data gfs02:/mnt/gfs_data01/data gfs03:/mnt/gfs_data01/data force

Запускаем VOLUME

gluster volume start gfs_volume01

Проверяем статус

gluster volume status gfs_volume01

Остановить volume

gluster volume stop gfs_volume02

Удалить volume

gluster volume delete gfs_volume02

Настраиваем отказоустойчивость

network.ping-timeout - устанавливаем период опроса в 5 секунд, вместо 42 по умолчанию.

cluster.quorum-type(нет|auto|fixed) - Если установлено значение fixed, этот параметр разрешает запись в файл, только если количество активных блоков в этом наборе реплик (к которому принадлежит файл) больше или равно количеству, указанному в параметре quorum-count.

cluster.quorum-count - количество блоков, которые должны быть активны в наборе реплик, чтобы разрешить запись.

performance.quick-read(on|off) - включение быстрого чтения для транслятора пула.

gluster volume set gfs_volume01 network.ping-timeout 5

gluster volume set gfs_volume01 cluster.quorum-type fixed

gluster volume set gfs_volume01 cluster.quorum-count 1

gluster volume set gfs_volume01 performance.quick-read on

Вариант 2. Distributed

При данной настройке данные будут распределяться в случайном порядке между каждой папкой, которая входит в volume

(УВЕЛИЧЕНИЕ ОБЪЕМА ЗА СЧЕТ СУММИРОВАНИЯ ФС БРИКОВ)

Создаем Distributed VOLUME (НЕОТКАЗОУСТОЙЧИВЫЙ - ПОВЫШАЕМ ОБЩИЙ ОБЪЕМ)

Все ФС бриков в кластере (3) складываются

На клиенте объем примонтированной ФС будет N*3, где N - объем брика на каждой машине кластера, 3 - кол-во бриков в кластере

gluster volume create gfs_volume01 gfs01:/mnt/gfs_data01 gfs02:/mnt/gfs_data01 gfs03:/mnt/gfs_data01 force

Запускаем VOLUME

gluster volume start gfs_volume01

Проверяем статус

gluster volume status gfs_volume01

Остановить volume

gluster volume stop gfs_volume02

Удалить volume

gluster volume delete gfs_volume02

Монтируем пулы сами к себе

НЕОБЯЗАТЕЛЬНО - ПРОСТО ДЛЯ ПРОВЕРКИ ИСПОЛЬЗОВАНИЯ МАШИН КЛАСТЕРА В КАЧЕСТВЕ КЛИЕНТОВ GLUSTERFS

На каждой машине вводить соответствующую ей команду

On gfs01

mkdir /mnt/gfs_volume01

mount -t glusterfs gfs01:/gfs_volume01 /mnt/gfs_volume01

On gfs02

mkdir /mnt/gfs_volume01

mount -t glusterfs gfs02:/gfs_volume01 /mnt/gfs_volume01

On gfs03

mkdir /mnt/gfs_volume01

mount -t glusterfs gfs03:/gfs_volume01 /mnt/gfs_volume01

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

nano /etc/fstab

On gfs01

gfs01:/gfs_volume01 /mnt/gfs_volume01 glusterfs defaults,_netdev 0 0

On gfs02

gfs02:/gfs_volume01 /mnt/gfs_volume01 glusterfs defaults,_netdev 0 0

On gfs03

gfs03:/gfs_volume01 /mnt/gfs_volume01 glusterfs defaults,_netdev 0 0

Кладем в /mnt/gfs_volume01 файл

Проверяем что на всех машинах по этому пути файл синхронизируется

Монтируем gfs-volume на другой машине

Все машины gfs-кластера должны быть видны по hostname, поэтому на клиенте либо правим соответствие в /etc/hosts, либо прописываем соответствие имен ip-адресам на dns-сервере

Centos 7

yum install glusterfs-fuse

Debian 10

apt install glusterfs-client

Монтируем

mkdir /mnt/gfs_volume01

mount -t glusterfs gfs01:/gfs_volume01 /mnt/gfs_volume01

Проверяем

df -h

При ошибках смотрим логи

cat /var/log/glusterfs/opt-tmp.log