OpenStack is an open-source cloud operating system that is able to control large pools of storage, networking, and computing resources available in a data center. All these resources are managed through a dashboard with powerful administrative controls, and users are empowered to provision resources through a web interface.
OpenStack is a joint initiative released in July 2010 by Rackspace, one of the biggest play- ers in cloud computing, and NASA, which needs no introduction. The project was intended to help different organizations offer cloud computing services that run on standard hard- ware. The early code for the software was a combination of both NASA’s Nebula cloud computing platform and Rackspace’s Cloud Files platform. Nebula was designed to provide Infrastructure as a Service (IaaS) features, while the Cloud Files platform is predominantly storage oriented, and both come together to provide both services, which results in the foun- dation of the OpenStack system we have today.
The project, just like the Open Compute Project, aims to provide a robust cloud computing platform for both private and public clouds that is interoperable and without vendor lock-in.
However, OpenStack is predominantly an IaaS platform, so it may not fit everyone’s needs.
OpenStack itself is not a single software package. It is instead a conglomeration of smaller modules, individual projects that form the basic and advanced features that the platform provides. It is highly pluggable and can function without the other modules. This can also be a detriment because some modules will see better development than the others, but because it’s open source, whoever needs one of those modules can simply spend some resources to develop for it and then share it with the rest of the community. Such is the beauty of open source.
We will look as these smaller modules in the following sections.
Compute Module (Nova)
Nova is a cloud computing fabric controller, the main portion of an IaaS platform that controls every aspect of the system. Nova is central to OpenStack’s goal of providing cloud computing services on standard hardware because its architecture is designed to horizon- tally scale when running on standard hardware. It has no proprietary hardware or software requirements whatsoever, and it’s even backward compatible with legacy hardware systems and integrates with third-party technologies, making it easy for organizations to jump on
the cloud bandwagon without the need to retrofit existing data centers. As with all cloud platforms, it is designed to automate large pools of computing resources and work with a variety of virtualization technologies as well with bare metal machines (those with no OS) and high-performance computing (HPC) configurations, or, simply, supercomputers.
OpenStack Compute is often deployed using one of the many supported hypervisors in a virtualized environment. Popular choices for hypervisor application would be XenServer and KVM, which are also widely recommended for most use cases for cloud implementa- tions. Hyper-V is supported for x86 to 64-bit versions of Windows servers as well as LXC for Linux.
Object Storage (Swift)
Swift is OpenStack’s object storage facility, a redundant storage system. Data is written in multiple disk drives that are spread across the data center to ensure that they do not become unavailable at the same time, while the software ensures that that replication hap- pens and data integrity is maintained across the storage cluster. If more storage is required, new servers have to simply be added since storage clusters scale horizontally.
In the event of a hard drive failure, OpenStack simply re-creates the contents of that failed drive into new locations within the cluster using backed-up or replicated data avail- able from other active nodes. OpenStack uses software logic to ensure distributed replica- tion across the cluster and different devices, and as such inexpensive standard hard drives and servers can be used.
Block Storage (Cinder)
Cinder is the module that allows OpenStack to provide persistent block-level storage devices to be used with OpenStack’s compute instances. Cinder manages the creation of block devices and the processes of attaching and detaching them to and from the servers.
These block volumes become integrated to Nova and appear on the dashboard, allowing users to provision and manage their own storage needs.
Block storage is essential for performance-dependent applications such as expandable file systems and database applications or to simply provide servers with access to raw block- level storage. Backup management is done through snapshots that can be used to restore or create new block storage volumes, a powerful functionality for backing up data on block storage volumes.
This is compatible with many storage platforms, including IBM storage, Linux LIO, Nexenta, Cloudbyte, Ceph, SolidFire, HP StoreVirtual and StoreServ 3Par families, local Linux server storage, and many more.
Networking (Neuron)
Neuron is OpenStack’s network orchestration module, a system for managing networks and IP addresses. This is a relatively new addition to OpenStack and the first functioning software-defined networking (SDN) northbound API that allows an SDN controller to interface with higher-level management and orchestration systems. Neuron enables a high degree of cloud automation, multitenancy, massive scale, and, hence, added flexibility.
The Cloud Infrastructure 83
Neuron provides different networking models for a variety of applications, including flat networks or VLANs for separating traffic and servers. Its IP address management facil- ity allows for dedicated static IP addresses or DHCP, and the use of floating IP addresses allows the rerouting of traffic to any computing resource, thereby allowing for the redirect- ing of traffic in the case of failure or required maintenance. Users will be able to provision their own networks, control all traffic, and have freedom in connecting their servers and other computing resources.
Dashboard (Horizon)
Horizon is the front-end interface that gives administrators and users a graphical interface to access in order to provision, set up, and automate cloud computing resources. The design of the interface allows for third-party products such as billing and other management and monitoring tools to be integrated into the interface. It is also customizable to reflect the brand of the service provider using it.
The dashboard is just the graphical way of interacting with OpenStack resources; however, developers are also able to do this through the native OpenStack API or the EC2 compatibility API. Figure 3.4 shows the Horizon dashboard used with Ubuntu.
F I G U R E 3 . 4 Ubuntu Horizon dashboard
Other Modules
This sums up the major modules of OpenStack. There are still other modules that add value and ensure that OpenStack becomes a very enticing option for cloud computing providers.
They are as follows:
Identity Service (Keystone) The central directory and authentication system.
Image Service (Glance) The module for registration and delivery for server and disk images, a part of OpenStack’s backup system.
Telemetry (Ceilometer) A single point of contact for billing and metering systems across current and future OpenStack components.
Orchestration (Heat) A template-based system for orchestrating multiple composite cloud applications.