Монтировать кластерную файловую систему
В примере монтируется кластерная файловая система 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 -
Настройте политику поведения кластера при потере кворума:
pcs property set no-quorum-policy=freeze -
Создайте точку монтирования:
mkdir -p /mnt/<mount_point_name>Укажите
<mount_point_name>— имя каталога, в который будет монтироваться кластерная файловая система. -
Создайте ресурс, который кластер будет монтировать как файловую систему GFS2 на всех узлах при запуске:
crm configure primitive <resource_name> ocf:heartbeat:Filesystem device /dev/mapper/<block_storage_name> directory /mnt/<mount_point_name> fstype gfs2Укажите:
<resource_name>— уникальное имя ресурса внутри кластера;<block_storage_name>— имя сетевого диска, которое вы получили на шаге 11;<mount_point_name>— имя каталога на сетевом диске, который вы создали на шаге 15.
-
Убедитесь, что кластер работает корректно:
crm statusВ ответе появится информация о состоянии кластера. Например:
Cluster Summary:
* Stack: corosync
* Current DC: node-1 (version 2.1.2-ada5c3b36e2) - partition with quorum
* Last updated: Mon Feb 10 11:58:13 2025
* Last change: Fri Feb 7 19:19:07 2025 by root via cibadmin on node-1
* 2 nodes configured
* 2 resource instances configured
Node List:
* Online: [ node-1 node-2 ]
Full List of Resources:
* dlm (ocf:pacemaker:controld): Started [ node-1 node-2 ]
* ClusterFS (ocf:heartbeat:Filesystem): Started [ node-1 node-2 ]Здесь:
- в строке
Current DCотображен управляющий узел кластера. Состояниеpartition with quorumозначает, что кластер достиг кворума и работает корректно; - в блоке
Node Listперечислены узлы кластера. СтатусOnlineозначает, что узлы доступны и участвуют в работе; - в блоке
Full List of Resourcesотображено состояние ресурсов кластера. СтатусStartedозначает, что ресурсы успешно запущены на указанных узлах кластера.
- в строке
-
Убедитесь, что
corosyncустановил соединение с другими узлами кластера:corosync-cfgtool -sВ ответе появится информация о сетевых подключениях
corosync. Например:Local node ID 2, transport knet
LINK ID 0 udp
addr = 192.168.1.23
status:
nodeid: 1: connected
nodeid: 2: localhostЗдесь в блоке
Statusуказано состояние подключения к каждому узлу кластера:nodeid: 1: connected— узел доступен, соединение установлено;nodeid: 2: localhost— текущий узел.
-
Убедитесь, что ресурс кластера
dlmработает корректно и все узлы кластера обнаружены:dlm_tool statusВ ответе появится информация о состоянии ресурса
dlm. Например:cluster nodeid 2 quorate 1 ring seq 80 80
daemon now 234888 fence_pid 0
node 1 M add 630 rem 212 fail 60 fence 159 at 1 1738943226
node 2 M add 61 rem 0 fail 0 fence 0 at 0 0Здесь:
quorate 1— кластер достиг кворума;node 1иnode 2со статусомM— узлы кластера активны и участвуют в работе кластера.
-
Убедитесь, что сетевой диск отображается в системе и смонтирован в нужную точку:
lsblkВ ответе появится информация о дисках и их точках монтирования. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
----
sdc 8:32 0 150G 0 disk
└─mpatha 252:0 0 150G 0 mpath /mnt/gfs
sdd 8:48 0 150G 0 disk
└─mpatha 252:0 0 150G 0 mpath /mnt/gfsЗдесь:
sdc,sdd— сетевые диски;mpatha— устройство с многопутевым доступом;/mnt/gfs— точка монтирования файловой системы GFS2.
-
Убедитесь, что файловая система GFS2 смонтирована корректно:
mount | grep gfsВ ответе появится информация о файловой системе. Например:
/dev/mapper/mpatha on /mnt/gfs type gfs2 (rw,relatime,rgrplvb)Здесь:
/dev/mapper/mpatha— сетевой диск, на котором размещена файловая система GFS2;/mnt/gfs— точка монтирования файловой системы;gfs2— тип файловой системы.