4.3. Fencing

Cook предлагает решение на аппаратном watchdog в качестве I/O-fencing. Когда узел стартует в качестве master, он запускает аппаратный таймер, который обнуляется не реже чем 2 раза за время жизни блокировки в Consul (loop_wait таким образом должен быть не больше половины TTL). При потере блокировки, узел перестает обновлять таймер. Если за время TTL/2 узел не сможет корректно выключиться, а затем выключить аппаратный таймер, то его принудительно выключит или перезагрузит watchdog.

4.3.1. linux_watchdog

Пример конфигурации для Linux Hardware Watchdog (https://www.kernel.org/doc/Documentation/watchdog/watchdog-api.txt):

fencing:
    use: linux_watchdog
    linux_watchdog:
        device: /dev/watchdog

Для корректной работы могут потребоваться дополнительные права на устройство watchdog:

cat > /etc/udev/rules.d/99-watchdog.rules << EOF
KERNEL=="watchdog*", OWNER="root", GROUP="watchdog", MODE="0660"
EOF

groupadd -r watchdog

usermod -a -G watchdog reddatabase

udevadm control --reload-rules
udevadm trigger

Для тестирования можно использовать программный watchdog softdog:

cat > /etc/modules-load.d/softdog.conf << EOF
softdog
EOF

modprobe softdog

4.3.2. ipmi_watchdog

Пример кроссплатформенной конфигурации на ipmiutil (http://ipmiutil.sourceforge.net/):

fencing:
    use: ipmi_watchdog
    ipmi_watchdog:
        ipmiutil_bin: c:/ipmiutil/ipmiutil.exe

Для тестирования конфигурации можно использовать опцию cookd --test-fencing.