Назад | Перейти на главную страницу

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 (nowayout = 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]: info: Задержка: 1 на диске / dev / iscsi / disk2 / part1
15 янв 14:21:34 сбд: последнее сообщение повторяется 3 раза
...
15 января 14:21:34 cs-node1 sbd: [1202]: info: Задержка: 1 на диске / dev / iscsi / disk2 / part1

Любые идеи? Спасибо!

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

Изменить 1:

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

Изменить 2:

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

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

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