[OpenStack Beginner’s Guide for Ubuntu 11.04]Introduction to OpenStack and its components
Cloud computing is a computing model, where resources such as computing power, storage, network and software are abstracted and provided as services on the Internet in a remotely accessible fashion. Billing models for these services are generally similar to the ones adopted for public utilities. On-demand availability, ease of provisioning, dynamic and virtually infinite scalability are some of the key attributes of cloud computing.
An infrastructure setup using the cloud computing model is generally referred to as the “cloud”. The following are the broad categories of services available on the cloud:
- Infrastructure As A Service (IAAS)
- Platform As A Service (PAAS)
- Software As A Service (SAAS)
Amazon Web Services (AWS) is one of the major players providing IAAS. They have two popular services – Elastic Compute Cloud (EC2) and Simple Storage Service (S3). These services are available through web services.
Openstack is a stack of open source software that enterprises/service providers can use to setup and run their cloud compute and storage infrastructure. RackSpace and NASA are the key initial contributors to the stack. Rackspace contributed their “Cloud Files” platform to power the Object Storage part of the OpenStack, while NASA contributed their “Nebula” code to power the Compute part. OpenStack consortium has managed to have more than 50 members including IBM, Canonical, Dell, Citrix etc. in less than a year.
OpenStack makes its services available through Amazon EC2/S3 compatible APIs and hence the client tools written for AWS can be used with OpenStack as well.
There are 3 main service families under OpenStack
- Compute Infrastructure (Nova)
- Storage Infrastructure (Swift)
- Imaging Service (Glance)
Open Stack Compute Infrastructure ( Nova )
Nova is the underlying cloud computing fabric controller for the OpenStack cloud. All activities needed to support the life cycle of instances within the OpenStack cloud are handled by Nova. It manages all the compute resources, networking, authorization, and scalability needs of the OpenStack cloud. Nova is a management platform and does not provide any virtualization capabilities by itself; instead, it uses libvirt APIs to interact with the supported hypervisors. Nova exposes its capabilities through a web services API that is compatible with that of EC2 of Amazon Web Services.
Components of OpenStack
Nova Cloud Fabric is composed of the following major components:
- API Server ( nova-api )
- Message Queue ( rabbit-mq server )
- Compute Workers ( nova-compute )
- Network Controller ( nova-network )
- Volume Worker ( nova-volume )
- Scheduler ( nova-scheduler )
Functions and Features:
- Instance life cycle management
- Management of compute resources
- Networking and Authorization
- REST-based API
- Asynchronous eventually consistent communication
- Hypervisor agnostic : support for Xen ,XenServer, KVM, UML and Hyper-V
API Server ( nova-api )
API Server provides an interface to the outside world to interact with the cloud infrastructure. API server is the only component that outside world uses to manage the infrastructure. The management is done through web services calls using EC2 API. API Server in turns communicates with the relevant components of the cloud infrastructure through the Message Queue.
Message Queue ( Rabbit MQ Server )
OpenStack Cloud Controller communicates with other nova components such as Scheduler, Network Controller, and Volume Controller via AMQP(Advanced Message Queue Protocol). Nova uses asynchronous calls for request response, with a call-back that gets triggered once a response is received. Since asynchronous communication is used, none of the end points get stuck for long in a waiting state. This is especially true since many actions expected by the API calls such as launching an instance or uploading an image are time consuming.
Compute Worker ( nova-compute )
Compute workers deal with instance management life cycle. they receive the requests for life cycle management via the Message Queue and carry out operations. There are several Compute Workers in a typical production cloud deployment. An instance is deployed on any of the available compute worker based on the scheduling algorithm used.
Network Controller ( nova-network )
The Network Controller deals with the network configuration of host machines. It does operations like allocating IP addresses, configuring VLANs for projects, implementing security groups and configuring networks for compute nodes
Volume Workers ( nova-volume )
Volume workers are used for the management of LVM-based instance volumes. Volume Workers perform volume related functions such as creation, deletion, attaching a volume to an instance, and detaching a volume from an instance. Volumes provide a way of providing persistent storage for use by instances as the main disk attached to an instance is non-persistent and any changes to made to it are lost when the volume is detached or the instance is terminated. When a volume is detached from an instance or when an instance, to which the volume is attached, is terminated, it retains the data that was stored on it when it was attached to an instance earlier. This data can be accessed by reattaching the volume to the same instance or by attaching it to another instances.
Any valuable data that gets accumulated during the life cycle of an instance should be written to a volume, so that it can be accessed later. This typically applies to the storage needs of database servers etc.
OpenStack Storage Infrastructure ( Swift )
Swift is an object store to store a large number of objects distributed across commodity hardware. Swift has built-in redundancy and failover management and features like backing up or archiving data, serving graphics or videos. It is scalable to multiple petabytes and to billions of objects. Swift provides elasticity and flexibility of cloud based storage for your web applications.
Functions and Features
- Storing the machine images
- Working as an independent data container
- Redundancy and Failover
- Backup and Archival
- Extremely scalable
OpenStack Imaging Service ( Glance )
OpenStack Imaging Service is a lookup and retrieval system for virtual machine images. It can be configured to use any one of the following 3 storage backends:
- OpenStack Object Store to store images
- S3 storage directly
- S3 storage with Object Store as the intermediate for S3 access.
Components of OpenStack Imaging Service ( Glance )