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

Материал из Wiki
Перейти к навигации Перейти к поиску


Ссылки

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