What is OpenStack and so what?
By Mikko Ala-Jaakkola in Cloud,Data Center,Definition,Technical,Technology
Estimated reading time: 5-10 minutes.
No prior knowledge of OpenStack is required but some basic understanding of virtualization helps.
OpenStack has been around for a while now and it has generated a lot of discussion. Yet when you ask people what they think it is, you usually get answers like “it’s a cloud”, “It’s inside a cloud” or some other buzzword diversions. In this post I will briefly explain what is the OpenStack project, what steps you need to take if you wish to use it and finally my thoughts about the project in general.
What is OpenStack?
The first thing to understand is the mission of the OpenStack project: “enable any organization to create and offer cloud computing services running on standard hardware.” In other words, with OpenStack you can create virtual machines on the fly, much like with other hardware virtualization solutions, but it is not tied to a specific vendor. If you understand this, then understanding the benefits of OpenStack becomes much easier.
OpenStack is a set of software components that work together to control pools of compute, storage, and networking resources. These resources (which make up your data center) are managed through a web-based dashboard which serves two kinds of users: Administrators who control the resources in the pool and users who provision resources to launch new virtual machines. In one sentence: OpenStack provides a cloud management infrastructure. Common misconception is that OpenStack provides the hypervisors, which is not the case. It sits above the different hypervisor technologies (Xen, VMware, KVM, Hyper-V etc.) so you can control the different hypervisors (and other data center resources!) from one place.
Components of OpenStack
OpenStack consists of 11 components which all are actually separate projects. We will not go through them all but I’ll introduce four of them so you get the picture. The components are not operating systems or something you install to a bare-metal server. We are installing software in a Linux operating system which in turn can be installed as a virtual machine or it can be in a physical server.
OpenStack Compute (codename: Nova) is the component for managing and provisioning large numbers of virtual machines. It is the primary computing engine of the Cloud.
Block Storage (Cinder)
Provides persistent block storage (similar to external hard drive) for use with virtual machine instances created with Nova. Cinder manages the creation, attaching and detaching of the block devices to servers.
Makes sure that each of the components of an OpenStack deployment can communicate with one another quickly and efficiently. Typical tasks for Neutron are VLAN management, IP addressing and firewall management.
A web-based portal to interact with all the underlying OpenStack services described above (Nova, Cinder and Neutron).
To bring it down to a level of actually doing something: Example architecture could consist of three separate Linux virtual machines / physical servers (nodes). First step is to configure networking so that you have different channels of communication (separate networks) for
- managing the OpenStack environment. This is where the different OpenStack components talk to each other.
- VM instances launched from OpenStack,
- allowing your newly created instances and services to be accessible from outside the OpenStack.
Now you can install the correct packages on your Linux machines. These packages are the different components like Nova, Neutron etc. Next step is to tell the components what resources (hypervisors, networks, storage devices etc.) they can use. In the final step you provision these resources from the dashboard to launch new virtual machine instances.
If you can’t find the time and other resources for a complete install, you can test OpenStack at trystack.org. TryStack lets you test your applications in a sandbox environment to better understand how OpenStack works and whether it is the right solution for you.
There are of course various scenarios where one might achieve substantial advantages with OpenStack. Here’s three:
- Scalable websites. More instances can be launched and on the fly when more capacity is needed and then shut down when demand declines.
- Testing environments. You need to re-create a live environment with multiple servers, then dispose of it when done.
- Super-Computing. You have a very difficult math assignment so you want to force many computers to think about different parts of the assignment at the same time.
One very cool thing about OpenStack is that it’s open source. It basically means that anyone who chooses to can access the source code, make any changes or modifications they need, and freely share these changes back out to the community. Also several big IT- vendors like HP, Dell, Cisco, IBM and Rackspace have contributed to the OpenStack project. This brings great advantages in compatibility between different providers. When the project was started, one of the founding ideas was that the only way to avoid proprietary systems and vendor lock-in is to go with open source.
The community around OpenStack is huge, which means that new features and drivers rise rapidly and bugs get fixed in reasonable time. To me, a more interesting point is to look at it from the vendor’s perspective: Very large part of the development cost is offloaded to the community. New features and integration points are constantly developed by volunteers all around the world.
I see OpenStack as a great tool for startups, small businesses and research organizations to scale their computing capacity and easily test new ideas. It is a solid option for organizations that can’t afford large investments in infrastructure because it allows you to use existing hardware, even from different vendors.
We have already seen some larger enterprises moving towards OpenStack but I think there are still some issues before enterprises can fully adopt the technology. One of them is the reason I wrote this post: After five years, there is still much confusion about what OpenStack really is. As we have seen, OpenStack is not a complete “cloud in a box”- solution. It is designed to solve a very specific set of problems. Now that the biggest vendors have invested heavily in OpenStack, I hope we will also see more straightforward answers to the question regarding what OpenStack can do, and what it cannot do. No more “It’s a Cloudy” or “It’s the future inside a cloud”- stuff, please.
When large enterprises decide to build a private cloud, they commit to a long, complex, often million-dollar project. What this means is that there are some enterprise-grade functionalities and a solid technical support always available. The big vendors can provide these in their own commercial OpenStack version, but why bother? In other words, why would the large vendors participate in an open source project when they are selling their own proprietary cloud management products simultaneously? The investments in R&D are so massive that the vendor has to have a clear business model in mind. OK, I can see that “A rising tide lifts all boats” and everyone benefits from greater interoperability but this, although noble, seems a bit too obscure and not anywhere in the near future at least. I guess this one is also a matter of articulating clearly. I will try to find the answers to these questions in my next post, where I’ll be talking about HP Helion CloudSystem Foundation and Enterprise (based on OpenStack!)
In the meantime, you can check out our previous post where Markus and Ari Saareks from HP did a great job explaining the HP Helion Cloud portfolio. If you are more interested in the hardware setup, you can read about the installation process of HP 3PAR 7200c (storage) and HP BladeSystem (compute) part 1 and part 2 in our blog.
See you soon!
Information and image sources:
Opensource.com: What is OpenStack? A great place to find more information about open source!