Browse Source

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>
Bogdan Dobrelya 4 years ago
parent
commit
09e547f02c
2 changed files with 57 additions and 15 deletions
  1. 38
    1
      README.md
  2. 19
    14
      deployment_scripts/puppet/manifests/site.pp

+ 38
- 1
README.md View File

@@ -10,7 +10,9 @@ Fuel Fencing Plugin
10 10
 5. [Limitations - OS compatibility, etc.](#limitations)
11 11
 6. [Development - Guide for contributing to the plugin](#development)
12 12
 7. [Contributors - Those with commits](#contributors)
13
-8. [Release Notes - Notes on the most recent updates to the plugin](#release-notes)
13
+8. [Versioning - Fuel and plugin versions](#versioning)
14
+9. [Known Issues - Issues and workarounds](#known-issues)
15
+10. [Release Notes - Notes on the most recent updates to the plugin](#release-notes)
14 16
 
15 17
 Overview
16 18
 --------
@@ -118,6 +120,14 @@ Note that in order to build this plugin the following tools must present:
118 120
 
119 121
 TODO(bogdando) finish the guide, add agents and devices verification commands
120 122
 
123
+Please also note that the recommended value for the ``no-quorum-policy`` cluster property
124
+should be changed manually (after deployment is done) from ignore/stopped to suicide.
125
+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)
126
+section in the official Pacemaker documentation. You can set this property by the command
127
+```
128
+pcs property set no-quorum-policy=suicide
129
+```
130
+
121 131
 Implementation
122 132
 --------------
123 133
 
@@ -170,6 +180,33 @@ Plugin :: Fuel version
170 180
 6.0.0  -> 6.0
171 181
 ```
172 182
 
183
+Known Issues
184
+------------
185
+
186
+[LP1411603](https://bugs.launchpad.net/fuel/+bug/1411603)
187
+
188
+After the deployment is finished, please make sure all of the controller nodes have
189
+corresponding ``stonith__*`` primitives and the stonith verification command gives
190
+no errors.
191
+
192
+You can list the STONITH primitives and check their health by the commands:
193
+```
194
+pcs stonith
195
+pcs stonith level verify
196
+```
197
+
198
+And the location constraints could be shown by the commands:
199
+```
200
+pcs constraint list
201
+pcs constraint ref <stonith_resource_name>
202
+```
203
+
204
+It is expected that every ``stonith_*`` primitive should have one "prohibit" and
205
+one "allow" location shown by the ref command.
206
+
207
+If some of the controller nodes does not have corresponding stonith primitives
208
+or locations for them, please follow the workaround provided at the LP bug.
209
+
173 210
 Release Notes
174 211
 -------------
175 212
 

+ 19
- 14
deployment_scripts/puppet/manifests/site.pp View File

@@ -1,21 +1,26 @@
1 1
 $fuel_settings = parseyaml($astute_settings_yaml)
2 2
 
3
-# Fetch fencing policy and settings
4
-$fence_policy = $::fuel_settings['ha_fencing']['fence_policy']
5
-$fencing_enabled  = $fence_policy ? { 'disabled'=>false, 'reboot'=>true, 'poweroff'=>true, default=>false }
3
+$primary_controller = $::fuel_settings['role'] ? { 'primary-controller'=>true, default=>false }
4
+$is_controller      = $::fuel_settings['role'] ? { 'controller'=>true, default=>false }
6 5
 
7
-if $fencing_enabled {
8
-  $fencing_settings = parseyaml($fencing_settings_yaml)
9
-  $fence_primitives = $::fencing_settings['fence_primitives']
10
-  $fence_topology   = $::fencing_settings['fence_topology']
6
+if ($is_controller or $primary_controller) {
7
+  # Fetch fencing policy and settings
8
+  $fence_policy = $::fuel_settings['ha_fencing']['fence_policy']
9
+  $fencing_enabled  = $fence_policy ? { 'disabled'=>false, 'reboot'=>true, 'poweroff'=>true, default=>false }
11 10
 
12
-  $nodes_hash = $::fuel_settings['nodes']
13
-  $controllers = concat(filter_nodes($nodes_hash,'role','primary-controller'), filter_nodes($nodes_hash,'role','controller'))
11
+  if $fencing_enabled {
12
+    $fencing_settings = parseyaml($fencing_settings_yaml)
13
+    $fence_primitives = $::fencing_settings['fence_primitives']
14
+    $fence_topology   = $::fencing_settings['fence_topology']
14 15
 
15
-  include stdlib
16
-  class { '::pcs_fencing::fencing_primitives':
17
-    fence_primitives => $fence_primitives,
18
-    fence_topology   => $fence_topology,
19
-    nodes            => $controllers,
16
+    $nodes_hash = $::fuel_settings['nodes']
17
+    $controllers = concat(filter_nodes($nodes_hash,'role','primary-controller'), filter_nodes($nodes_hash,'role','controller'))
18
+
19
+    include stdlib
20
+    class { '::pcs_fencing::fencing_primitives':
21
+      fence_primitives => $fence_primitives,
22
+      fence_topology   => $fence_topology,
23
+      nodes            => $controllers,
24
+    }
20 25
   }
21 26
 }

Loading…
Cancel
Save