...
Для того, чтобы обеспечить репликацию данных между серверами кластера, необходимо настроить glusterfs-server версии 3.11.
Настройка gluster-сервера
В качестве примера приведена система ECSS-10, работающая в кластере, со следующими настройками:
...
Установите gluster-сервер и пакет attr на оба хоста:
Без форматирования sudo aptitude -y install glusterfs-server attr
Для добавления сервера в пул файловых хранилищ выполните команду на ecss1:
Без форматирования sudo gluster peer probe 192.168.118.224
После этого на ecss2 при выполнении команды
sudo gluster peer status
должна появиться информация о ecss1:Без форматирования Number of Peers: 1 Hostname: 192.168.118.222 Uuid: 569c4730-a3a7-4d29-a132-b1bcdad792d8 State: Peer in Cluster (Connected)
Для создания кластера на ecss1 выполните команду:
Без форматирования sudo gluster volume create ecss_volume replica 2 transport tcp 192.168.118.222:/var/lib/ecss/glusterfs 192.168.118.224:/var/lib/ecss/glusterfs force
Запустите созданный кластер, для этого на ecss1 выполните команду:
Без форматирования sudo gluster volume start ecss_volume
Для проверки статуса кластера на ecss1 выполните команду:
Без форматирования sudo gluster volume info
Необходимо обратить внимание на поля "Status" и "Bricks" - они должны иметь следующий вид:
Без форматирования Volume Name: ecss_volume Type: Replicate Volume ID: 60774e49-d2f1-4b06-bb4a-3f39ccf1ea73 Status: Started Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: 192.168.118.222:/restfs Brick2: 192.168.118.224:/restfs
- Чтобы смонтировать glusterfs раздел, выполните на обоих хостах ecss1 и ecss2 следующие действия:
Создайте новый systemd unit.
Без форматирования /etc/systemd/system/ecss-glusterfs-mount.service
и добавьте туда следующие параметры:
Без форматирования [Unit] Description=mount glusterfs After=network.target Requires=network.target [Service] RemainAfterExit=no Type=forking RestartSec=10s Restart=always ExecStart=/sbin/mount.glusterfs localhost:/ecss_volume /var/lib/ecss/restfs -o fetch-attempts=10 ExecStop=/bin/umount /var/lib/ecss/restfs [Install] WantedBy=multi-user.target
Добавить unit в автозагрузку.
Unit можно добавить в автозагрузку следующей командой:
Без форматирования sudo systemctl enable ecss-glusterfs-mount.service
Перезагрузить хост:
Без форматирования sudo reboot
Если хост не может быть перезагружен, то можно выполнить следующие команды:
Без форматирования sudo systemctl daemon-reload sudo systemctl restart ecss-glusterfs-mount.service
После монтирования на обоих хостах выполните команду:
Без форматирования df -h
При просмотре информации должен появиться подмонтированный раздел:
Без форматирования /dev/sda10 19G 6,5G 11G 38% /var/lib/mysql /dev/sda8 4,5G 213M 4,1G 5% /var/log /dev/sda5 37G 48M 35G 1% /var/lib/ecss/ecss-media-server/records /dev/sda6 19G 44M 18G 1% /var/lib/ecss/cdr /dev/sda7 19G 44M 18G 1% /var/lib/ecss/statistics /dev/sda9 19G 7,6G 9,7G 44% /var/log/ecss localhost:/ecss_volume 46G 59M 44G 1% /var/lib/ecss/restfs*
Запуск RestFS в режиме кластера
Для запуска RestFS в режиме кластера достаточно, чтобы пакет ecss-restfs был установлен и запущен на обеих нодах. Команда для запуска сервиса ecss-restfs.
Без форматирования |
---|
sudo systemctl start ecss-restfs.service |
Запуск RestFS в случае недоступности других участников кластера
В применяемой концепции glusterfs все сервера равнозначны. Однако раздел volume не активируется при отсутствии кворума. Это защитный механизм, который характерен для всех распределенных fault-tollerant систем и призван защитить систему от split-brain.
Такая ситуация может возникнуть когда загружается только один из серверов, а второй при этом выключен или недоступен. На первом сервере volume не будет автоматически активирован до появления второго сервера для исключения расхождения данных.
...