GlusterFS replicated

Я хочу поделиться своим  DocumentRoot /var/www/html/ между двумя веб серверами Apache. Оба моих веб-сервера стоят за балансировщиком распределения нагрузки прокси сервера Nginx. Как настроить и установить GlusterFS ( «распределенное хранилище»), которая является масштабируемой сетевой файловой системой на сервер?

GlusterFS является сетевой файловой системой распределенного хранения с свободным и открытым исходным кодом. Сеть распределенных файловых систем хранения очень популярна среди веб-сайтов для интеренет торговли с свысокой нагрузкой, облачных вычислений, потоковых медиа-услуг, (сети доставки контента) CDN и многое другое.

Облако или физический сервер будет единственной точкой отказа. Например /var/www/html/ может быть точкой отказа?  Мы используем два веб-сервера Apache. Тем не менее, как обечпечитьт, чтобы /var/www/html/ синхронизируются на обоих серверах Apache? Вы не хотите, чтобы данные и страницы для клиентов с разных серверов отличались. Чтобы сохранить /var/www/html/ в синхронизации вам нужен кластерная система хранения. Даже если один узел выходит из строя другой продолжает работать. Более того, когда вышедший из строя узел подключается обратно, он должен синхронизировать отсутствующие файлы с другого сервера в /var/www/html/.

Как настроить репликацию в GlusterFS для обеспечения высокой доступности хранения?

Первоначальная настройка /etc/host файла:

nano /etc/hosts

Установить правильный  IP-адрес в соответствии с картинкой или согласно вашей установки:

Закройте и сохраните файл. Проверьте:

ping -c2 gl1
ping -c2 gl2

Настройка IPTables для трафика между gl1 и gl2

Введите следующие на gl1 , чтобы разрешить весь трафик от узла gl2:

ufw allow proto any from 192.168.1.12 to 192.168.1.11

Введите следующие на gfs02 , чтобы разрешить весь трафик от узла gfs01:

ufw allow proto any from 192.168.1.11 to 192.168.1.12

Установка GlusterFS 

Введите следующую команду apt-get command/apt command команду на обоих gfs01 и gfs02 серверах:

apt install glusterfs-server

Настройка и форматирование диска на каждом сервере

Вам необходимо ввести следующие команды на обоих серверах gfs01 (будьте осторожны с именами устройств в то время как создаете блоки разделов устройства):

Вам необходимо ввести следующие команды на обоих серверах gfs02:

fdisk /dev/vdb
mkfs.ext4 /dev/vdb1
mkdir -p /nodirectwritedata/ brick2
echo '/dev/vdb1 /nodirectwritedata/ brick2 ext4 defaults 1 2' >> /etc/fstab
mount -a
df -H
mkdir /nodirectwritedata/brick2/gvol0

Не редактируйте и не записывайте файлы непосредственно в /nodirectwritedata/brick1/ или /nodirectwritedata/brick2/ на каждом сервере. Прямая запись испортит ваш массив.

Убедитесь в том, что служба GlusterFS запущена

Введите следующие команды:

systemctl enable glusterd.service

Настройка trusted pool

От gfs01 сервере:

gluster peer probe gfs01 
peer probe: success. Host gfs01 port 24007 already in peer list

Настройка раздела GlusterFS

НА gfs01 (или gfs02) :

gluster volume create gvol0 replica 2 

gfs01:/nodirectwritedata/brick1/gvol0 

gfs02:/nodirectwritedata/brick2/gvol0

Пример результата:

Пример результата:

volume start: gvol0: success

Монтирование клиентов

Теперь наш кластер запущен и работает. Это время, наши клиенты могут устанавливать такие совместно используемые stoage. Вы можете иметь 1,2,3,4 или столько, сколько вы хотите клиент в соответствии с вашими сетевыми ресурсами. Вы можете настроить gfs01 и gfs02, как и сам клиент тоже.

Монтирование на gfs01 / gfs02 узел

Введите следующую команду:

Сохраните и закройте файл. Установите его:

Монирование на другом сервере с именем www1

apt install glusterfs-client
mkdir -p /mnt/www/
Редактируйте /etc/hosts файл и обновите его следующим образом:

Сохраните и закройте файл. Обновите /etc/fstab файл для монтирования общего хранилища:
Обновление /etc/fstab:

Cd /mnt/www/ и создать некоторые файлы на www1 или gfs02:

Вы должны увидеть файлы на обоих gfs02, gfs01 и www1.

Примечание о настройке network.ping.timeout

И, наконец выполните следующую команду на обоих gfs02 и gfs01 для установки таймаута сети до 5 секунд от дефолта 42:

Проверим

Вам нужно отредактировать httpd.conf и установить DocumentRoot, указав каталог /mnt/www/ 

Настройка шифрования GlusterFS

Если все узлы находятся в приватной сети, то это еще ничего, но если вы собираетесь применять GlusterFS через сеть, то желательно включить шифрование и аутентификацию по RSA ключу. По умолчанию никакая аутентификация не используется. Сначала создаем серитфикаты на каждом узле:

cd /etc/ssl/
openssl genrsa -out glusterfs.key 2048
openssl req -new -x509 -key glusterfs.key -subj "/CN=gluster1" -out glusterfs.pem

Скопируйте ключ gluster.key на другой сервер и создайте там на основе него сертификат, вместо gluster0 используйте имя своего хоста:

cd /etc/ssl/
openssl req -new -x509 -key glusterfs.key -subj "/CN=gluster2" -out glusterfs.pem

Объедините содержимое обоих файлов pem и файле .ca и разместите его на всех серверах в папке /etc/ssl:

 cat /etc/ssl/glusterfs.pem gluster2.pem > glusterfs.ca

Включите поддержку шифрования и перезапустите сервер:

touch /var/lib/glusterd/secure-access
systemctl restart glusterd

Включите ssl на всех серверах и клиентах:

gluster volume set gv0 auth.ssl-allow '*'
gluster volume set gv0 server.ssl on

Теперь перезапустите группу томов:

gluster vol stop gv0
gluster vol start gv0

Проверить работает ли ssl сейчас вы можете посмотрев лог файл:

grep -i ssl /var/log/glusterfs/gv0.log

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *