Введение
Перед выполнением действий из данной статьи необходимо настроить кластер в соответствии со статьёй "Развертывание двухузлового кластера pacemaker".
В статье описано создание высоконадежного iSCSI-хранилища данных на основе двухузлового кластера Pacemaker.
Термины
iSCSI – реализация SCSI-протокола, работающего поверх IP-протокола. Используется для работы c накопителями данных по SCSI-протоколу через сеть Ethernet.
target – цель (объект) – SCSI-сервер, предоставляющий доступ к устройству хранения данных.
initiator – инициатор – SCSI-клиент, использующий SCSI-накопитель для хранения данных.
LU (logical unit) – логическая единица iSCSI-накопителя. Аналог блочного устройства SCSI. Может использоваться для разбиения на разделы, для хранения файловой системы и т. п.
DRBD (Distributed Replicated Block Device) – распределённая система хранения, которая зеркалирует блочные устройства компьютеров через сеть Ethernet. Зеркалироваться могут жёсткие диски, разделы дисков и т. п.
Архитектура кластера
Рисунок 1. Архитектура iSCSI-хранилища на основе двухузлового кластера
Кластер и его узлы:
| Название узла | IP-адрес | Назначение |
|---|---|---|
| 192.168.23.100 | Виртуальный IP-адрес кластера iSCSI-хранилища | |
| pcmk-1 | 192.168.23.101 | Первый узел кластера |
| pcmk-2 | 192.168.23.102 | Второй узел кластера |
Предполагается, что адреса узлов pcmk-1 и pcmk-2 прописаны в файле /etc/hosts.
Установка ПО
Установить пакеты с DRBD-утилитами и drbd-модулем ядра, соответствующим версии загруженного ядра.
sudo apt install drbd-utils drbd-`uname -r`
Установить пакет с инструментом для настройки серверной части SCSI (target):
sudo apt install targetcli-fbНастройка кластера
DRBD
Сетевой экран должен пропускать пакеты по TCP-портам:
disk {
on-io-error detach;
}
resource "iscsi_data" {
device minor 1;
meta-disk internal;
net {
protocol C;
-------- allow-two-primaries yes;
fencing resource-and-stonith;
verify-alg sha1;
}
handlers {
fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh";
unfence-peer "/usr/lib/drbd/crm-unfence-peer.9.sh";
}
on "pcmk-1" {
disk "/dev/almalinux_pcmk-1/drbd-demo";
node-id 0;
}
on "pcmk-2" {
disk "/dev/almalinux_pcmk-2/drbd-demo";
node-id 1;
}
connection {
host "pcmk-1" address 192.168.122.101:7789;
host "pcmk-2" address 192.168.122.102:7789;
}
}
Проверка работоспособности кластера при отказе одного из узлов
Перед использованием кластера необходимо проверить его работоспособность при отказе одного из узлов.
На любом узле – определить, какой из узлов кластера является ведущим, с помощью команды:
В выводе команды ведущий узел отобразится в строке с ресурсом ClusterIP после слова "Started":
Full List of Resources: * ClusterIP (ocf:heartbeat:IPaddr2): Started pcmk-1
Предположим, что ведущим узлом является pcmk-1.
На любом узле – остановить узел pcmk-1 кластера:
На втором узле pcmk-2 – проверить состояние кластера:
В выводе команды отобразится, что узел pcmk-1 отключён, а ведущим узлом является pcmk-2:
Node List: * Online: [ pcmk-2 ] * OFFLINE: [ pcmk-1 ] Full List of Resources: * ClusterIP (ocf:heartbeat:IPaddr2): Started pcmk-2
iSCSI-хранилище должно быть доступно по своему IP-адресу 192.168.23.100.
На любом узле – включить обратно первый узел кластера pcmk-1:
На любом узле – проверить, что оба узла кластера работают:
В выводе команды отобразится, что оба узла в работе:
Node List: * Online: [ pcmk-1 pcmk-2 ]
