OpenStack is a free and open-source cloud operating system written mainly in Python. It gives enterprises and service providers tools to build and manage cloud computing platforms for public and private clouds. OpenStack was developed in 2010 as a joint project of Rackspace Hosting and NASA. Now it is managed by a non-profit organization - OpenStack Foundation and is used by some of the largest software development and hosting companies in the world.
OpenStack is primarily deployed as an infrastructure as a service (IaaS) solution. This cloud computing platform controls large pools of processing, storage, and networking resources throughout a datacenter. Developers that build cloud applications, administrators and users can manage/provision resources via a RESTful API, a web-based dashboard, or command-line tools. Additionally, OpenStack APIs are compatible with Amazon EC2 and Amazon S3, so AWS client apps can be easily utilized with OpenStack.
OpenStack’s architecture was developed to provide users with flexibility in cloud design. Virtual machines and other instances are deployed to handle different tasks for cloud management on the fly. OpenStack works efficiently with both widely available virtualization technologies and high-performance computing configurations. One of the main advantages is availability of horizontal scaling for concurrent tasks.
What are the components of OpenStack?
OpenStack comprises many different moving parts that can be added or removed depending on the project needs. Several components are key to OpenStack functionality and are distributed as a part of system’s core.
- Nova is a cloud computing fabric controller used for deploying and managing pools of computer resources. This computing engine is written in Python and uses SQLAlchemy for database access and Eventlet for concurrent programming.
- Swift is a distributed storage system for static data. It provides cost effective, scale-out redundant storage platform. OpenStack uses software logic to ensure data replication and distribution across different devices. Swift can be integrated directly into apps or used for backup, archiving and data retention.
- Cinder is a block storage component that manages the creation, attaching and detaching of the block devices to servers. OpenStack compute instances can use persistent block-level storage devices with high data access speed, better performance and integration with enterprise storage platforms (Nexenta, SolidFire, NetApp, etc.).
- Neutron is a pluggable, scalable and API-driven system that manages networks and IP addresses in OpenStack. Neutron supports fast and efficient communication between each of the components of an OpenStack deployment and makes sure that network will not be the limiting factor in a cloud deployment.
- Horizon is the only graphical interface to OpenStack. It allows administrators and users to control, provision and automate cloud-based resources. As a canonical implementation of OpenStack’s Dashboard, Horizon ships with three central dashboards, a “User Dashboard”, a “System Dashboard”, and a “Settings” dashboard; as well as with a set of API abstractions to provide a stable set of reusable methods for developers.
- Keystone provides identity services for OpenStack. Basically it is a central directory of users mapped to the OpenStack services they have permission to use. Keystone supports multiple forms of authentication (including standard username and password credentials, token-based systems, AWS-style logins, etc.) and can integrate with existing backend directory services like LDAP.
- Glance provides image services, namely, discovery, registration and delivery services for disk and server images. Glance also allows these images to be used as templates when deploying new virtual machine instances.
- Ceilometer provides telemetry services. It aggregates usage and performance data across the services used in cloud. Ceilometer offers a Single Point Of Contact for billing systems to establish customer billing for individual users of the cloud.
- Heat is the orchestration component of OpenStack. This template-driven engine allows developers to orchestrate multiple cloud applications using templates and to describe and automate the deployment of infrastructure.
- Trove is a database-as-a-service that allows users to provision and manage multiple relational and non-relational database engines. They can easily use the features of a relational database without the need to handle complex administrative tasks.
OpenStack is an open and scalable cloud operating system for building private and public clouds. It manages large pools of compute, storage, and networking resources throughout a datacenter and provides tools to easily provision these resources. To learn more about this platform visit OpenStack website.