At the preface of Part I of the High Availability post series, I mentioned that in order to have a truly highly available LBaaS Agent + HAProxy in namespace implementation, it should have the ability to automatically recover in case that the HAProxy process died unexpectedly.
For that, we’ll need a watchdog to monitor and respawn the child processes. The watchdog in our case is the LBaaSv2 agent.
One of the most frequent questions I get in regards to the (now legacy) HAProxy in namespace LBaaS driver, is about high availability options for it.
Up until OpenStack Ocata, the direct implication of having a faulty OpenStack node that hosts Neutron LBaaSv2 agent was that all loadbalancers scheduled to that agent were out of service.
Needless to say, such scenario is not sustainable for production environments. It essentially creates a single point of failure for each created loadbalancer, even if that OpenStack deployment consists of multiple LBaaSv2 agents (one per each node).
Starting Ocata, the LBaaS community has a solution for the above-mentioned scenario.
But before we dive in, I’d like to point out yet another point of failure with the LBaaS Agent + HAProxy in namespace implementation: the HAProxy process itself. Thus, in order to truly make that implementation highly available, we’ll also need to take into account a scenario in which the HAProxy process died unexpectedly. For that, I Implemented ProcessMonitor for the haproxy driver, which I’ll describe in part II, so stay tuned 🙂