What is Cloud Computing?
In general Cloud computing means storing and accessing data, programs services over the Internet instead of your local computer’s hard drive
The services can be
A Complete Infrastructure, Lets say your office wants to introduce a new department as an experiment, for that the IT section of office has to create a whole new infrastructure that might include buying new computers and network equipments such as switches and routers and what not, The simple way can be to deploy a virtualized infrastructure, Rather than actually purchasing the equipment, they can create a virtual infrastructure on a single server hence saving the cost of buy brand new stuff.
Storage, A good example of this is Dropbox, Google drive and many others
Office Automation Software like Google DOCs and Microsoft Office 360
Cloud Computing Services
IaaS (Infrastructure as a Service)
IaaS means to put a complete infrastructure on the Internet e.g.Virtual Machines, Servers, Storage, Load Balancers, Networks etc, We don’t actually need to buy actual hardware, Service can be acquired when required and then later discarded hence IaaS put the all of our infrastructure into a (virtually) single PC.
SaaS (Software as a Service)
Email is one of the most popular examples of SaaS, other can be Virtual Desktops for example those provided for Android Mobiles, I don’t know any for iPhone, Play heavy graphics card hungry Games on your cheap laptop :p and many Communication services.
PaaS (Plateform as a Service)
Certain companies provide us a complete readymade virtualized platform for our need such as for Execution Runtime, Web Servers, Database, Development Tools, one such example currently in my mind is godaddy.com that provide PaaS
What is Openstack
Openstack is a Free and opensource Cloud Software Stack, Software stack because its Modular made up of many components (Major components will be discuss later) and every component is responsible for a specific task. For its deployment we don’t actually need special Servers, we can deploy it on our Home PC or we can combine multiple PCs to make an Openstack cluster.
Openstack provides us with the best, Free and opensource alternative to closed and expensive cloud environment hence reducing the risks of lock-in associated with proprietary platforms.
History of Openstack
It was developed by NASA which provided the compute Module Named Nova (even by name you can guess its by NASA) which at that time had most of the component put inside in Nova for example Networking and storage too I guess and Rackspace which were working on swift and glance (described later), after their marriage the first version was release in 2010, It has a release cycle of every six months. Current stable version Icehouse and the time I am writing this tutorial the Juno RC1 has been released.
We can command different components/services of Openstack through their APIs. All service talk to each other through RabbitMQ queuing system – very important component, A service puts its message on the queue and the concern service then pulls the message out of the queue and performs its action and then puts the result back on the queue and then issues a notification to the service.
All Services authenticate through a common source called keystone, openstack’s main Authentication and Authorization module.
Almost forgot, Scheduler, The component for resource allocation, Its has the information of all the resources and when a request is made for a certain resource, It’s the component that allocates it.
Major Components of Openstack
OpenStack has a modular architecture with various code names for its components:
- Nova (Compute )
- Swift (Object Storage )
- Cinder (Block Storage)
- Glance (Image Service)
- Neutron (Networking)
- Horizon (Dashboard )
- Ceilometer (Telemetry)
- Heat (Orchestration)
Horizon (Dashboard )
Horizon is the Dashboard to Openstack, your eyes and ears. It provides a web based user interface to OpenStack services including Nova, Swift, Keystone etc.
Nova compute or the king service provides a platform on which we are going to run our guest machines; It’s the virtual machine provisioning and management module that defines drivers that interact with underlying virtualization. It provides a Control plane for an underlying hypervisors. Each hypervisor requires a separate Nova Instance. Nova supports almost all hypervisors known to man.
Neutron, the networking component which was formally called Quantum. This component provides the software defined Networking Stack for Openstack. It Provides networking as a service. It gives the cloud tenants an API to build rich networking topologies, and configure advanced network policies in the cloud. It enables innovation plugins (open and closed source) that introduce advanced network capabilities which let anyone build advanced network services (open and closed source) that plug into Openstack tenant networks means that you can create advance managed switches and routers. You can even create an intelligent switch from a PC (Yes you can use it as a standalone component) and use it to replace your managed switch or atleast make it act as a backup Switch.
The Horizon (explained later) has a GUI support for
- Neutron L2 and L3 network and subnet creation/deletion
- Booting VMs on specific Neutron networks.
Keystone (Identity Service)
It’s the main authentication and authorization service as I heard from someone, it’s the a who are you and what do you want service. It authorizes
Keystone uses tokens for authorization and maintains Session state
Glance (Image Service)
In simple words glance is the Image Registry, it stores and Manage our guest (VM) images, Disk Images, snap shots etc. It also contains prebuilt VM templates so that you can try it on the fly. Instances are booted from our glance image registry. User can create custom images and upload them to Glance later reuse. A feature of Glance is to store images remotely so to save local disk space.
Swift (Object Storage)
Swift Offers cloud storage software, Look at it as Dropbox or Google drive, as they are not attached to servers, they are individual addressable objects. It’s built for scale and optimized for durability, availability, and concurrency across the entire data set. Swift is ideal for storing unstructured data that can grow without bound. Swift provides redundancy checksum for files, Files are stored as segments and a manifest file tracks them.
Cinder (Block Storage)
Cinder is also one of the storage modules of Openstack; Think of it as an external hard drive or like a USB device. It has the performance characteristics of a Hard drive but much slower then Swift and has low latency. Block Volume are created in swift and attached to running Volumes for which you want to attach an extra partition or for copying data to it. It survives the termination of an Instance. It is used to keep persistence storage. Cinder Images are mostly stored on our shared storage environment for readily availability. These Images can be clones and snapshot which can be turned in to bootable images. Its similar to Amazon Elastic block Storage.
It creates a human and machine-accessible service for managing the entire lifecycle of infrastructure and applications within Openstack clouds. It contains human readable templates with simple instruction that is read by the Heat Engine. Heat along with ceilometer (explained below) can create an auto-scaling the cloud.
This module is responsible for metering Information. It can be used generate bills and based on the statistics of usage. Its API can be used with external billing systems. Administrators can create certain alarms that are triggered based on performance statistics.