High availability of the cloud and applications is a requirement for enterprises. There are three fundamental levels at which “high availability” (HA) can be provided in an Openstack-based cloud:
- Controller and core-services level
- Virtual machine (VM) level
- Application level
In this talk, join engineers from ZeroStack Inc. as we take a deep-dive into clustering, high availability of services and VMs. Based on our experience with building and deploying a highly-reliable, scale on demand Openstack based private cloud solution, we provide a case study with design insights, lessons learned and best practices.
In the first part of this talk, we describe and demonstrate how various services that constitute an Openstack controller can be created and managed in a highly available way to provide Reliable Openstack:
- Stateless services: Nova, Neutron, Cinder, Glance, Keystone, Heat
- Stateful services: MySQL, Message queues
In the second part of the talk, we switch gears to talk about high-availability at the VM-level. In the basic case, we discuss how Openstack notifications can be used to detect faults of compute instances in order to restart them. In the more advanced context of a remote controller, connectivity cannot be used as a proxy for liveness - we discuss how VM-level HA can be still be achieved to run applications reliably.
Finally, in the third part of our talk, we explain how high availability may be achieved at the application level in Openstack-based clouds. Modern applications are increasingly designed in a distributed manner to survive failures of individual nodes. In addition, we explain how concepts of “affinity” and “anti-affinity” can be used along with the notion of host-aggregates to provide tolerance to failures.