03738f00ba
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 |
||
---|---|---|
.. | ||
rug | ||
__init__.py |