Openstack is based on a modular architectural design where services can be co-resident on a single host or, more commonly, on multiple hosts.
Before Discussing HA lets know in brief about the Openstack Architecture.
Openstack conceptual architecture:
Q : With High Availability(HA) what we try to do ?
Ans : We try to minimize two things.
1. System downtime —
This occurs when a user-facing service is unavailable beyond a specified maximum amount of time.
2. Data loss —
When the machine goes down abruptly there can be a loss of data ,Accidental deletion or Destruction of data.
Most high availability systems guarantee protection against system downtime and data loss only in the event of a single failure. However, they are also expected to protect against cascading failures, where a single failure deteriorates into a series of consequential failures.
The main aspect of high availability is the elimination of single points of failure (SPOFs). A SPOF is an individual piece of equipment or software which will cause system downtime or data loss if it fails. In order to eliminate SPOFs, check that mechanisms exist for redundancy of.
Network components, such as switches and routers
Applications and automatic service migration
Facility services such as power, air conditioning, and fire protection
OpenStack currently satisfy HA requirements for its own infrastructure services. Means it does not guaranty the HA of the Guest VMs but its own Services.
Now Lets try to understand what are the Openstack Services are that needs to be Highly available.
1. Identity Service, i.e Keystone-API.
2. Messaging Service, RabbitMQ
3. Database Service, i.e MySql Serivce.
4. Image Service.i.e Glance-API.
5. Network Service,Newtron-API.
6. Compute Services ,Nova-API.
There two type of services here stateless and stateful.
A stateless service is one that provides a response after your request, and then requires no further attention. And the services are follows.
Keystone is an OpenStack project that provides Identity, Token, Catalog and Policy services for use specifically by projects in the OpenStack family. It implements OpenStack’s Identity API.
Project Glance in OpenStack is the Image Service which offers retrieval, storage, and metadata assignment for your images that you want to run in your OpenStack cloud.
Neutron is an OpenStack project to provide “networking as a service” between interface devices (e.g., vNICs) managed by other Openstack services
Nova-Conductor : Nova-conductor is a RPC server. It is stateless, and is horizontally scalable, meaning that you can start as many instances on many servers as you want. Note that most of what nova-conductor does is doing database operations on behalf of compute nodes. The majority of the APIs are database proxy calls. Some are proxy calls to other RPC servers such as nova-api and nova-network.
The client side of the RPC call is inside nova-compute. For example, if there is a need to update certain state of a VM instance in nova-compute, instead of connecting to the database directly, make a RPC call to nova-conductor, which connects to the database and makes the actual db update.
Nova-Scheduler: Compute resource scheduling, it is the DRS for Openstack environment, people know DRS (Distributed Resource Scheduler) in a VMware environment can understand its functionality if they understand what VMware DRS is.
Openstack stateful Services.
A stateful service is one where subsequent requests to the service depend on the results of the first request. Stateful services are more difficult to manage because a single action typically involves more than one request, so simply providing additional instances and load balancing will not solve the problem.
- OpenStack Database
- Message Queue
The important thing to achieve HA is to make sure these services are redundant, and available,apart from these services some of networking services also needs to be highly available and for all these services how you achieve that is up to you.
In my next blog I ll write some of the common ways to achieve high availability on these openstack services.