Architectures, functions, and interactions
This content is part # of # in the series: Discover OpenStack
This content is part of the series:Discover OpenStack
Stay tuned for additional content in this series.
This is an overview of OpenStack. If you aren't familiar with it, OpenStack is a collection of open source technology projects cosponsored by a broad group of industry leaders (see Related topics). It provides an operating platform for orchestrating clouds on a massive scale. Its technology is hypervisor independent and includes software to provision virtual machines (VMs) on standard hardware. In addition, it offers a distributed object store and a wide range of optional functionality, including a network controller, authentication manager, management dashboard, and block storage.
Initiated by Rackspace Cloud and the National Aeronautics and Space Administration (NASA), OpenStack is currently the most popular consortium-led Infrastructure as a Service software stack in the world (see Related topics). Since its founding, it has seen wide industry endorsement and now numbers more than 100 supporters, including many of the industry's largest organizations. Current platinum members include IBM, AT&T, Canonical, HP, Nebula, Rackspace, Red Hat, and SUSE.
Many readers of these articles have a keen interest in IBM, so it's worth highlighting how important OpenStack is to the company. IBM announced its open cloud architecture in March 2013 and committed to basing all of its cloud offerings on OpenStack, starting with IBM SmartCloud® Orchestrator. Prior to this announcement, IBM had actively invested in integrating its products with OpenStack and made significant contributions to the OpenStack community, helping the software meet enterprise and cloud service provider requirements.
IBM chose OpenStack not only for its architecture but also for its development community, open governance, and growing ecosystem of providers and plug-ins. As part of the community, IBM has provided numerous direct contributions. Separately, many other IBM cloud-based activities indirectly support OpenStack.
For example, IBM's open cloud architecture incorporates the OASIS Topology and Orchestration Specification for Cloud Applications (TOSCA) standard. TOSCA is an open standard being developed by IBM, SAP, HP, Rackspace, and many others. To maximize its impact, many of these same companies are also collaborating on implementing support for OASIS TOSCA template descriptions in the OpenStack Heat project.
Another area of involvement is its Platinum sponsorship of OpenDaylight, a collaborative project under the Linux® Foundation dedicated to creating an open and transparent approach to Software-Defined Networking (SDN). It is the largest open source SDN project to date, with broad industry endorsement. The project has a mission to create an open SDN platform based on industry standards. For example, the OpenFlow controller that the members of the OpenDaylight Project created is planned as a plug-in to the OpenStack Networking service.
IBM cloud products offer an open source Platform as a Service platform on which developers can create cloud-centric applications that rely on hosted services, including PostgreSQL, MySQL, Redis, blob storage, elastic caching, sample location services, an SMS service, simple social service, and RabbitMQ.
It is easiest to understand the OpenStack project with some historical perspective on how it has evolved.
OpenStack was initiated by Rackspace Cloud and NASA in 2010, who integrated code from NASA's Nebula platform as well as Rackspace's Cloud Files platform. The first core modules were called Compute and Object Storage but are more commonly referred to by their project names, Nova and Swift, respectively.
One of the most exciting things about OpenStack is that it continues to grow dramatically and quickly, often with two or more releases per year. As a result, much of the information publicly available on the technology is out of date, and it is important to keep straight which versions any documentation refers to.
OpenStack uses a
YYYY.N notation to designate its releases
based on both the year of release and the major version of the release
that year. For example, the first release of 2011 (Bexar) had the 2011.1
version number, while the next release (Cactus) was labelled 2011.2. Minor
releases extend the dot notation further (for example, 2011.3.1).
Developers often refer to the release by its codename which is ordered alphabetically (see Table 1). Austin was the first major release, followed by Bexar, Cactus, and Diablo. These codenames are chosen by popular vote at the OpenStack design summits and generally identify geographical entities near the location of the summit.
Table 1. OpenStack releases
|Release name||Release number||Date|
Each release has incorporated new functionality, added documentation, and improved the ease of deployment in an incremental fashion, but the roadmap has also enlarged the number of projects that form part of the initiative.
As mentioned, the Austin release consisted only of two core projects: OpenStack Compute (Nova) and OpenStack Object Storage (Swift). Bexar complemented these with an Image Service (Glance) that in many ways forms the intersection of compute and storage. The images represent template VMs that are stored in OpenStack to rapidly launch compute instances on demand.
The Essex release added two more core projects. OpenStack Identity (Keystone) isolated the user management elements that Nova had previously handled, and an OpenStack Dashboard (Horizon) was introduced to standardize and simplify the user interface (UI), both for individual tenants and the OpenStack administrators.
Folsom increased the count two further notches. The team decided to split off the networking components (also previously included in Nova) into a separate project, initially called Quantum and later renamed Neutron. At the same time, a separate team developed an OpenStack Block Storage component which was branded Cinder.
As of the Grizzly release, OpenStack consists of seven core projects:
- Compute (Nova)
- Networking (Neutron/Quantum)
- Identity Management (Keystone)
- Object Storage (Swift)
- Block Storage (Cinder)
- Image Service (Glance)
- User Interface Dashboard (Horizon)
OpenStack Compute (Nova)
OpenStack Compute (Nova) controls the cloud computing fabric (the core component of an infrastructure service). Written in Python, it creates an abstraction layer for virtualizing commodity server resources such as CPU, RAM, network adapters, and hard drives, with functions to improve utilization and automation.
Its live VM management has functions to launch, resize, suspend, stop, and reboot through integration with a set of supported hypervisors. There is also a mechanism to cache VM images on compute nodes for faster provisioning. When the images are running, it is possible to store and manage files programmatically through an application programming interface (API).
OpenStack Networking (Neutron/Quantum)
Networking (Neutron), formerly called Quantum, includes the capability to manage LANs with capabilities for virtual LAN (VLAN), Dynamic Host Configuration Protocol, and Internet Protocol version 6. Users can define networks, subnets, and routers to configure their internal topology, and then allocate IP addresses and VLANs to these networks. Floating IP addresses allow users to assign (and reassign) fixed external IP addresses to the VMs.
OpenStack Identity Management (Keystone)
OpenStack Identity Management (Keystone) manages a directory of users as well as a catalog of OpenStack services they can access. Its purpose is to expose a central authentication mechanism across all OpenStack components. Rather than providing the authentication itself, Keystone can integrate with a variety of other directory services, such as Pluggable Authentication Module, Lightweight Directory Access Protocol (LDAP), or OAuth. Through these plug-ins, it's able to facilitate multiple forms of authentication ranging from simple user name-password credentials to sophisticated multifactor systems.
OpenStack Identity makes it possible for administrators to configure centralized policies that apply across users and systems. They can create projects and users, assign them to administrative domains, define role-based resource permissions, and integrate with other directories like LDAP. A catalog contains a list of all of the deployed services in a single registry. Users and tools can retrieve a list of the services they can access either through programmatic requests or by logging in to the dashboard which they can also use to create resources and assign them to their account.
OpenStack Object Storage (Swift)
OpenStack Object Storage (Swift) is based on the Rackspace Cloud Files product and is a redundant storage system ideal for scale-out storage. OpenStack ensures data replication and distribution across the devices in its pool, so users can employ commodity hard disks and servers rather than more expensive equipment. In the event of a component failure, OpenStack is able to replenish the content from other active systems to new cluster members. The architecture also enables horizontal scalability, because it's easy to extend storage clusters with additional servers, as required.
Swift is a distributed storage system primarily for static data, such as VM images, backups, and archives. The software writes files and other objects to a set of disk drives that can be distributed on multiple servers around one or more data centers, ensuring data replication and integrity across the cluster.
OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder) manages block-level storage that compute instances use. Block storage lends itself well to scenarios with strict performance constraints, such as databases and file systems.
The most common storage to use with Cinder is Linux server storage, but plug-ins exist for other platforms, as well, including Ceph, NetApp, Nexenta, and SolidFire. Cloud users can manage their storage requirements through the dashboard. The system provides interfaces to create, attach, and detach block devices from/to servers. It is also possible to back up Cinder volumes by using the snapshot capability.
OpenStack Image Service (Glance)
OpenStack Image Service (Glance) provides support for VM images, specifically the system disks to be used in launching VM instances. In addition to discovery, registration, and activation services, it has capabilities for snapshots and backups.
Glance images can function as templates to roll out new servers quickly and consistently. The API server exposes a Representational State Transfer (REST)-ful interface with which users can list and fetch virtual disk images that are assigned to an extensible set of back-end stores, including OpenStack Object Storage.
Users can provide both private and public images to the service in a variety of formats, including VHD (Microsoft(® Hyper-V®), VDI (VirtualBox), VMDK (VMware), qcow2 (Qemu/Kernel-based Virtual Machine), and Open Virtualization Format. Functions exist to register new virtual disk images, query for information on publicly available disk images, and stream virtual disk images.
A typical OpenStack implementation will integrate most if not all of projects.
Figure 1. OpenStack architecture
Three elements interact with all the components in the system. Horizon is the graphical UI that administrators can most easily use to manage all the projects. Keystone handles the management of authorized users, and Neutron defines the networks that provide connectivity between the components.
Nova can arguably be considered the core OpenStack. It handles the orchestration of workloads. Its compute instances usually require some form of persistent storage which can be either block-based (Cinder) or object-based (Swift). Nova also requires an image to launch an instance. Glance handles this request, whereby it can optionally use Swift as its storage back end.
The OpenStack architecture had endeavored to make each project as independent as possible which gives users the option to deploy only a subset of the functionality and integrate it with other systems and technologies that offer similar or complementary functions. Nonetheless, this independence shouldn't mask the fact that a fully functional private cloud is likely to require virtually all the functionality to operate smoothly, and the elements will need to be tightly integrated.
In understanding OpenStack, it's important to keep in mind that the system is still a work in progress. It is possible to implement it in its current form, but a lot more is coming down the line. For example, the Havana release contained two new projects that many have been looking forward to for some time: OpenStack Metering (Ceilometer) and OpenStack Orchestration (Heat).
Ceilometer is a mechanism for centralized collection of metering and monitoring data. It delivers a single point of contact for billing systems to obtain all the usage information they need across the suite of OpenStack components. It supports an extensible set of counters that are both traceable and auditable.
Heat is a template-based orchestration engine for OpenStack. It allows developers to define application deployment patterns that orchestrate composite cloud applications i a RESTful API. The templates can accommodate most OpenStack resource types (for example, Nova instances and floating IP address ranges, Cinder volumes, Keystone users). There are also capabilities for advanced functionality, including high availability, auto-scaling, and nested stacks.
- Check out the OpenStack documentation.
- Keep up with OpenStack on Twitter.
- Read about IBM's open cloud architecture.
- Learn more about the TOSCA standard.
- Learn more about the Linux Foundation's OpenDaylight project.
- Try OpenStack for yourself.
- Learn more about IBM SmartCloud Orchestrator.
- Download PostreSQL for your environment.
- Download MySQL for your environment.
- Download Redis.
- Download RabbitMQ.