Мы будем выполнять установку GlusterFS на 3 узла и использовать фактор репликации равный трем. Это позволяет потерять любой из узлов и при этом не столкнуться с ситуацией «split-brain», которая характерна для хранения данных с фактором репликации равным 2, когда каждая копия может считать себя правильной и продолжать функционировать, накапливая рассогласования.
Установить сервер NTPD на каждом из узлов:
sudo yum install -y ntp
sudo systemctl start ntpd
sudo systemctl enable ntpd
Создем директорию:
mkdir /app/glusterfs
устанавливаем и включаем glusterfs
yum -y install centos-release-gluster9 && yum -y install glusterfs-server
sudo systemctl enable glusterd && sudo systemctl start glusterd
Установка на Oracle Linux 8
dnf install oracle-gluster-release-el8 -y
dnf install @glusterfs/server -y
dnf install @glusterfs/client -y
Добавляем в /etc/hosts
172.17.11.149 SRV-TT-DCR21.wiset.pp.ua SRV-TT-DCR21
172.17.11.114 SRV-TT-DCR22.wiset.pp.ua SRV-TT-DCR22
172.17.11.160 SRV-TT-DCR23.wiset.pp.ua SRV-TT-DCR23
Для добавления в пул узлов необходимо на любом из узлов выполнить команду
На ноде которой мы находимся добавляють в пул не нужно
gluster peer probe srv-tt-dcr22
gluster peer probe srv-tt-dcr23
Посмотреть добавленные в пул узлы можно командой:
sudo gluster pool list
Вывод будет следующий:
UUID Hostname State
5b8a7fe5-47ae-477e-b3a6-bb0ecd330dcf srv-tt-dcr22 Connected
e09e9778-128a-4234-9de3-8d6582675b76 srv-tt-dcr23 Connected
247fe625-9417-4dac-bdcc-c1f03f790224 localhost Connected
Теперь, когда все серверы находятся в пуле, можно создать том для хранения данных.
В нашем случае мы указываем 3-и реплиики
gluster volume create dcrttgfs replica 3 srv-tt-dcr2{1,2,3}:/app/glusterfs force
На ноде srv-tt-dcr21
выполняем убедившись что создался том.
gluster volume list
Вывод будет:
dcrttgfs
Для активации тома dcrttgfs
gluster volume start dcrttgfs
Проверить состояние тома:
gluster volume info all
Вывод будет следующий:
Volume Name: dcrttgfs
Type: Replicate
Volume ID: feb7c9a4-4cf1-4551-9e22-689292cb9fbc
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: srv-tt-dcr21:/app/glusterfs
Brick2: srv-tt-dcr22:/app/glusterfs
Brick3: srv-tt-dcr23:/app/glusterfs
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
Больше переменных тут
gluster volume set dcrttgfs network.ping-timeout 5
- периуд после которого нода считается не доступна. (По умолчанию 42 сек.)
gluster volume set dcrttgfs cluster.quorum-type fixed
- разрешает писать в файл если значение >= значения cluster.quorum-count
gluster volume set dcrttgfs cluster.quorum-count 1
- минимальное количество блоков, которые должны быть активны в наборе реплик, чтобы разрешить запись
gluster volume set dcrttgfs performance.quick-read on
- быстрое чтение данных
Установите для параметра quorum-type значение auto, чтобы разрешить запись в файл только в том случае, если процент активных блоков репликации превышает 50 % от общего числа блоков, составляющих эту реплику
gluster volume set VOLNAME quorum-type auto
Более детально об этом описано тут
Повтаряем на всех нодах
Создаем директорию
mkdir -p /app/glusterfs-mounts/dcrttgfs
Монтируем том в ручном режиме, выполнив на каждой ноде
.
mount.glusterfs SRV-TT-DCR22:/dcrttgfs /app/glusterfs-mounts/dcrappgfs
Проверяем добавление файла, должен появится на всех нодах.
echo "222" > /app/glusterfs-mounts/dcrappgfs/test.txt
Добавляем в /etc/fstab
каждой ноды
и перегружаем по очередно.
SRV-TT-DCR21:/dcrttgfs /app/glusterfs-mounts/dcrttgfs glusterfs defaults,_netdev 0 0
gluster peer probe srv-tt-dcr05
mkdir /app/glusterfs
mkdir -p /app/glusterfs-mounts/dcrttgfs
Смотрим информацию по volume gluster volume info
Volume Name: dcrttgfs
Type: Replicate
Volume ID: e380e491-4d25-4cef-a549-eb9743e309dc
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: srv-tt-dcr01:/app/glusterfs
Brick2: srv-tt-dcr02:/app/glusterfs
Brick3: srv-tt-dcr03:/app/glusterfs
Brick4: srv-tt-dcr04:/app/glusterfs
Options Reconfigured:
performance.quick-read: on
cluster.quorum-count: 1
cluster.quorum-type: fixed
network.ping-timeout: 5
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
cluster.server-quorum-ratio: 51%
Добавляем brick
gluster volume add-brick dcrttgfs replica 5 srv-tt-dcr05:/app/glusterfs
если при добавлении brick
выдает ошибку:
volume add-brick: failed: /app/glusterfs is already part of a volume
то тогда добавляем force
:
gluster volume add-brick dcrttgfs replica 5 srv-tt-dcr05:/app/glusterfs force
Смотрим изменения по volume gluster volume info
Volume Name: dcrttgfs
Type: Replicate
Volume ID: e380e491-4d25-4cef-a549-eb9743e309dc
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 5 = 5
Transport-type: tcp
Bricks:
Brick1: srv-tt-dcr01:/app/glusterfs
Brick2: srv-tt-dcr02:/app/glusterfs
Brick3: srv-tt-dcr03:/app/glusterfs
Brick4: srv-tt-dcr04:/app/glusterfs
Brick5: srv-tt-dcr05:/app/glusterfs
Options Reconfigured:
performance.quick-read: on
cluster.quorum-count: 1
cluster.quorum-type: fixed
network.ping-timeout: 5
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
cluster.server-quorum-ratio: 51%
Монтируем в /etc/fstab
SRV-TT-DCR05:/dcrttgfs /app/glusterfs-mounts/dcrttgfs glusterfs defaults,_netdev 0 0
gluster volume get dcrttgfs all
- вывод всех значений переменных для раздела dcrttgfs
gluster volume get dcrttgfs auth.allow
- вывод значения определенной переменной
Статья взята по этой ссылке