Настройка файловой системы
Статья рассматривает альтернативу таким файловым системам, как NFS или DFS. По сравнению с обозначенными, GlusterFS обладает меньшими задержками при переключении серверов. Также, эта FS является бесплатной, а потому рекомендуется к использованию в случае ограниченного бюджета. Важно сказать о том, что использование 2-3 серверов не дает никаких преимуществ перед аппаратным RAID-контроллером, кроме возможности подключения этих серверов к разным электрическим щиткам, что позволит несколько повысить отказоустойчивость всей системы.
CommunigatePro обеспечивает распределение нагрузки, что в свою очередь означает не только равномерную нагрузку на серверную ферму, но и автоматическую замену вышедшего из строя сервера на другой сервер с наименьшей нагрузкой. Но что делать, если нам необходимо зарезервировать файловое хранилище вместе с данными почтовых ящиков и настройками почтовых доменов? Для этих целей рекомендуется использование распределенной (кластерной) файловой системы. В данном примере будет рассмотрен вариант настройки такой FS на двух серверах. Добавить любое требующееся количество серверов не составит никакого труда.
Для развертывания кластерной файловой системы GlusterFS в данном примере будет использована ОС Fedora 21.
В данном примере используются следующие имена серверов:
- 192.168.0.100 data1.domain.com
- 192.168.0.101 data2.domain.com
Жесткий диск, который будет использоваться под данную задачу имеет имя sdb.
Требования по какой-то конкретной файловой системе для этого диска отсутствуют, но все же следует помнить о том, что например ext4 использует минимальный размер блока равным 4КБ, а xfs 512Б. Таким образом при использовании ext4 мы потеряем достаточно много места на диске.
Подготовка
Следующие несколько шагов позволят подготовить разделы к последующей репликации. Рекомендуется использовать отдельные жесткие диски от тех, на которых будет установлена ОС, но при желани можете использовать и отдельный раздел одного диска. При этом произойдет снижение производительности и отказоустойчивости за счет повышенного риска краха операционной системы.
1. Создание раздела на втором диске. Все параметры требуется вводить в заданной последовательности.
# fdisk /dev/sdb
- d - Удаляет созданные ранее разделы, если они были.
- n - Создает новый раздел. Если требуется отдать под раздел все дисковое пространство, просто 4 раза нажимаем [Enter], тем самым соглашаясь со всеми вопросами.
- w - Запись произведенных изменений на диск. После этого произойдет автоматическое завершение работы fdisk
2. Форматирование созданного раздела в файловую систему xfs.
# mkfs.xfs -i size=512 /dev/sdb1
3. Создание папки и монтирование в нее отформатированного раздела.
# mkdir -p /data/cluster && mount /dev/sdb1 /data
4. Настройка автоматического монтирования раздела в созданную папку.
# echo "/dev/sdb1 /data xfs defaults 0 0" >> /etc/fstab
5. Установка GlusterFS.
# yum install glusterfs{,-server,-fuse,-geo-replication} -y
6. Следующие порты требуется открыть:
- 24007 (TCP)
- 24008 (TCP)
- 49152, 49153 (TCP). Кол-во этих портов зависит от количества нодов кластера. Например, для кластера из трех нодов открываем 49152, 49153 м 49154.
- 38465-38467 (TCP)
- 2049 (TCP)
- 111 (TCP и UDP).
ВАЖНО: В самом начале рекомендуется открыть все порты для облегчения процедуры отладки.
7. Перезапуск сервиса GlusterFS.
# service glusterd restart
8. Рекомендуется добавить DNS-записи (А) на каждый из нодов кластера.
# nano /etc/hosts
192.168.0.100 data1 data1.domain.com
192.168.0.101 data2 data2.domain.com
Настройка кластера.
Подготовка завершена и теперь серверы готовы к непосредственно настройке файловой системы.
Следующие шаги требуется выполнять только на одной ноде кластера. В данном примере таким сервером будет data1.domain.com.
9. Назначаем роль пира.
# gluster peer probe data2.domain.com
10. В случае успеха предыдущей операции, должна появиться информация о ноде data2.domain.com
# gluster peer status
11. Создание виртуально раздела volume_data с указанием, между какими серверами будет происходить репликация данных.
# gluster volume create volume_data replica 2 transport tcp data1.domain.com:/data/cluster data2.domain.com:/data/cluster
12. Запускаем раздел.
# gluster volume start volume_data
13. Теперь требуется перезапуск GlusterFS. Эту операцию требуется произвести на обоих серверах.
# service glusterd restart
Настройка клиента.
На данном этапе кластер уже настроен и данные реплицируются между нодами. Теперь требуется настройка клиента, который сможет производить файловые операции.
Поскольку мы делаем это для серверов CommunigatePro, то требуется смонтировать сетевые диски туда. Нижеописанное подходит только для случая, когда CGPro установлен на Linux сервер. В случае с Windows, потребуется дополнительная настройка сервера Samba на обеих нодах.
Нижеследующие операции требуется проделать на каждом сервере CommunigatePro.
14. Установка клиентской части GlusterFS.
# yum install glusterfs{,-fuse}
15. Создание папки, через которую будет настроен доступ в кластер.
# mkdir /mail
16. Монтирование кластера в созданную папку.
# mount -t glusterfs data1.domain.com:/volume_data /mail
17. Записываем в fstab монтирование кластера при загрузке.
echo "data2.domain.msk:/volume_data /mail glusterfs defaults 0 0" >> /etc/fstab
На этом базовую настройку файлового кластера завершена. Важно отметить два нюанса в данном примере.
1. Как можно видеть, на клиент требуется установка пакета glusterfs-fuse. Без этого пакета вам не удастся примонтировать раздел. На работу CommunigatePro данная установка не способна повлиять каким либо образом. Тем не менее, рекомендуется использование Samba на нодах кластера, для монтирования разделов по протоколу smb.
2. Из команды монтирования видно, что монтируются сервера к одному конкретному ноду кластера, что делает систему достаточно неустойчивой к сбоям. Для решения этой проблемы требуется настройка пула адресов DNS, либо настройки виртуального интерфейса между всеми нодами кластера.