astara/akanda
Adam Gandelman 03738f00ba Add support for hash-based RUG scale out
This adds support for running multiple RUG processes to scale out
and distribute appliance load across them.  It uses a hash ring implementation
lifted from Ironic (with modification).  The gist is:

* Workers now maintain a copy of the hash ring, which is hashed using the
list of members in the cluster.

* A new subprocess connects to an external coordination service via tooz, ie
memcache or zookeeper.  This service's only purpose is to track cluster
membership and report changes to this subprocess.  On membership changes,
the coordination subprocess creates a REBALANCE event and puts it on the
internal notification queue.  There is no leadership election required.

* When a worker gets a REBALANCE event, it rebalances the hash ring based
on the new membership list.

* Prior to processing any events bound for a specified router, the worker
first checks the hash manager to find if the resource is assigned to it.
If not, it ignores it.  If it is, it processes the event. This also applies
to incoming command events.

Partially implements: blueprint rug-scaling

Change-Id: I8d04100ffc0e2f2223ebf4b079551dac99224344
2015-10-09 15:07:03 -07:00
..
rug Add support for hash-based RUG scale out 2015-10-09 15:07:03 -07:00
__init__.py Cleanup 2014-05-27 14:07:14 -07:00