← Back to team overview

fuel-dev team mailing list archive

[fuel-dev] single node HA controllers proposal

 

After speaking with the TrippleO folks about how they want to
transition from supporting single controller plane, to only supporting
HA controller plane, but allowing a controller plane to scale down to
1. I thought, why don't we do that?

Why should we:
1) Starting with a control plane that is HA ready has been requested
multiple times
2) It gets rid of all kinds of separate code-paths to support two
deployment types
3) It ensures that more code and components of HA are tested
4) It reduces the amount of unit tests that are needed to support
testing both deployment types
5) It helps to ensure that scale up, scale swap (replace failed nodes)
and later down are handled better.

And best of all, it already works! I've tested with only the patch
below. We can deploy 1 controller and then add 2, and 3 with out any
observed problems (OSTF passes in both cases)

To enable for the fuel CLI

diff --git a/nailgun/nailgun/task/task.py b/nailgun/nailgun/task/task.py
index b4a3985..bfd2e8d 100644
--- a/nailgun/nailgun/task/task.py
+++ b/nailgun/nailgun/task/task.py
@@ -438,9 +438,9 @@ class CheckBeforeDeploymentTask(object):
             raise errors.NotEnoughControllers(
                 "Not enough controllers, %s mode requires at least 1 "
                 "controller" % (cluster_mode))
-        elif cluster_mode == 'ha_compact' and controllers_count < 3:
+        elif cluster_mode == 'ha_compact' and controllers_count < 1:
             raise errors.NotEnoughControllers(
-                "Not enough controllers, %s mode requires at least 3 "
+                "Not enough controllers, %s mode requires at least 1 "
                 "controllers" % (cluster_mode))


Follow ups