Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 46 Следующий »


Введение

Перед выполнением действий из данной статьи необходимо настроить кластер в соответствии со статьёй "Развертывание двухузлового кластера pacemaker".

В статье описано создание высоконадежного iSCSI-хранилища данных на основе двухузлового кластера Pacemaker.


!!!! не используется fencing (STONITH) !!!


Термины

iSCSI (Internet Small Computer System Interface) – протокол для работы c хранилищем данных через сеть Ethernet (поверх TCP/IP) с использованием SCSI-команд.

SCSI-target – SCSI-цель – в зависимости от контекста это либо сервер, предоставляющий доступ к устройству хранения данных, либо объект, экспортируемый устройством хранения. Объект может делиться на логические единицы (LU).

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-1192.168.23.101Первый узел кластера
pcmk-2192.168.23.102Второй узел кластера


 Предварительная настройка

На каждом узле – для разрешения имён добавить в файл /etc/hosts строки:

192.168.23.101 pcmk-1
192.168.23.102 pcmk-2

На узле pcmk-1 – установить название узла:

sudo hostnamectl hostname pcmk-1

На узле pcmk-2 – установить название узла:

sudo hostnamectl hostname pcmk-2

На каждом узле – для работы DRBD сетевой экран (если используется) должен пропускать входящие и исходящие TCP-пакеты на порте 7789.


Установка ПО

На каждом узле необходимо:

Установить пакеты с DRBD-утилитами и drbd-модулем ядра, соответствующим версии загруженного ядра.

sudo apt install drbd-utils drbd-`uname -r`


Установить пакет для настройки SCSI-сервера (target):

sudo apt install targetcli-fb




Настройка кластера

DRBD

DRBD-устройство состоит из двух дисков – по одному на каждом узле. Запись и чтение осуществляется только на ведущий диск (Primary). Ведомый диск (Secondary) только синхронизируется с ведущим.

DRBD-устройство должно управляться только кластером Pacemaker, т. е. не должна использоваться служба systemd.




На каждом узле – создать конфигурационный файл /etc/drbd.d/iscsi_data.res, содержащий настройки ресурса iscsi_data:

/etc/drbd.d/iscsi_data.res
resource "iscsi_data" {
  device minor 1;
  meta-disk internal;

  net {
    protocol C;
    fencing resource-only;
  }
  handlers {
    fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh";
    unfence-peer "/usr/lib/drbd/crm-unfence-peer.9.sh";
  }
  on "pcmk-1" {
    node-id 0;
    disk "/dev/vdb"; 
  }
  on "pcmk-2" {
    node-id 1;
    disk "/dev/vdb"; 
  }
  connection {
    host "pcmk-1" address 10.192.6.74:7789;
    host "pcmk-2" address 10.192.6.75:7789;
  }
}

На каждом узле – проинициализировать метаданные DRBD-диска:

sudo drbdadm create-md iscsi_data



sudo modprobe drbd


echo drbd >/etc/modules-load.d/drbd.conf



На каждом узле –включить DRBD-диск:

sudo drbdadm up iscsi_data

Проверить состояние DRBD-диска:

sudo drbdadm status

В выводе команды на первом узле будет ... - при не запущенном втором:

!!!!  iscsi_data role:Secondary
  disk:Inconsistent
  pcmk-2 role:Secondary
    disk:Inconsistent

В выводе команды на первом узле будет при запущенном DRBD на втором узле:

iscsi_data role:Secondary
  disk:Inconsistent
  pcmk-2 role:Secondary
    disk:Inconsistent



На каждом узле –проверить, что появилось блочное устройство /dev/drbd1:

sudo lsblk

В выводе команды должен появиться диск drbd1:

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0      11:0    1  6,8G  0 rom  
vda     252:0    0   20G  0 disk 
├─vda1  252:1    0    1M  0 part 
└─vda2  252:2    0   20G  0 part /
vdb     252:16   0   20G  0 disk 
└─drbd1 147:1    0   20G  0 disk


Теперь DRBD состоит из двух локальных дисков /dev/vdb и сетевого соединения между ними.


Необходимо синхронизировать DRBD-диски узлов.

Для этого – На первом узле (В данном случае) – сделать DRBD-диск первого узла ведущим:

sudo drbdadm primary --force iscsi_data

Начнётся синхронизация дисков на двух узлах:

sudo drbdadm status

Вывод команды:

iscsi_data role:Primary
 disk:UpToDate
 pcmk-2 role:Secondary
   replication:SyncSource peer-disk:Inconsistent done:1.03


Процесс синхронизации дисков можно отслеживать с помощью команды:

sudo drbdsetup events2

Вывод команды:

exists resource name:iscsi_data role:Primary suspended:no force-io-failures:no may_promote:no promotion_score:10101
exists connection name:iscsi_data peer-node-id:1 conn-name:pcmk-2 connection:Connected role:Secondary
exists device name:iscsi_data volume:0 minor:1 backing_dev:/dev/vdb disk:UpToDate client:no quorum:yes
exists peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 replication:SyncSource peer-disk:Inconsistent peer-client:no resync-suspended:no done:72.16
exists path name:iscsi_data peer-node-id:1 conn-name:pcmk-2 local:ipv4:10.192.6.74:7789 peer:ipv4:10.192.6.75:7789 established:yes
exists -

...
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 done:73.14
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 done:74.55
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 done:75.95
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 done:77.36
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 done:78.78
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 done:80.18
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 done:81.58
...
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 done:99.86
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0
change resource name:iscsi_data may_promote:no promotion_score:10102
change peer-device name:iscsi_data peer-node-id:1 conn-name:pcmk-2 volume:0 replication:Established peer-disk:UpToDate peer-client:no

Для завершения команды нажать <CTRL+C>.




sudo drbdmon


Во время синхронизации будет выводиться:


Дождаться окончания синхронизации, когда будет выводиться информация:

 iscsi_data role:Primary
  disk:UpToDate
  pcmk-2 role:Secondary
    peer-disk:UpToDate


Pacemaker + DRBD

На узле, где DRBD = Primary? :


Создать ресурсного агента для управления DRBD-диском (DRBD-ресурс "iscsi_data"):

sudo pcs resource create "DRBD" ocf:linbit:drbd drbd_resource="iscsi_data" op monitor interval=29s role="Promoted" op monitor interval=31s role="Unpromoted"

Настроить ресурсного агента для управления DRBD-диском:

sudo pcs resource promotable "DRBD" promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify="true"


sudo pcs resource status

Вывод команды:

  * ClusterIP   (ocf:heartbeat:IPaddr2):         Started pcmk-1
  * Clone Set: DRBD-clone [drbd_iscsi] (promotable):
    * Promoted: [ pcmk-1 ]
    * Unpromoted: [ pcmk-2 ]



Pacemaker + iSCSI Target



Pacemaker - взаимная настройка ресурсов


стр 5: ??
crm(live)configure# property no-quorum-policy="ignore"
crm(live)configure# property default-resource-stickiness="200"




Нужны ограничения:

  1. DRBD=Primary, iSCSI, ClusterIP - всегда работают только на одном узле.
  2. Порядок запуска: DRBD=Primary, iSCSI, ClusterIP


Создать ограничение: iSCSI запускается на том узле, где DRBD=Primary

!!!! sudo pcs constraint colocation add iSCSI with Promoted DRBD-clone


Создать ограничение: ClusterIP запускается на том узле, где iSCSI:

!!!! sudo pcs constraint colocation add iSCSI with Promoted DRBD-clone



Создать ограничение: вначале запускается DRBD, потом iSCSI

!!!! sudo constraint order promote DRBD-clone then start iSCSI

Вывод:

!!!! Adding WebData-clone WebFS (kind: Mandatory) (Options: first-action=promote then-action=start)


Создать ограничение: вначале запускается iSCSI, потом iSCSI

!!!! sudo constraint order promote DRBD-clone then start ClusterIP


Проверить созданные ограничения:

sudo pcs constraint

Вывод:

Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:


Проверка работоспособности кластера при отказе одного из узлов

Перед использованием кластера необходимо проверить его работоспособность при отказе одного из узлов.


На любом узле – определить, какой из узлов кластера является ведущим, с помощью команды:

sudo pcs status

В выводе команды ведущий узел отобразится в строке с ресурсом ClusterIP после слова "Started":

Full List of Resources:
  * ClusterIP   (ocf:heartbeat:IPaddr2):         Started pcmk-1

Предположим, что ведущим узлом является pcmk-1.


На любом узле – остановить узел pcmk-1 кластера:

sudo pcs cluster stop pcmk-1


На втором узле pcmk-2 – проверить состояние кластера: 

sudo pcs status

В выводе команды отобразится, что узел 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:

sudo pcs cluster start pcmk-1


На любом узле – проверить, что оба узла кластера работают:

sudo pcs status

В выводе команды отобразится, что оба узла в работе:

Node List:
  * Online: [ pcmk-1 pcmk-2 ]

Подключение к кластерному iSCSI-хранилищу данных




  • Нет меток