Данная статья применима начиная с:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) и РУСБ.10015-10, РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
- Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
- Astra Linux Common Edition 2.12
Аннотация
Предполагается, что дальнейшие действия выполняются на ранее подготовленном кластере pacemaker. См. статью Развертывание двухузлового кластера pacemaker.
В рамках подготовки кластера созданы два узла кластера. В процессе настройки один из узлов назначается ведущим (master), второй (остальные) — подчиненным (slave). При отказе ведущего узла подчиненный узел автоматически становится ведущим.
Настройка и тестирование аутентификации пользователей и работы мандатного управления доступом (МРД) в данной статье не рассматривается и не тестируется.
Внимание! Порты, используемые DRBD (7788) и Corosync (5404, 5405), должны быть свободны. Получить перечень используемых портов можно командой sudo netstat -tulpn
Параметры стенда
Для развертывания кластера и использования инструментов, описываемых в статье используются два подсоединенных к сети компьютера (узла) с установленной ОС Astra Linux, сетевыми картами и двумя жесткими дисками: диск с операционной системой (далее в примере — /dev/sda
) и свободный диск (далее в примере — /dev/sdb
), который будет использован для организации хранилища и его резервирования.
Допускается использование одного физического устройства на котором выделены два раздела, один из которых будет использован для хранилища
Имя узла | pcmk-1 | pcmk-2 |
Статический IP-адрес узла | 192.168.23.101 | 192.168.23.102 |
Рекомендации по настройке сети приведены в статье Настройка разрешения имен и статических IP-адресов. В целях тестирования можно использовать раздел Настройка разрешения имен в тестовом окружении.
Основные термины
DRBD (Distributed Replicated Block Device) — это инструмент, позволяющий создавать решения для резервирования данных путем репликации блочных устройств (например, жестких дисков или томов LVM). см. Использование DRBD и OCFS2 для резервирования данных .
- CIB (Cluster Information Base) — информационная база ресурсов кластера в формате XML-файла. Автоматически реплицируется на весь кластер, база доступна для редактирования с любого узла кластера;
- Ресурс — эмулируемое или физическое блочное устройство, резервирование которого осуществляется инструментом DRBD.
Следует различать ресурсы для DRBD и для pacemaker! Это разные сущности разных инструментов, для DRBD ресурс - синхронизируемый каталог, для pacemaker - сущность, управляемая сценарием
Использование инструмента DRBD на кластере pacemaker
Перед установкой проверить работоспособность кластера:
sudo pcs status
На узлах кластеров необходимо установить и настроить DRBD (см. Использование DRBD и OCFS2 для резервирования данных). Далее проверить работу узлов c DRBD:
sudo drbdadm status
На любом из узлов кластера:
- Задействовать параметр обработки сбоев кластера, если это ранее не было сделано ранее. После первого сбоя служба перемещается на другой узел:в зависимости от используемой версии pacemaker может возникать сообщение вида:
sudo pcs resource defaults migration-threshold=1
если оно возникает, рекомендуется использоватьDeprecation Warning: This command is deprecated and will be removed. Please use 'pcs resource defaults update' instead.
Warning: Defaults do not apply to resources which override them with their own defined values
pcs resource defaults update
. - Инициализировать рабочую версию CIB:
sudo pcs cluster cib drbdconf
- Создать новый ресурс кластера, указать имя ресурса, интервалы и параметры работы ресурса:
sudo pcs -f drbdconf resource create <имя_ресурса_pacemaker> ocf:linbit:drbd \
drbd_resource=<имя_ресурса_drbd> \
op start interval=0s timeout=240s \
stop interval=0s timeout=100s \
monitor interval=31s timeout=20s \
role=Slave monitor interval=29s timeout=20s role=Master
где
<имя_ресурса_pacemaker>
- имя создаваемого ресурса pacemaker, а<имя_ресурса_drbd>
- ранее указанное имя ресурса DRBD, в текущем примере этоr0
. - Создать виртуальный IP-адрес для кластера:
sudo pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=<адрес кластера> cidr_netmask=32 nic=eth1 op monitor interval=10
где
ClusterIP
- имя ресурса для виртуального IP-адреса кластера, а<адрес кластера>
- отличный от IP-адресов узлов кластера адрес, занесённый вetc/hosts
. - Инициализировать дубликат ресурса кластера:
sudo pcs -f drbdconf resource promotable
<имя_ресурса>
\
promoted-max=1 promoted-node-max=1 \
clone-max=2 clone-node-max=1 notify=trueгде
<имя_ресурса>
- имя создаваемого ресурса pacemaker. Подробная справка по параметрам доступна вman pcs
. - Обновить и сохранить обновление конфигурации в CIB:
sudo pcs cluster cib-push drbdconf
- Проверить перечень и статус настроенных ресурсов:sudo pcs status
Cluster name: astracluster
Status of pacemakerd: 'Pacemaker is running' (last updated 2024-10-16 02:36:40 +03:00)
Cluster Summary:
* Stack: corosync
* Current DC: pcmk-1 (version 2.1.5-a3f44794f94) - partition with quorum
* Last updated: Wed Oct 16 02:36:40 2024
* Last change: Wed Oct 16 02:36:18 2024 by root via cibadmin on pcmk-1
* 2 nodes configured
* 3 resource instances configured
Node List:
* Online: [ pcmk-1 pcmk-2 ]
Full List of Resources:
* ClusterIP (ocf:heartbeat:IPaddr2): Started pcmk-1
* Clone Set: test_drbd0-clone [test_drbd0] (promotable):
* Promoted: [ pcmk-1 ]
* Unpromoted: [ pcmk-2 ]
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
Проверить CIB на наличие ошибок:
sudo pcs cluster verify
Пример сценария настройки
#!/bin/bash
VIRTUAL_IP
= <виртуальный IP-адрес кластера>
DRBD_DIR = <путь к ресурсу DRBD>
DRBD_DEVICE = <путь к устройству ресурса DRBD>
AMOUNT_NODES = <>
pcs property set stonith-enabled=false
pcs resource defaults migration-threshold=1
# указать имя ClusterIP для ресурса, связанного с heartbeat
pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=$VIRTUAL_IP cidr_netmask=32 nic=eth1 op monitor interval=10
# указать необходимое имя ресурса для DRBD вместо drbd_testdrbd
pcs resource create drbd_testdrbd ocf:linbit:drbd \
drbd_resource="testdrbd" promotable promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 \
notify=true op monitor interval="29s" role="Master" op monitor interval="31s" role="Slave"
pcs resource create ext4_pcmk-1 ocf:heartbeat:Filesystem \
device=$DRBD_DEVICE directory=$DRBD_DIR fstype=ext4 \
options=noatime,nodiratime \
op start interval="0" timeout="60s" \
stop interval="0" timeout="60s" \
monitor interval="20" timeout="40s"
pcs constraint order promote drbd_testdrbd-clone then start ext4_pcmk-1
pcs constraint colocation add ext4_pcmk-1 with master drbd_testdrbd-clone INFINITY
pcs constraint colocation add ClusterIP with master drbd_testdrbd-clone INFINITY