The Complete Magazine on Open Source

Introducing the Open Source IaaS Platform

, / 459 0

IAAS_Cloud Computing_68699478

In its most basic form, Infrastructure as a Service (IaaS) includes computers – physical or virtual machines –and other computer related services. IaaS distances end users from the task and expense of setting up computer systems and maintaining them, so that they can concentrate on their special fields of interest.

IaaS, which stands for Infrastructure as a Service, is a cloud computing platform that provides computing services over the Internet.

What is IaaS?
In an IaaS model, the provider takes care of hosting the servers, the storage, applications and any other required hardware, all on the provider’s premises. This infrastructure is highly scalable and provides business resiliency. Examples of IaaS service providers are Amazon Web Services (AWS), Microsoft Azure, Google Compute Engine (GCE), OpenStack, Eucalyptus, CloudStack, etc.

OpenStack is open source IaaS software stack that is mainly used for deploying or managing large groups of virtual private servers in a data centre.
The goals of the OpenStack initiative are to support interoperability between cloud services and to allow businesses to build cloud services within their own data centres.
It has a modular architecture with the following components:

  • OpenStack Identity (Keystone)
  • OpenStack Dashboard (Horizon)
  • OpenStack Compute (Nova) including the use of multiple hypervisor drivers
  • OpenStack Object Storage (Swift) or another object storage solution
  • OpenStack Block Storage (Cinder)
  • OpenStack Image Service (Glance)
  • OpenStack Networking (Neutron) or Legacy Networking (Nova-network)

NASA and Rackspace jointly started this project with a few components, and it has now grown to a mammoth scale. OpenStack enables users to create and offer cloud computing services. It is entirely a community-driven project, and there is a new release every six months. OpenStack consists of many projects that constitute various functionalities like compute, storage, network, security/authentication, automation and user interface. The current stable release is called Juno. The latest release also includes data processing capabilities. The major components of OpenStack in the latest release are: Nova, which is responsible for compute; Neutron, which is responsible for networking; Swift, for providing object storage; and Cinder, which takes care of providing block storage to virtual instances. Keystone ensures identity/authentication, Glance provides storage space to hold images and VM templates, and Horizon provides a decent dashboard to manage all resources for admins and users. Ceilometer provides the resource utilisation stats and this, in turn, is used in billing. The project Heat provides automation/orchestration, Trove enables database services, and project Sahara provides the capability for data processing.
Apart from these components, a few more are in development – the Ironic project that will provide the capability to do bare-metal provisioning, Manila which will provide shared file systems, and a few more. Refer to for more information on these and other projects.

Open Stack logo

Figure 1: Openstack

Eucalyptus is another open source project for providing cloud infrastructure as a service. Eucalyptus is an acronym for ‘Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems’. It was started as a research project in the computer science department of the University of California, Santa Barbara. Though this product has been commercialised, the open source version is still maintained. The current release is Eucalyptus 4.0. It is the ideal choice for hosting IaaS due to its ease of use and AWS API compatibility. Eucalyptus consists of six distinct components, which are grouped into three separate levels, i.e., the cloud level, the cluster level and node level. All these components interact with each other using SOAP messaging with WS-security.
There are two components in the cloud level: cloud controller (CLC) and scalable object storage (SOS). CLC is responsible for authentication, accounting, reporting and quota management. SOS resembles AWS S3 (Simple Storage Service) and provides basic storage implementation known as Walrus. The cluster level consists of three components. The cluster controller (CC) is the front-end for the cluster within a Eucalyptus cloud and it communicates with other components. The CC manages virtual machine execution and SLAs set per cluster. The storage controller (SC) equivalent to AWS is elastic block store (EBS). SC is responsible for providing the block storage to virtual machines, and it interfaces with storage systems including local, NFS, iSCSI and SAN. The third component in the cluster level is VMware broker and this is an optional component. VMware broker mediates interactions between the CC and ESX/ESXi/vcentre servers. The last level, i.e., the node level, consists of the node controller (NC), which is responsible for hosting virtual machine instances and actual workhorses for the cloud in providing IaaS. Refer to for more information.

CloudStack is open source software designed to deploy and manage large networks of virtual machines, as a highly available, highly scalable IaaS cloud computing platform. CloudStack development was started by Later, in 2010, released most of CloudStack as free software under GNU GPLv3. Citrix purchased in 2011 and, later, Citrix donated CloudStack to the Apache Software Foundation (ASF). CloudStack supports most of the hypervisors: VMware ESXi, KVM, XenServer, Oracle VM and Hyper-V. It provides a rich, intuitive Web based user interface, command line utilities and full-featured RESTful APIs for managing the compute, networking, storage, and software entities in the cloud. The current stable release, Apache CloudStack 4.4.2, allows users to build feature-rich public and private cloud environments.
The key features of CloudStack are:

  • One cloud, multiple hypervisors
  • Massively scalable infrastructure management
  • Easy-to-use Web interface
  • Robust RESTful APIs

The CloudStack implementation consists of two major parts: the management server that contains the core logic, and the server resources that contain the translation layer to interact with the hardware. The management server manages the resources provisioned within the cloud such as the hosts, storage devices and IP address. In the CloudStack cloud, typically, there will be one or more zones managed by each management server.
CloudStack has the hierarchy of Zone –> Pod –> Cluster –> Host, and comes with primary and secondary storage. A zone is equivalent to a single data centre, consisting of one or more pods and secondary storage. A pod usually represents one rack of hardware that includes a Layer-2 switch and one or more clusters. A cluster consists of one or more hosts installed with a hypervisor and a primary storage that provides block storage. Primary storage is associated with a cluster and provides the disk volumes for VMs running in that cluster. Secondary storage is associated with zones and hosts templates, ISO images and disk volume snapshots. In addition, CloudStack has a few system-VMs that take care of most of the core logic, i.e., the storage and networking pieces.
You can refer to for further reading.

Advantages of IaaS and open source cloud platforms
IaaS, as you can infer, is a perfect service offering if you are looking for the following features:

  • No investment in hardware
  • Scalability
  • Flexible style costs
  • Physical security of data centre locations
  • No single point of failure

Infrastructure as a Service is a form of cloud computing that provides the user with computer services over the Internet by the use of hypervisors and virtual machines. IaaS is one of the three main cloud computing services, the others being Software as a Service (SaaS) and Platform as a Service (PaaS). IaaS services are hosted by third party providers, and the end users are billed for services on a pay-as-you-use basis. An important aspect of IaaS services is that the end user need not worry about administrative tasks such as dynamic scaling, software updates, desktop virtualisation, etc. The pay-per-use model is ideal for effecting huge cost savings. A word of caution though—users should check their bills carefully to avoid paying for services not availed of.