OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a data center. These components are managed with a unique dashboard which gives administrators complete control while empowering the end users to provision resources through a web interface. We can also say that its a collection of open source software designed to perform certain functions such as creating virtual machines on the fly.
Openstack was actually founded in July 2010 with the vision to provide open source software that enables any organization to create and offer cloud computing services running on standardized hardware.
Components of OpenStack
Openstack is a collection of many different mobile parts, as it is open source cloud computing software. Any one can add additional components to openstack to optimize their openstack based cloud infrasructure and to meet their needs. However, the openstack community has collaboratively identified some key components that are part of the core of Openstack which are distributed as components of any openstack system and officially maintained by the Openstack community.
a) Nova
Nova is the primary computing engine behind OpenStack. This component allows the end user to create and manage large number of virtual servers using the machine images. It is the brain of the Cloud. OpenStack computes provisions and manages large networks of virtual machines.
b) Swift
Swift is a storage system for objects and files. It overrides the traiditional way of a referring to files by their location on a disk drive. Users can instead refer to a unique identifier referring to the file and let OpenStack decide where to store this information. This component stores and retrieves unstructured data objects through the HTTP based APIs. This makes scaling easy, as users don’t have to worry about the capacity on a single system behind the software. Due to its data replication and scale out architecture this component makes sure that data is backed up in case of failure of a machine or network connection.
c) Neutron
A networking component of Openstack which helps to ensure that each of the components of an OpenStack deployment can communicate with one another quickly and efficiently. It is a pluggable, scalable and API-driven system for managing networks which provides the networking capability for OpenStack.
d) Horizon
This component provides a web-based portal or an interface to interact with all the underlying OpenStack services. It is the only graphical interface to OpenStack. Its a Dashboard which helps system administrators take a look at what is going on in the cloud, and to manage it as needed.
e) Cinder
A block storage component which provides persistent block storage to running cloud instances or servers. The flexible architecture of Cinder makes the tasks easy for creating and managing block storage devices.
f) Keystone
This component provides a central directory of users mapped to the OpenStack services where all of the users of the OpenStack cloud are mapped against all of the services provided by the cloud which they have permission to use. It is used to provide an authentication and authorization service for other OpenStack services.
g) Ceilometer
This component monitors the usage of the Cloud services of each user and performs the billing task accordingly. It keeps a verifiable count of each user’s system usage of each of the various components of an OpenStack cloud.
h) Glance
This component stores and retrieves the virtual machine disk image. Glance allows these images to be used as Operating System templates when deploying new virtual machine instances.
i) Orchestration Heat
An orchestration component of OpenStack, which helps to manage the infrastructure needed for a cloud service to run. This component manages multiple Cloud applications through an OpenStack-native REST API and a CloudFormation-compatible Query API. It allows users to store the requirements of a cloud application in a file that defines what resources are necessary for that particular application.
j) Trove
A Database as a Service component for OpenStack . It allows users to quickly and easily utilize the features of a relational database without the burden of handling complex administrative tasks such as deployment, configuration, patching, backups, restores, and monitoring.