Рейтинг:3

Добавьте сервер в уже работающую конфигурацию DRBD9.

флаг mx

Я использую CentOS7, и у меня есть существующий узел высокой доступности с двумя кластерами, работающий с кардиостимулятором (1.1.23-1.el7_9.1) и DRBD (kmod-drbd90-9.0.22-3.el7_9). Резервный раздел для диска DRBD зашифрован LUKS. Добавляем в стек третий сервер, но после обновления конфигурации диск drbd на новом сервере не подключается.

Положение дел

Текущий статус, как показано в новом поле:

[root@svr3]# статус drbdadm
Роль drbd0:Вторичная
  диск: противоречивый
  подключение svr1:Подключение
  подключение svr2:Подключение

На первичном статус отображается как:

[root@svr1]# статус drbdadm
Роль drbd0: Основная
  диск: UpToDate
  Роль svr2:Вторичная
    одноранговый диск: UpToDate
  подключение svr3: автономное

Конфигурация DRBD

Текущая конфигурация для drbd0 ресурс:

ресурс drbd0 {
  протокол С;
  устройство /dev/drbd0;
  диск /dev/sdb1;
  метадиск внутренний;
  на svr1 {
    адрес 10.10.11.1:7789;
    идентификатор узла 1;
  }
  на svr2 {
    адрес 10.10.11.2:7789;
    идентификатор узла 2;
  }
  на svr3 {
    адрес 10.10.11.3:7789;
    идентификатор узла 3;
  }
  соединение-сетка {
    хосты svr1 svr2 svr3;
  }
}

До добавления svr3 конфигурация svr1 и svr2 была следующей:

ресурс drbd0 {
  протокол С;
  устройство /dev/drbd0;
  диск /dev/sdb1;
  метадиск внутренний;
  на svr1 {
    адрес 10.10.11.1:7789;
    идентификатор узла 1;
  }
  на svr2 {
    адрес 10.10.11.2:7789;
    идентификатор узла 2;
  }
  соединение-сетка {
    хосты svr1 svr2;
  }
}

Диски DRBD были созданы с помощью следующего скрипта на всех коробках:

drbdadm create-md --force drbd0
drbdadm до drbd0

Только на первичном компьютере также выполнялось следующее для настройки диска:

dd if=/dev/zero of=/dev/sdb1 bs=128M count=10
первичный drbdadm --force drbd0

cryptsetup -q --keyfile /path/to/keyfile luksFormat /dev/drbd0
cryptsetup --key-file /path/to/keyfile luksOpen /dev/drbd0 luks-drbd

mkfs.ext4 /dev/mapper/luks-drbd

Конфигурация кардиостимулятора

Ресурсы DRBD в кардиостимуляторе были настроены с помощью следующего сценария. Ресурс PCS не изменился, так как изначально он был настроен для будущего третьего узла.

pcs ресурс создать drbd0_data ocf:linbit:drbd drbd_resource=drbd0
мастер ресурсов ПК drbd0_clone drbd0_data \
  master-max=1 master-node-max=1 clone-max=3 clone-node-max=1 \
  уведомить = правда
ресурс pcs создать drbd0_luks ocf:vendor:luks \
  --group=drbd_resources
pcs ресурс создать drbd0_fs ocf:heartbeat:Filesystem \
  device=/dev/mapper/luks-drbd directory=/mnt/data fstype=ext4 \
  --group=drbd_resources

Ограниченный порядок шт продвигает drbd0_data, затем запускает drbd_resources
колокация ограничения ПК добавить drbd_resources \
  с drbd0_clone INFINTITY with-rsc-role=Master
порядок ограничения шт drbd0_luks затем drbd0_fs

( drbd0_luks ресурс — это настраиваемый ресурс, который мы предоставляем, который в основном работает cryptsetup luksOpen|luksClose в разделе LUKS, если это необходимо).

Статус кардиостимулятора показывает следующее:

Онлайн: [ svr1 svr2 svr3 ]

Активные ресурсы:

 Набор ведущий/подчиненный: drbd0_clone [drbd0_data]
     Мастера: [ svr1 ]
     Рабы: [ svr2 svr3 ]
 Группа ресурсов: drbd_resources
     drbd0_luks (ocf::vendor::luks): запущен svr1
     drbd0_fs (ocf::heartbeat::Filesystem): запущен svr1

Попытки подключения

Я пробовал различные итерации следующего процесса:

[root@svr1]# drbdadm отключить drbd0

[root@svr2]# drbdadm отключить drbd0

[root@svr3]# drbdadm отключить drbd0
[root@svr3]# drbdadm connect --discard-my-data drbd0

[root@svr1]# drbdadm подключить drbd0
drbd0: Ошибка: (162) Неверный запрос конфигурации
Команда 'drbdsetup connect drbd0 3' завершена с кодом выхода 10

[root@svr2]# drbdadm подключить drbd0
drbd0: Ошибка: (162) Неверный запрос конфигурации
Команда 'drbdsetup connect drbd0 3' завершена с кодом выхода 10

После этого вывод статус drbdadm как показано в верхней части поста.Я получаю ту же ошибку, если пытаюсь запустить drbdadm настроить drbd0 на svr1 или svr2.

Если я попытаюсь запустить drbdadm вниз drbd0 в то время как drbd0_luks ресурс включен, я получаю следующее:

[root@svr1]# drbdadm отключил drbd0
drbd0: изменение состояния не удалось: (-12) кто-то держит устройство открытым
дополнительная информация от ядра:
/dev/drbd0 открыт cryptsetup (pid 11777) в 2021-11-01 16:50:51
Команда 'drbdsetup down drbd0' завершена с кодом выхода 11

Если бы я отключил drbd0_luks ресурс, я могу запустить drbdadm вниз drbd0, но регулировать команда завершается со следующим:

[root@svr1]# drbdadm настроить drbd0
0: Ошибка: (162) Неверный запрос конфигурации
Команда «drbdsetup attach 0 /dev/sdb1 /dev/sdb1 internal» завершена с кодом выхода 10

поэтому я предполагаю, что мне, по крайней мере, нужно так много и работает. На данный момент я просто хватаюсь за соломинку, но я не совсем уверен, за какой следующей правильной соломинкой нужно тянуться.

Matt Kereczman avatar
флаг nr
Вы должны увидеть больше информации в журналах, но мое чутье подсказывает, что у вас, вероятно, нет места для дополнительных (3-го узла) метаданных.Когда вы впервые создали метаданные (на 2 узлах), вы могли передать `create-md` флаг `--max-peers=3`, чтобы зарезервировать несколько дополнительных слотов растрового изображения. Если том LUKS и файловая система уже созданы, расширение метаданных должно перезаписать конец файловой системы. Пожалуйста, опубликуйте что-нибудь из журналов во время работы `drbdadm up` / `drbdadm down`, и это должно предоставить больше информации.
флаг mx
Основываясь на том, что я видел, и в сочетании с чтением (и, наконец, пониманием) этого блога: https://www.neteye-blog.com/2020/04/adding-node-to-drbd-device-with-wrong- max-peers/ Я думаю, что это именно та ситуация, в которой мы находимся. К сожалению, то, как они были построены изначально, не позволяет нам расширить этот резервный раздел, поэтому я предполагаю, что в будущем у нас будет перестроение. как наименее болезненный вариант.
Matt Kereczman avatar
флаг nr
Вы также можете конвертировать во внешние метаданные (при условии, что у вас есть какое-то другое небольшое блочное устройство, которое вы можете использовать для этого), но для этого потребуется `umount` и `down` на устройствах DRBD.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.