OpenStack's history, community, and 7 of its core projects
In this post, I discuss what OpenStack is by examining its history, community, and a few of the core projects that are most frequently installed. I'm not diving into things too deeply as the intent is to do more in-depth articles on each of the services (projects) mentioned here in the future.
The simplest way to describe OpenStack is that it is an Infrastructure as a Service (IaaS) offering that's used for both public and private clouds to manage compute resources. In this article, I review the history behind OpenStack and review some of the larger projects (services) that make it up.
[ You might also enjoy: Deploying a virtual TripleO standalone OpenStack system ]
OpenStack officially came into being in July 2010 when NASA's compute project platform, now known as Nova, was combined with Rackspace's Cloud Files platform, which became Swift when open-sourced. In October 2010, OpenStack's first official version containing only these two projects was presented as the Austin release. In February 2011, the second OpenStack incarnation, Bexar (pronounced Bear), was released and included the image project Glance.
With the fifth release, Essex, in April 2012, more projects began to be added to OpenStack, starting with Horizon (Dashboard) and Keystone (Identity). Cinder (Block Storage) and Quantum (Networking), which later was renamed to Neutron, were added in the next release, with more projects added in the Havana release and beyond until the maximum number of projects (44) were included in Stein.
The services (projects)
While Swift and Nova were the first projects within OpenStack, this article explores the various services in the order that you manually install them. I also discuss both block and object storage. Covering the topics in this order helps to clarify how the services all work together.
The following diagram visualizes how these projects fit together in the larger picture of OpenStack. For example, the diagram shows how the Dashboard (Horizon) provides the user interface (UI) for the other services shown except for the Identity (Keystone) service. The Identity service provides the authentication for the Dashboard and other services.
The first service to be deployed is the Identity service, installed on the Controller node(s). The Identity service provides a single point of integration for managing authentication, as mentioned, and also authorization and the service catalog. The service catalog lists installed services within the OpenStack deployment and the endpoint locations for the public, internal, and admin APIs.
The next service that you need to install is the Image (Glance) service. The Image service allows users to find, register, and retrieve images to create virtual machines (VMs). The Image service stores not only the images but the metadata information needed by users and other services. As the above image displays, the Image service can store the images locally or in different storage types such as OpenStack's Object Storage service (Swift).
The Compute service is the heart of OpenStack in many ways as it is the service that decides where your virtual machine is launched. The Compute service is also responsible for creating and maintaining Flavors (sizes of VMs) and Quotas (what resources a project and user has access to). The Compute service is installed on the Controller node(s) and the Compute nodes themselves, which provide the Hypervisors.
The Networking service is ultimately responsible for both the internal and external networking for your OpenStack deployment. When configuring your OpenStack deployment's networking layout, there are two basic options: Provider and Self-Service.
The Provider Network option is Layer 2 (Data Link) networking which then bridges virtually to physical networks for the Layer 3 (Network) routing.
The Self-Service Network options provide the same Layer 2 networking as the Provider Network and do the Layer 3 routing within OpenStack before connecting to physical networks.
The Dashboard is an optional service for OpenStack and only requires the Identity service to be installed. The Dashboard provides a frontend to the other OpenStack services allowing users to launch VMs, configure networks, etc. if they have the correct access without needing the command line or using the APIs directly.
Block Storage (Cinder)
Another optional service for OpenStack is the Block Storage service which can be used to provide, as the name implies, block storage devices for the VM or add additional space to a VM. The Block Storage service can be configured to use LVM or drivers from contributing companies to connect to their hardware.
Object Storage (Swift)
While Swift was part of the original release, Object Storage is optional and is not required to be deployed. In addition, Swift can be installed as a standalone service. The Object Storage service provides scalability and is optimized for high availability, durability, and concurrency across the data set.
[ Take this free course: Red Hat OpenStack Technical Overview. ]
As mentioned, this is a relatively high overview of what OpenStack is, how it came to be, and the most commonly installed services. My goal is to publish more detailed articles on individual services as well as how to perform tasks within OpenStack in future articles.