OpenStack – An overview
16 October 2015, by Chris Arnott
What is it
OpenStack is open source virtualisation software that can be run on generic hardware, allowing you to build your own cloud. In order to provide high availability, several servers can be clustered together. This allows resources from several servers to be pooled into one place when deploying machines.
How does it work
OpenStack is deployed as a set of services that run on different machines, coordinating together to create a cloud. Different services are responsible for different parts of the system and communicate to produce the complete OpenStack solution. There are 6 main services, which are required for OpenStack to run correctly. There are then many other services which can be included in an OpenStack deployment to give extra functionality. A description of the six main services and their responsibilities is given below.
Nova is the service that virtualises CPUs on a machine. It can use kvm or qemu to do so. This is service that is in charge of all of the actual computation that any deployed VMs will be doing.
This takes care of networking. Allowing for different internal networks, security rules within the deployment and IP management. This can be one of the trickier components to configure correctly, as the configuration you deploy it with will have to match with the switches you plug your physical servers into.
In charge of authentication, and authorization keystone is used by all other services to ensure that the OpenStack system is secure.
Cinder acts as an abstraction layer on top of your compute servers in order to provide volume storage (disks), which can be attached to VMs. Cinder storage per server is placed on a volume group, so that it can seamlessly use multiple physical disks.
Glance is in charge of the images available to users to deploy. Server images can be uploaded to the service (or downloaded by the service), and then either booted from directly, or converted into cinder volumes, which can then be deployed from.
Swift is the OpenStack object-based storage service. Resilient storage of files is achieved by replication of data across a cluster.
As well as the 6 main services, there are lots of additional services that can be deployed to add functionality to an OpenStack deployment. A few of these other services are discussed below. For a full list of services see the list on GitHub.
This is the administration web interface, which allows easy management of different services/Vms within a deployment. Different users can be given different limits on cloud resources they can use, as well as having their servers kept separate.
Heat is the OpenStack solution for automating deployment and orchestration of larger networks of VMs. A Heat template specifies the components other systems should create and how to connect them. It can then be deployed to create a network. Once deployed, Heat templates can be updated to update components in a deployed virtual network automatically.
Murano allows developers and cloud admins to publish cloud ready applications to an easy to use interface. This allows other OpenStack users to quickly and simply start up these applications in the cloud.
New features in OpenStack Liberty
There have been several versions of OpenStack so far (beware that upgrading between them is not trivial), and the version soon to be released is called Liberty. In a recent webcast organised by Mirantis, who help automate and support OpenStack deployments, I learnt a bit about new services and new features of existing services that are planned to be released in OpenStack liberty. The section below is a limited summary of the more interesting parts, for a more in depth look at what’s new, the Mirantis webinar on the subject is a very good place to start.
Magnum allows for the deployment of containers onto an OpenStack deployment. This is done by creating a cluster of VMs as a bay. The bay can then have containers deployed upon it. In Liberty Magnum supports both Docker and Kubernetes.
In order to try and simplify the OpenStack deployment model, Kolla allows the services that make an OpenStack deployment to be deployed individually in containers. This makes starting stopping and upgrading individual services a much more manageable task.
Congress aims at providing compliance across an OpenStack deployment. It allows both proactive and reactive checking of business policy violations.
This service allows for good key management on an OpenStack deployment, creating better security with features such as master key rotation.