CMAN: использование SBD (Storage Based Death) и сторожевого таймера в качестве STONITH

Я собираю двухузловой кластер на основе стека кластеров CMAN + Pacemaker, но у меня нет аппаратных устройств STONITH. Однако оба узла подключены к общему хранилищу через iSCSI, и я хотел бы использовать это для ограждения с SBD.

SBD поддерживается openAIS и Heartbeat из коробки, и я уже использовал SBD с кластерным стеком Heartbeat + Pacemaker, но теперь мне нужно, чтобы он работал с CMAN. Поэтому я добавил небольшой код в сценарий инициализации CMAN для запуска / остановки SBD, и, похоже, он работает нормально.

Что касается сторожевого таймера: настоятельно рекомендуется запускать SBD со сторожевым таймером. SBD является критически важной службой в таком кластере и должна работать все время, пока работает кластерное программное обеспечение. Сторожевой таймер помогает гарантировать, что - если по какой-либо причине процесс SBD неожиданно завершается, собака больше не получает питание и перезагружает узел. Так я получаю модуль ядра сторожевого таймера softdog загружаться прямо перед запуском SBD (как, например, в Heartbeat).

Вкратце я делаю следующее в /etc/init.d/cman:

  1. загрузить модуль ядра - modprobe softdog
  2. начать SBD - sbd -d <device> -D -W watch

И вот проблема:
когда я запускаю cman вручную

service cman start

все хорошо, но когда cman запускается автоматически во время загрузки, узел перезагружается.

Похоже, сторожевой таймер не питается, потому что узел точно огорожен <watchdog timeout> секунд (5 с) после того, как SBD (14:21:29) инициализирует его (сторожевой таймер), однако журналы (/ var / log / syslog) противоречивы, говоря, что SBD запущен:

15 января 14:21:28 cs-node1 kernel: [12.341755] softdog: Программный сторожевой таймер: инициализирован 0,08. soft_noboot = 0 soft_margin = 60 секунд soft_panic = 0 (сейчас = 0)
...
15 января 14:21:29 cs-node1 sbd: [1200]: note: Использование сторожевого устройства: / dev / watchdog
15 января 14:21:29 cs-node1 sbd: [1200]: info: установить тайм-аут сторожевого таймера на 5 секунд.
...
15 января 14:21:30 cs-node1 sbd: [1202]: информация: латентность: 1 на диске /dev/iscsi/disk2/part1
15 января 14:21:34 sbd: последнее сообщение повторено 3 раза
...
15 января 14:21:34 cs-node1 sbd: [1202]: info: Латентность: 1 на диске /dev/iscsi/disk2/part1

Есть идеи? Спасибо!

ps Всем, кто имеет репутацию более 300 баллов, рассмотрите возможность создания следующих тегов: sbd или storage-based-death, stonith и cman.

Изменить 1:

Теперь у меня есть отдельный скрипт инициализации для управления SBD, который запускается непосредственно перед CMAN, но все остается прежним - он работает только при запуске вручную после входа в систему. Что такого особенного в процессе загрузки, что я не знаю?

Изменить 2:

Недавно я заметил, что в логах не может быть таких сообщений:

15 января 14:21:30 cs-node1 sbd: [1202]: информация: латентность: 1 на диске /dev/iscsi/disk2/part1
15 января 14:21:34 sbd: последнее сообщение повторено 3 раза
...
15 января 14:21:34 cs-node1 sbd: [1202]: info: Латентность: 1 на диске /dev/iscsi/disk2/part1

и узел может быть перезагружен не точно через 5 секунд после инициализации сторожевого таймера, но чаще после 12, но каждый раз точно так, как появляется приглашение для входа в систему. Тем не менее, хотя SBD работает, даже если в системном журнале нет сообщений (я добавил фоновый процесс, который запускается вместе с SBD и отслеживает его процесс).

0 ответов

Другие вопросы по тегам