---
 README | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 110 insertions(+)

diff --git a/README b/README
index 1c5177f..dbf8d6a 100644
--- a/README
+++ b/README
@@ -72,6 +72,116 @@ works using reliable HW fence devices.
 
 Above 'self fencing' algorithm does not work if you use this option!
 
+== Hardware Fencing ==
+
+This is for the users who want to use external fence devices.
+
+While they may have some advantages like:
+
+- possible faster recovery as its normally faster than the lock timeout
+
+- soft watchdog can (!) be less reliable
+
+- maybe someone does not want to reset but rather cut the machine off for
+  investigation
+
+But also can introduce some disadvantages, like:
+
+- added complexity
+
+- depends on external device (which can also fail)
+
+=== Fence Agents Supported ===
+
+We package the fence-agents collection from ClusterLabs:
+https://github.com/ClusterLabs/fence-agents
+apt install fence-agents
+
+This has a wide variety of supported fence agents and should cover all needs.
+
+If you must use special hardware you can write your own agent, simply follow
+the specs from the ClusterLabs agent so that your and their agents are 
interface
+compatible.
+
+At least they have to support the following parameters:
+- node
+- plug
+- action
+
+
+=== Fence Device Configuration ===
+
+We use the configuration schema from dlm.conf (see man dlm.conf),
+this allows us to use a quite easily and simple configuration schema
+while not restricting an user, as complex setups are still possible.
+
+The basic format looks like:
+
+  device  dev_name agent [args]
+  connect dev_name node=nodeid [args]
+  connect dev_name node=nodeid [args]
+  connect dev_name node=nodeid [args]
+
+Example:
+
+  # simple devices
+  device first_dev fence_pve ip="192.168.XX.XX" password="12345" action=off
+  connect first_dev node=node1 plug=100
+  connect first_dev node=node2 plug=101
+  connect first_dev node=node3 plug=102
+
+But the schema is able to do more, e.g., parallel devices or even multiple
+devices can be configured per node. They will be executed from top to bottom
+until the first fence device (set) succeeds.
+
+NOTE: use the longopts where possible, e.g.: use username=foo instead of l=foo
+      if a option has only a short option and its boolean then you may use it.
+
+=== Internal Configuration Representation ===
+
+We use an hash with a structure like this:
+
+#my $test_fence_device = {
+#    foo_apc => { # <-- device name
+#      priority => 0,
+#      sub_devs => {
+#          1 => { # two parallel devices
+#              agent => "fence_apc",
+#              args => ['ip=192.168.1.50', 'username=fencing', 
'password=12345', 'x', 'o=off'],
+#              node_args => {
+#                  uno => [n=1', 's=1'],
+#                  due => [n=2', 's=2'],
+#                  tre => [n=3', 's=1'],
+#              },
+#          },
+#          2 => {
+#              agent => "fence_apc",
+#              args => ['ip=192.168.1.51', 'username=fencing', 
'password="12345 asd"', 'x', 'o=off'],
+#              node_args => {
+#                  uno => [n=1', 's=1'],
+#                  due => [n=2', 's=2'],
+#                  tre => [n=3', 's=1'],
+#              },
+#          },
+#      }
+#    },
+#    bar_device => { # second fence device
+#      priority => 1,
+#      sub_devs => {
+#          1 => {
+#              agent => "fence_pve",
+#              args => ['ip=192.168.1.18', 'password="12345 asd"', 'o=off'],
+#              node_args => {
+#                  uno => [n=100', 's=1'],
+#                  due => [n=101', 's=1'],
+#                  tre => [n=102', 's=1'],
+#              },
+#          },
+#      }
+#    },
+#};
+
+
 == Testing requirements ==
 
 We want to be able to simulate HA cluster, using a GUI. This makes it easier
-- 
2.20.1


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to