In the first post of OpenStack series, I made a short presentation about what OpenStack is and what it can do. In this post, we will see more about its structure: components and their roles. First of all, let's us take a look at OpenStack's history. OpenStack was originally a project of cooperation between RackSpace and NaSa in 2010. At that time, there were only two components developed which were Nova and Swift. In a short time, more and more components were added and they together formed a powerful OpenStack as we see today.
By the time this post is written, the most recent version of OpenStack is called Havana and the upcoming version's code name is Icehouse. There are a lot of components in Havana version, however, we are only discussing about important ones which define features of OpenStack. First of all, let's see the OpenStack design.
As we can see that, OpenStack is a middleware stands between your applications and physical hardware. So from OpenStack, we can create instances of virtual machine and deploy our applications onto them. As we mentioned in the previous post, OpenStack allow the instances scaling the computing, network, or storage resource by simply configure them in the central management tool (Dashboard). So that, how OpenStack can do that? “They have their components”.

Compute (Nova)

Nova is a cloud computing fabric controller (the main part of an IaaS system) written in Python. Nova is in charge of managing pool of computing resources e.g CPU, memory, GPU... Through it It provides the feature that allows scale instances horizontally on standard hardware, scale up and down to meet demands. Nova works with widely available virtualization technologies

Storage

Storage consists two components which are Block storage, code name Cinder, and Object storage, code name Swift.

Block storage (Cinder)

Cinder provides management for persistent block level storage devices. It handles creation, attaching detaching of the block level devices to servers. This component also supports other storage platforms e.g Ceph, CloudByte,Coraid, EMC, GlusterFS, IBM Storage, Linux LIO, NetApp, Nexenta, Scality, SolidFire and HP. Snapshot management provides backupfunctions.

Object storage (Swift)

Swift is a solution for scalable redundant storage. Objects and files are written to multiple disk drives spread throughout multi servers. Swift also provides data replication feature while ensure data integrity across the clusters. These two components are fully integrated into OpenStack Compute and Dashboard.

Networking (Neutron)

Neutron, as its name, is in charge of linking your applications with the world. It is one of three main components in OpenStack. Neutron manages networks and IP addresses. The bandwidth, network interfaces and puplic IPs are put in the pool then assigned to every instances. Neutron can act as a firewall to control the traffic in and out the whole system. OpenStack also support Floating IPs which point to many machines and allows traffic to be dynamically rerouted among them, this means high availability and fail tolerant. After an instance is created and assigned with network resource, the user will have fully self-control to his networks as real machines connect to Internet themselves. Last but not least, Neutron has extension frameworks for additional network services e.g IDS, load balancing, firewall, VPN...
Besides three main components above, OpenStack also provide other ones to make our life easier.
  1. Dashboard (code name Horizon): Provide a graphical interface to access, provision and automate cloud-based resources.We can monitor and analyze resources, projects, users all of them here. This is a video demo.
  2. Identity Service (code name Keystone): This is how users are managed. Keystone allow us to create, remove users and assign services to them. Furthermore, it supports role-based management which defines users' roles, policies, and permissions for accessing resources. Moreover, Keystone is also a central directory of users mapped to the OpenStack services they can access. In term of security, Keystone supports mutil forms of authentication e.g standard username password, token-based system and AWS-style logins.
  3. Image Service(code name Glance): Glance stores and provides server images. Besides that, Glance can backup system and manage those snapshots. It make system deployment never be so easy. Glance support many image formats e.g Raw, Machine, VHD (Hyper-V), VDI (VirtualBox), qcow2 (Qemu/KVM), VMDK (VMWare), OVF (VMWare, others) etc...
That's all for today! Did you find it interesting yet? Do you incidentally have a bunch of free-to-use resources? Give this a shot. Have you ever though about being a IaaS provider which is as popular as Amazon AWS, Microsoft Azure, RackSpace, DigitalOcean etc...? Cheap and high availability IaaS! Why not? Now, cloud is for everyone. Every feedbacks and comments are warmly welcome.

Published

18 March 2014

Tags