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

Предисловие

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

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

_x000D_apt-get update_x000D_apt install software-properties-common_x000D_add-apt-repository ppa:gluster/glusterfs-6_x000D_apt-get install glusterfs-server

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

_x000D_yum install centos-release-gluster -y_x000D_yum install glusterfs-server -y_x000D_systemctl enable glusterd.service_x000D_systemctl start glusterd.service

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

_x000D_systemctl status glusterd.service

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

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

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

_x000D_touch /var/lib/glusterd/secure-access

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

_x000D_cd /etc/ssl/_x000D_openssl rand -out ~/.rnd_x000D_openssl genrsa -out glusterfs.key 2048_x000D_openssl req -new -x509 -key glusterfs.key -subj "/CN=`hostname`" -out glusterfs.pem_x000D_cat /etc/ssl/glusterfs.pem > glusterfs.ca

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

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

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

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

_x000D_systemctl restart glusterd.service

Настройка IPTables

_x000D_iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24008 -j ACCEPT_x000D_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 пропишите хосты кластера.

_x000D_192.168.1.10 srv1_x000D_192.168.1.11 srv2

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

_x000D_gluster peer probe srv2

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

_x000D_gluster peer status

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

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

Запустите volume

_x000D_gluster volume start volume1

Настройте volume:

_x000D_gluster volume set volume1 auth.allow '*'_x000D_gluster volume set volume1 nfs.disable on_x000D_gluster volume set volume1 server.ssl on_x000D_gluster volume set volume1 client.ssl on_x000D_gluster volume set volume1 network.ping-timeout 5_x000D_gluster volume set volume1 cluster.self-heal-daemon enable_x000D_gluster volume set volume1 transport.address-family inet_x000D_gluster volume set volume1 performance.readdir-ahead on_x000D_gluster volume set volume1 performance.client-io-threads on_x000D_

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

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

_x000D_mkdir /media/volume1

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

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

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

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

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