Support for multiple agents to manage a single backend loadbalancer

Registered by Stephen Gran

Currently, a single LBaaS agent manages a single loadbalancer backend. It should be possible to have multiple agents manage a backend resource for both HA and horizontal scalability.

For those lbaas drivers that manage physical loadbalancer devices rather than processes (like HAProxy) it doesn't matter which exact agent will perform actual managing. So such loadbalancer instances may be simply rescheduled to another agent in case current agent fails.

The proposed solution is to monitor agents states on plugin side with some periodic interval and reschedule loadbalancer instances if some agent becomes inactive. The only requirement for lbaas driver is to indicate whether its instances can be rescheduled to another agent on another host.
One possible improvement would be to save instances to some cache in case there are no active agents supporting needed device driver at the moment and try to schedule these instances once any new agent appears or down agent became active.

Other solution may be to have a common message queue for such drivers and to cast messages there so that the first active agent picks up the message and performs the action.

The advantage of agent monitoring and rescheduling is that we keep simplicity by having to handle only one message queue and to have one unified lbaas agent manager without any specific subagents. Also unlike common queue resheduling ensures that currently there are active lbaas agents supporting required device driver.

Blueprint information

Status:
Complete
Approver:
Mark McClain
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
Obsolete
Series goal:
None
Implementation:
Needs Code Review
Milestone target:
None
Started by
Oleg Bondarev
Completed by
Armando Migliaccio

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/lbaas-ha-agent,n,z

Addressed by: https://review.openstack.org/59743
    LBaaS: agent monitoring and instance rescheduling

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.