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.