Монтировать кластерную файловую систему
В примере монтируется кластерная файловая система GFS2 (Global File System 2). Подробнее о настройке ресурсов кластера и поведения кластера при сбоях в разделе High Availability Add-On Overview документации Red Hat Enterprise.
GFS2 (Global File System 2) — это кластерная файловая система с совместным доступом к данным. Она предоставляет возможность нескольким узлам одновременно работать с одной файловой системой, обеспечивая согласованность и высокую производительность. Подробнее о GFS2 в разделе Global File System 2 документации Red Hat Enterprise.
В примере для работы GFS2 используются:
corosync
— служба межузлового взаимодействия, которая обеспечивает обмен сообщениями между узлами кластера, контроль их доступности и определение кворума — минимально необходимого числа активных узлов для безопасной работы кластера;pacemaker
— менеджер ресурсов кластера, который управляет запуском, остановкой и перемещением ресурсов между узлами кластера в случае отказа одного из них;dlm
— распределенный менеджер блокировок, который координирует в кластере доступ к совместно используемым ресурсам.
Чтобы смонтировать кластерную файловую систему:
- Подключите сетевой диск к каждому серверу.
- Настройте каждый узел кластера.
- Монтируйте кластерную файловую систему.
1. Подключить сетевой диск к каждому серверу
Используйте инструкцию Подключить сетевой диск к выделенному серверу.
2. Настроить каждый узел кластера
Чтобы обеспечить совместную работу узлов в кластере, настройте каждый узел.
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Откройте конфигурационный файл утилиты
netplan
текстовым редакторомvi
:vi /etc/netplan/50-cloud-init.yaml
-
На сетевой интерфейс, задействованный для работы службы
corosync
, добавьте IP-адреса из приватного диапазона. Серверы должны иметь доступ друг к другу по этим адресам. Адреса iSCSI, которые используются для подключения сетевых дисков, иcorocync
не должны пересекаться.<eth_name>:
addresses:
- <ip_address>Укажите:
<eth_name>
— имя сетевого интерфейса приватной сети для основного канала обмена сообщениями между узлами кластера;<ip_address>
— приватный IP-адрес текущего узла в основной кластерной сети.
-
Выйдите из текстового редактора
vi
с сохранением изменений::wq
-
Примените конфигурацию:
netplan apply
-
Убедитесь, что сетевые интерфейсы настроены корректно:
ip a
-
Установите компоненты для настройки кластерной среды:
apt install corosync pacemaker gfs2-utils pcs resource-agents ldmtool dlm-controld
-
Перезагрузите сервер.
-
Откройте конфигурационный файл
/etc/hosts
текстовым редакторомvi
:vi /etc/hosts
-
Добавьте IP-адреса и имена узлов в
/etc/hosts
:<ip_address_1> <node_name_1>
<ip_address_2> <node_name_2>Укажите:
<ip_address_1>
— основной IP-адрес первого узла в приватной сети;<node_name_1>
— имя первого узла в приватной сети, напримерnode-1
;<ip_address_2>
— основной IP-адрес второго узла в приватной сети;<node_name_2>
— имя второго узла в приватной сети, напримерnode-2
.
-
Выйдите из текстового редактора
vi
с сохранением изменений::wq
2. Монтировать кластерную файловую систему
На одном из узлов кластера выполните настройку кластера и монтируйте на сетевой диск кластерную файловую систему.
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Убедитесь, что сетевые интерфейсы настроены корректно:
ip a
-
Установите компоненты для настройки кластерной среды:
apt install corosync pacemaker gfs2-utils pcs resource-agents ldmtool dlm-controld
-
Перезагрузите сервер.
-
Создайте ключ безопасности для
corosync
:corosync-keygen
Файл ключа будет сохранен в директории
/etc/corosync/authkey
. -
Распространите ключ на узлы кластера с помощью утилиты
scp
, для этого выполните команду для каждого узла:scp /etc/corosync/authkey root@<node_name>:/etc/corosync/authkey
Укажите
<node_name>
— имя узла в приватной сети, который вы указали при настройке узла кластера на шаге 10. -
Создайте кластер:
pcs cluster setup <cluster_name> <node_name_1> <node_name_2>
Укажите:
<cluster_name>
— имя кластера;<node_name_1>
— имя текущего узла в приватной сети, который вы указали при настройке узла кластера на шаге 10;<node_name_2>
— имя второго узла в приватной сети, который вы указали при настройке узла кластера на шаге 10.
-
Запустите службы
corosync
иpacemaker
для всех узлов кластера:pcs cluster start --all
-
Убедитесь, что кластер перешел в статус
online
:pcs status
-
Убедитесь, что в конфигурационном файле
/etc/corosync/corosync.conf
заданы корректные параметры кластера:cat /etc/corosync/corosync.conf
В ответе появится содержимое конфигурационного файла. Например:
totem {
version: 2
cluster_name: cluster_name
transport: knet
crypto_cipher: aes256
crypto_hash: sha256
}
nodelist {
node {
ring0_addr: node-1
name: node-1
nodeid: 1
}
node {
ring0_addr: node-2
name: node-2
nodeid: 2
}
}
quorum {
provider: corosync_votequorum
two_node: 1
}
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
timestamp: on
}Здесь:
cluster_name
— имя кластера, которое вы указали на шаге 7;node-1
— имя текущего узла в кластерной сети;node-2
— имя второго узла в кластерной сети.
-
Выведите информацию о сетевых дисках:
multipath -ll
В выводе команды отобразится информация об устройствах. Например:
mpatha (3600140530fab7e779fa41038a0a08f8e) dm-0 LIO-ORG,TCMU device
size=20G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=10 status=active
| `- 8:0:0:0 sdc 8:32 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
`- 9:0:0:0 sdd 8:48 active ready runningЗдесь
mpatha
— имя сетевого диска. -
Отформатируйте сетевой диск в файловую систему GFS2:
mkfs.gfs2 -p lock_dlm -t <cluster_name>:<cluster_volume_name> -j <number_of_cluster_nodes> /dev/mapper/<block_storage_name>
Укажите:
<cluster_name>:<cluster_volume_name>
— идентификатор GFS2-файловой системы в пределах кластера, он состоит из двух значений и в сумме должен быть не более 16 символов, где:<cluster_name>
— имя кластера, которое вы указали на шаге 7;<cluster_volume_name>
— имя файловой системы;
<number_of_cluster_nodes>
— количество журналов файловой системы GFS2, по одному журналу на каждый узел кластера;<block_storage_name>
— имя сетевого диска, который вы получили на шаге 11.
-
Запустите
dlm
— кластерный механизм блокировок:pcs resource start dlm