[openstack-dev] [Fuel] How to auto allocate VIPs for roles in different network node groups?

Aleksandr Didenko adidenko at mirantis.com
Fri Jan 15 09:19:07 UTC 2016


Hi,

We need to come up with some solution for a problem with VIP generation
(auto allocation), see the original bug [0].

The main problem here is: how do we know what exactly IPs to auto allocate
for VIPs when needed roles are in different nodegroups (i.e. in different
IP networks)?
For example 'public_vip' for 'controller' roles.

Currently we have two possible solutions.

1) Fail early in pre-deployment check (when user hit "Deploy changes") with
error about inability to auto allocate VIP for nodes in different
nodegroups (racks). So in order to run deploy user has to put all roles
with the same VIPs in the same nodegroups (for example: all controllers in
the same nodegroup).

Pros:

   - VIPs are always correct, they are from the same network as nodes that
   are going to use them, thus user simply can't configure invalid VIPs for
   cluster and break deployment

Cons:

   - hardcoded limitation that is impossible to bypass, does not allow to
   spread roles with VIPs across multiple racks even if it's properly handled
   by Fuel Plugin, i.e. made so by design


2) Allow to move roles that use VIPs into different nodegroups, auto
allocate VIPs from "default" nodegroup and send an alert/notification to
user that such configuration may not work and it's up to user how to
proceed (either fix config or deploy at his/her own risk).

Pros:

   - relatively simple solution


   - impossible to break VIP serialization because in the worst case we
   allocate VIPs from default nodegroup

Cons:

   - user can deploy invalid environment that will fail during deployment
   or will not operate properly (for example when public_vip is not able to
   migrate to controller from different rack)


   - which nodegroup to choose to allocate VIPs? default nodegroup? random
   pick? in case of random pick troubleshooting may become problematic


   - waste of IPs - IP address from the network range will be implicitly
   allocated and marked as used, even it's not used by deployment (plugin uses
   own ones)


*Please also note that this solution is needed for 8.0 only.* In 9.0 we
have new feature for manual VIPs allocation [1]. So in 9.0, if we can't
auto allocate VIPs for some cluster configuration, we can simply ask user
to manually set those problem VIPs or move roles to the same network node
group (rack).

So, guys, please feel free to share your thoughts on this matter. Any input
is greatly appreciated.

Regards,
Alex

[0] https://bugs.launchpad.net/fuel/+bug/1524320
[1] https://blueprints.launchpad.net/fuel/+spec/allow-any-vip
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20160115/5f093cf4/attachment.html>


More information about the OpenStack-dev mailing list