Установка и настройка репликации GlusterFS

Пример установки и настройки репликации GlusterFS с защитой SSL сертификатов.

Предисловие

GlusterFS на тестах показал очень низкую производительность. Был создан кластер из двух серверов и одним клиентом с гигабитным каналам. Rsync и обычный cp работал со скоростью 70.59kB/s. 200МБ копировался час. Вобщем производительность у гластера очень низкая.

Установка на Ubuntu

apt-get update
apt install software-properties-common
add-apt-repository ppa:gluster/glusterfs-6
apt-get install glusterfs-server

Установка на Centos 7

yum install centos-release-gluster -y
yum install glusterfs-server -y
systemctl enable glusterd.service
systemctl start glusterd.service

Проверка статуса запуска

systemctl status glusterd.service

Настройка безопасности

По умолчанию, к кластеру может подключиться любой. Чтобы этого не произошло, нужно включить SSL и создать сертификаты. Тогда к вашему кластеру могут подключиться только те сервера чьи сертификаты прописаны в glusterfs.ca.

Включите SSL настройки:

touch /var/lib/glusterd/secure-access

На каждом хосте, входящий в кластер glusterfs сделайте следующие настройки:

cd /etc/ssl/
openssl rand -out ~/.rnd
openssl genrsa -out glusterfs.key 2048
openssl req -new -x509 -key glusterfs.key -subj "/CN=`hostname`" -out glusterfs.pem
cat /etc/ssl/glusterfs.pem > glusterfs.ca

Файл glusterfs.ca должен содержать ключи со всех серверов содержимого файлов glusterfs.pem.

При желании можете сгенерировать dhparam:

openssl dhparam -out /etc/ssl/dhparam.pem 4096

После настроек перезапустите сервис:

systemctl restart glusterd.service

Настройка IPTables

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24008 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 49152:49190 -j ACCEPT

Создание кластера реплики

Предположим у вас два сервера с IP адресами 192.168.1.10 и 192.168.1.11. На них будет установлен gluster сервер с репликой. На каждом хосте в файле /etc/hosts пропишите хосты кластера.

192.168.1.10 srv1
192.168.1.11 srv2

На 0м сервере выполните команду. Это позволит подключить первый сервер к нулевому.

gluster peer probe srv2

Проверьте подключение пиров:

gluster peer status

После подключение серверов, создайте на двух серверах папки /data/volume1. Там будут хранится файлы кластера.

gluster volume create volume1 replica 3 arbiter 1 transport tcp srv1:/data/volume1 srv2:/data/volume1 srv1:/data/volume1_arbiter

Запустите volume

gluster volume start volume1

Настройте volume:

gluster volume set volume1 auth.allow '*'
gluster volume set volume1 nfs.disable on
gluster volume set volume1 server.ssl on
gluster volume set volume1 client.ssl on
gluster volume set volume1 network.ping-timeout 5
gluster volume set volume1 cluster.self-heal-daemon enable
gluster volume set volume1 transport.address-family inet
gluster volume set volume1 performance.readdir-ahead on
gluster volume set volume1 performance.client-io-threads on

В параметре auth.allow вы можете указать IP адреса клиентов через запятую, которые могут монтировать volume. Например: 192.168.1.15,192.168.1.50

На клиенте. Создайте папку.

mkdir /media/volume1

Подключитесь к кластеру с клиента:

mount.glusterfs -o backupvolfile-server=srv2 srv1:/volume1 /media/volume1

Если все прошло успешно, добавьте монтирование в /etc/fstab.

srv1:/volume1 /media/volume1 glusterfs defaults,_netdev,backupvolfile-server=srv2 0 0

Опция backupvolfile-server позволяет, если не доступен srv1, подключаться к srv2. Это работает только в момент первого подключения к кластеру. После подключения к кластеру, клиент узнает все IP адреса кластера, и уже работает с ними напрямую.

Информация

  1. Setting up GlusterFS with SSL/TLS
  2. High-Availability Storage with GlusterFS on CentOS 7 — Mirror across two storage servers
  3. Setting up GlusterFS Volumes
  4. Configure a High-Availability Storage with GlusterFS on Ubuntu 18.04 LTS
  5. Установка и настройка GlusterFS
  6. How to install GlusterFS with a replicated high availability storage volume on Ubuntu Linux 16.04 LTS
  7. How to enable TLS/SSL encryption with Glusterfs storage cluster on Linux
  8. GlusterFS performance tuning