Saturday, November 1, 2014

OpenStack Series: Part 1 - How do you look at OpenStack?

OpenStack is an open source cloud computing platform that is made up of different services.  Each service performs a specific function and is inter-related.

I am always amazed at how human is created.  Each person is unique and depending on the brain, we look at things different.  Or we memorize things differently also.

To look at OpenStack, some people may prefer this in tabular format:

The following table describes the OpenStack services that make up the OpenStack architecture:

Table 1.1. OpenStack services
Service Project name Description
Dashboard Horizon Provides a web-based self-service portal to interact with underlying OpenStack services, such as launching an instance, assigning IP addresses and configuring access controls.
Compute Nova Manages the lifecycle of compute instances in an OpenStack environment. Responsibilities include spawning, scheduling and decommissioning of virtual machines on demand.
Networking Neutron Enables Network-Connectivity-as-a-Service for other OpenStack services, such as OpenStack Compute. Provides an API for users to define networks and the attachments into them. Has a pluggable architecture that supports many popular networking vendors and technologies.
Object Storage Swift Stores and retrieves arbitrary unstructured data objects via a RESTful, HTTP based API. It is highly fault tolerant with its data replication and scale out architecture. Its implementation is not like a file server with mountable directories.
Block Storage Cinder Provides persistent block storage to running instances. Its pluggable driver architecture facilitates the creation and management of block storage devices.
Shared services
Identity service Keystone Provides an authentication and authorization service for other OpenStack services. Provides a catalog of endpoints for all OpenStack services.
Image Service Glance Stores and retrieves virtual machine disk images. OpenStack Compute makes use of this during instance provisioning.
Telemetry Ceilometer Monitors and meters the OpenStack cloud for billing, benchmarking, scalability, and statistical purposes.
Higher-level services
Orchestration Heat Orchestrates multiple composite cloud applications by using either the native HOT template format or the AWS CloudFormation template format, through both an OpenStack-native REST API and a CloudFormation-compatible Query API.
Database Service Trove Provides scalable and reliable Cloud Database-as-a-Service functionality for both relational and non-relational database engines.

This table shows all the components of OpenStack as of the Havana release.  It gives a good introduction of the components and what each component does.

Anyone who looked into OpenStack will have seen this diagram:

This is a diagram that shows the components of OpenStack as well as how they relate to each other.  While this picture truly represents OpenStack it is very overwhelming.  If I show you this diagram and ask you if you want to deploy OpenStack, I think you answer will be NO. This diagram goes more and more complex as more and more projects are included in OpenStack. 

I happened to stumble upon an article by Sean Dague: “OpenStack as Layers”.  I am a software developer for networking equipment.  I am used to the 7 layers of the OSI model that depicts different aspects of a network.  Sean did a good job in breaking down all the components of OpenStack into a finer logical layer. 

Image source:

In his model OpenStack has 4 layers:
  • Layer 1 - Basic Compute Infrastructure
  • Layer 2 - Extended Infrastructure
  • Layer 3 - Optional Enhancements
  • Layer 4 - Consumption Services

Grouping the OpenStack components into logical layers does help me to understand OpenStack more.

Recently I am digging into OpenStack in terms of deployment as well as reading the Python source code to see how it really works.   For prove of concept or playing around in the lab or even for development there is DevStack on the Ubuntu platform and there is PackStack for the CentOS platform.  There is an all-in-one option where we can deploy OpenStack on a single Linux machine.  While I am looking into OpenStack Neutron, I came across this diagram

It groups the OpenStack components/services into:
  • Basic Services
  • Optional Services
  • Supporting Services
Each node has it’s specific function which are:
  • Controller
  • Network
  • Compute
We can see that Neutron Agents runs in the Network node while the ML2 Plug-in runs on the Controller node, Network nod as well as the Compute Node.  Layer-2 Agent (OVS) runs on the Network node and the Compute node.

For the Telemetry Service, there is the Ceilometer Core running on the Controller node and the Ceilometer Agent running on the Compute node.

While this diagram is to illustrate OpenStack Neutron, I find that this is the best way to look at OpenStack.  Each node represents a function namely controller, Network and compute with all the OpenStack components clearly shown.   With this I can see clearly how each OpenStack component is related to each other or group together by its function.  For me the first diagram in this blog is too complex, the second one is a little bit abstract and this third diagram is just right. Of course this is not the only way to deploy OpenStack but this give a clear picture (at least for me).

Which view is best for you?

Related Post:

"Chapter 1. Get Started with OpenStack." Document ATOM. N.p., n.d. Web. 26 Oct. 2014.


  1. openstack disaster recovery is actual an umbrella topic that describes which is needed to be done for security and application.

  2. DreamHost is ultimately the best website hosting provider with plans for all of your hosting requirements.