[pve-devel] [RFC pve-ha-manager 0/5] external fence device support
t.lamprecht at proxmox.com
Wed Nov 11 12:39:00 CET 2015
After switching on and off from this series quite some time I refactored and divided it a bit.
This series implements basic support for external fencing devices. This is not meant for committing but for comments only,
if the base principle is OK I'll continue.
Fencing can be toggled from waiting for the agent lock only
and hardware fencing at the moment only with a variable in the PVE2 env (hardware_fencing) and needs a rebuild (sorry).
Devices can be configured in /etc/pve/ha/fence_devices.cfg and follow the dlm.conf format.
An example would be:
> # begin /etc/pve/ha/fence_devices.cfg
> device pve_mitte fence_pve ip="192.168.XX.XX" password="unsecure" action=off
> connect pve_mitte node=uno plug=100
> connect pve_mitte node=due plug=101
> connect pve_mitte node=tre plug=102
> device power_s fence_apc ip=192.168.XX.XX username=fencing password=unsecure action=reboot ssh
> connect power_s node=due plug=1 switch=1
> connect power_s node=tre plug=1 switch=1
> # end /etc/pve/ha/fence_devices.cfg
Currently there can be some problems when a node gets fenced with reboot as action,
and it comes almost immediately up again during the time where it's services gets relocated.
This case is a bit unlikely in a real world scenario but needs to be addressed absolutely nonetheless.
On the road map are currently:
* add retries for devices in (recoverable) error cases (e.g. fence_apc is quite fragile and my fail sometimes on the first try)
* add manual unfencing possibility (this is an idea inly at the moment)
* add regression test (with the sim env) and test a lot
* catch some corner case errors
Thomas Lamprecht (5):
add FenceConfig class for external fencing devices
add Fence class for external fence devices
add fence_agent method to HA environment
allow use of external fencing devices
Adapt log message and regression tests
src/PVE/HA/CRM.pm | 4 +
src/PVE/HA/Env.pm | 10 ++
src/PVE/HA/Env/PVE2.pm | 57 ++++++++++++
src/PVE/HA/Fence.pm | 179 +++++++++++++++++++++++++++++++++++
src/PVE/HA/FenceConfig.pm | 200 ++++++++++++++++++++++++++++++++++++++++
src/PVE/HA/Makefile | 2 +-
src/PVE/HA/Manager.pm | 4 +
src/PVE/HA/NodeStatus.pm | 13 ++-
src/PVE/HA/Sim/Env.pm | 23 +++++
src/test/test-basic1/log.expect | 2 +-
src/test/test-basic2/log.expect | 2 +-
src/test/test-basic5/log.expect | 2 +-
12 files changed, 492 insertions(+), 6 deletions(-)
create mode 100644 src/PVE/HA/Fence.pm
create mode 100644 src/PVE/HA/FenceConfig.pm
More information about the pve-devel