Support for multiple agents to manage a single backend loadbalancer
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
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
LBaaS: agent monitoring and instance rescheduling
Work Items
Dependency tree
* Blueprints in grey have been implemented.