astara/akanda/rug
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
..
api Adds an LBAAS driver 2015-10-08 13:27:51 -07:00
cli Add driver framework 2015-10-08 13:27:03 -07:00
common Add support for hash-based RUG scale out 2015-10-09 15:07:03 -07:00
db Add driver framework 2015-10-08 13:27:03 -07:00
drivers Adds an LBAAS driver 2015-10-08 13:27:51 -07:00
openstack Add translation markers for exceptions and logging 2015-08-23 13:09:40 -05:00
test Add support for hash-based RUG scale out 2015-10-09 15:07:03 -07:00
__init__.py Adds a DB layer, use it for debug modes 2015-08-12 15:09:33 -07:00
commands.py Add driver framework 2015-10-08 13:27:03 -07:00
coordination.py Add support for hash-based RUG scale out 2015-10-09 15:07:03 -07:00
daemon.py Add translation markers for exceptions and logging 2015-08-23 13:09:40 -05:00
debug.py Fix debug and browse config issues 2015-07-28 13:12:07 -07:00
event.py Add support for hash-based RUG scale out 2015-10-09 15:07:03 -07:00
health.py Add driver framework 2015-10-08 13:27:03 -07:00
instance_manager.py Adds an LBAAS driver 2015-10-08 13:27:51 -07:00
main.py Add support for hash-based RUG scale out 2015-10-09 15:07:03 -07:00
metadata.py Add translation markers for exceptions and logging 2015-08-23 13:09:40 -05:00
notifications.py Adds an LBAAS driver 2015-10-08 13:27:51 -07:00
populate.py Add support for hash-based RUG scale out 2015-10-09 15:07:03 -07:00
scheduler.py Add driver framework 2015-10-08 13:27:03 -07:00
service.py Migrate to oslo.i18n 2015-06-24 18:48:23 -07:00
state.py Add support for hash-based RUG scale out 2015-10-09 15:07:03 -07:00
tenant.py Add driver framework 2015-10-08 13:27:03 -07:00
worker.py Add support for hash-based RUG scale out 2015-10-09 15:07:03 -07:00