Fixes for HA fencing plugin
* Document a w/a for a parrallel deploy issue * Add known issues section to docs * Add missing versioning section to docs * Deploy the plugin only at controller nodes Related blueprint fencing-in-puppet-manifests Related-bug: #1411603 Change-Id: I26ebb5a9d7dae0723b57d171644b626a7b9e691d Signed-off-by: Bogdan Dobrelya <bdobrelia@mirantis.com>
This commit is contained in:
parent
7382d88ccf
commit
09e547f02c
39
README.md
39
README.md
|
@ -10,7 +10,9 @@ Fuel Fencing Plugin
|
||||||
5. [Limitations - OS compatibility, etc.](#limitations)
|
5. [Limitations - OS compatibility, etc.](#limitations)
|
||||||
6. [Development - Guide for contributing to the plugin](#development)
|
6. [Development - Guide for contributing to the plugin](#development)
|
||||||
7. [Contributors - Those with commits](#contributors)
|
7. [Contributors - Those with commits](#contributors)
|
||||||
8. [Release Notes - Notes on the most recent updates to the plugin](#release-notes)
|
8. [Versioning - Fuel and plugin versions](#versioning)
|
||||||
|
9. [Known Issues - Issues and workarounds](#known-issues)
|
||||||
|
10. [Release Notes - Notes on the most recent updates to the plugin](#release-notes)
|
||||||
|
|
||||||
Overview
|
Overview
|
||||||
--------
|
--------
|
||||||
|
@ -118,6 +120,14 @@ Note that in order to build this plugin the following tools must present:
|
||||||
|
|
||||||
TODO(bogdando) finish the guide, add agents and devices verification commands
|
TODO(bogdando) finish the guide, add agents and devices verification commands
|
||||||
|
|
||||||
|
Please also note that the recommended value for the ``no-quorum-policy`` cluster property
|
||||||
|
should be changed manually (after deployment is done) from ignore/stopped to suicide.
|
||||||
|
For more information on no-quorum policy, see the [Cluster Options](http://clusterlabs.org/doc/en-US/Pacemaker/1.0/html/Pacemaker_Explained/s-cluster-options.html)
|
||||||
|
section in the official Pacemaker documentation. You can set this property by the command
|
||||||
|
```
|
||||||
|
pcs property set no-quorum-policy=suicide
|
||||||
|
```
|
||||||
|
|
||||||
Implementation
|
Implementation
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
@ -170,6 +180,33 @@ Plugin :: Fuel version
|
||||||
6.0.0 -> 6.0
|
6.0.0 -> 6.0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Known Issues
|
||||||
|
------------
|
||||||
|
|
||||||
|
[LP1411603](https://bugs.launchpad.net/fuel/+bug/1411603)
|
||||||
|
|
||||||
|
After the deployment is finished, please make sure all of the controller nodes have
|
||||||
|
corresponding ``stonith__*`` primitives and the stonith verification command gives
|
||||||
|
no errors.
|
||||||
|
|
||||||
|
You can list the STONITH primitives and check their health by the commands:
|
||||||
|
```
|
||||||
|
pcs stonith
|
||||||
|
pcs stonith level verify
|
||||||
|
```
|
||||||
|
|
||||||
|
And the location constraints could be shown by the commands:
|
||||||
|
```
|
||||||
|
pcs constraint list
|
||||||
|
pcs constraint ref <stonith_resource_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
It is expected that every ``stonith_*`` primitive should have one "prohibit" and
|
||||||
|
one "allow" location shown by the ref command.
|
||||||
|
|
||||||
|
If some of the controller nodes does not have corresponding stonith primitives
|
||||||
|
or locations for them, please follow the workaround provided at the LP bug.
|
||||||
|
|
||||||
Release Notes
|
Release Notes
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,26 @@
|
||||||
$fuel_settings = parseyaml($astute_settings_yaml)
|
$fuel_settings = parseyaml($astute_settings_yaml)
|
||||||
|
|
||||||
# Fetch fencing policy and settings
|
$primary_controller = $::fuel_settings['role'] ? { 'primary-controller'=>true, default=>false }
|
||||||
$fence_policy = $::fuel_settings['ha_fencing']['fence_policy']
|
$is_controller = $::fuel_settings['role'] ? { 'controller'=>true, default=>false }
|
||||||
$fencing_enabled = $fence_policy ? { 'disabled'=>false, 'reboot'=>true, 'poweroff'=>true, default=>false }
|
|
||||||
|
|
||||||
if $fencing_enabled {
|
if ($is_controller or $primary_controller) {
|
||||||
$fencing_settings = parseyaml($fencing_settings_yaml)
|
# Fetch fencing policy and settings
|
||||||
$fence_primitives = $::fencing_settings['fence_primitives']
|
$fence_policy = $::fuel_settings['ha_fencing']['fence_policy']
|
||||||
$fence_topology = $::fencing_settings['fence_topology']
|
$fencing_enabled = $fence_policy ? { 'disabled'=>false, 'reboot'=>true, 'poweroff'=>true, default=>false }
|
||||||
|
|
||||||
$nodes_hash = $::fuel_settings['nodes']
|
if $fencing_enabled {
|
||||||
$controllers = concat(filter_nodes($nodes_hash,'role','primary-controller'), filter_nodes($nodes_hash,'role','controller'))
|
$fencing_settings = parseyaml($fencing_settings_yaml)
|
||||||
|
$fence_primitives = $::fencing_settings['fence_primitives']
|
||||||
|
$fence_topology = $::fencing_settings['fence_topology']
|
||||||
|
|
||||||
include stdlib
|
$nodes_hash = $::fuel_settings['nodes']
|
||||||
class { '::pcs_fencing::fencing_primitives':
|
$controllers = concat(filter_nodes($nodes_hash,'role','primary-controller'), filter_nodes($nodes_hash,'role','controller'))
|
||||||
fence_primitives => $fence_primitives,
|
|
||||||
fence_topology => $fence_topology,
|
include stdlib
|
||||||
nodes => $controllers,
|
class { '::pcs_fencing::fencing_primitives':
|
||||||
|
fence_primitives => $fence_primitives,
|
||||||
|
fence_topology => $fence_topology,
|
||||||
|
nodes => $controllers,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue