OpenStack made its debut in 2010—aimed to provide an open-source cloud computing platform for public and private clouds. Learn more about this Infrastructure as a Service (IaaS) platform and see how it's evolving the landscape of cloud.
During the summer of 2010, RackSpace Hosting and NASA teamed up to build the OpenStack platform, whose goal was to provide cloud computing services on commodity hardware. The OpenStack components span the entire cloud computing stack, ranging from the typical compute, storage, and network pieces to architectural elements such as image, orchestration, and metrics—all of the basic building blocks of a cloud. With strong corporate sponsorship and a thriving development ecosystem, OpenStack is on its way to being to the cloud world what Linux is to the operating system world.
OpenStack is a distributed scale-out set of services that interact with one another to provide the foundational elements of a cloud. OpenStack consists of a few "core" sub-projects:
- Nova (compute)—Provides the core compute capabilities that interact with the various hypervisors and cloud managers; community support exists for libvirt (KVM), Xen, vCenter and Hyper-V and PowerVM.
- Glance (image)—Provides a repository for image metadata. The image's actual bytes can live in a number of storage containers, including the OpenStack object storage (i.e., swift).
- Cinder (block storage)—Provides block-level storage devices to OpenStack's virtual machines.
- Keystone (identity)—Provides the centralized user authentication services to the OpenStack platform.
- Neutron (network)—Provides network management capabilities to OpenStack's virtual machines.
- Swift (object storage)—Provides a scalable and redundant storage system to OpenStack (e.g., for storing disk images to be deployed via glance).
- Horizon (dashboard)—Provides a reference implementation of an OpenStack user interface.
- Heat (orchestration)—Provides the ability to orchestrate a composite cloud application via templates.
- Ceilometer (metrics)—Provides the ability to collect metric data that can be used for billing and chargeback purposes.
Each of these components runs as a set of operating system services on the OpenStack "controller node"—and multiple instances of each service may run on separate controller nodes for availability and scalability reasons. All of these services communicate via an AMQP-based message queue (e.g., RabbitMQ or Apache Qpid), providing a solid hub-and-spoke messaging architecture at the center of OpenStack.
Without going into all of the gory details, essentially OpenStack allows you to deploy a virtual image, which results in a virtual machine being deployed on a hypervisor in the cloud. From there, an administrator can perform virtual machine life cycle operations (start, stop, resize, migrate, delete, etc.) on the virtual machine. You can also employ multi-tenancy, chargeback, quotas, etc. The overall list of features and function goes on and on—visit www.openstack.org for more details.
The OpenStack project cuts roughly two releases every year—each release having a codename corresponding to a letter from the alphabet (i.e., Grizzly,
One of OpenStack's most essential pieces is the enormous ecosystem surrounding the technology. As a flourishing open-source project, a large number of corporations, developers, testers, technical writers, and evangelists are all feverishly working to improve and promote OpenStack and its various sub-projects (e.g., nova, glance, cinder, etc.) in the cloud world. This ultimately means that there's always a wealth of knowledge and new technology out there, creating a forever vibrant and evolving future for OpenStack. For example, many IRC channels are full of people willing to help answer questions—whether it's about configuring OpenStack or contributing new code to OpenStack. The community even holds twice-per-year summits across the globe—an event at which various folks from the OpenStack community continually evaluate the current and future states of OpenStack.
Check out the plethora of information available on www.openstack.org for more details!
All right, now you know enough about OpenStack to be dangerous. So how do you actually start trying it? Well, you're in luck; there's another open-source project called DevStack. DevStack is a project that allows you to, in just 4–5 simple steps, have a fully functional OpenStack deployment at your fingertips. All you need is an Ubuntu- or a Fedora-based operating system installation (a virtual machine will also suffice) and—snap!—you can start setting up DevStack by following the instructions at http://devstack.org.
Once DevStack has been configured, you will be able to use the Horizon console to practice deploying images, starting and stopping virtual machines, etc. You will also be able to experiment with the OpenStack command line interfaces (CLIs) and RESTful web services (however, do not try to use this for any production deployments).
While there's a lot more to read and learn about OpenStack, this will certainly get your feet wet and introduce you to the basics. So go—"stack away"—and practice setting up your first DevStack cloud!