OpenStack is an open source software that allows for the deployment and management of a cloud infrastructure as a service (IaaS) platform. OpenStack supports both private and public cloud deployments. It fulfills two main requirements of the cloud: massive scalability and simplicity of implementation.
OpenStack is highly configurable: the user can choose whether or not to implement several services offered by the software. The configuration of each component is also up to the user and is easily made through the application programming interface (API) the tool provides. Therefore, there are many different ways to use OpenStack, which makes it a flexible tool that is able to work along with other software.
Another reason to adopt OpenStack is that it supports different hypervisors (Xen, VMware or kernel-based virtual machine [KVM] for instance) and several virtualization technologies (such as bare metal or high-performance computing).
OpenStack architecture involves the following set of services:
Image courtesy of Ken Pepple, http://ken.pepple.info/
In short, OpenStack allows the automatic deployment and management of a cloud architecture, and it can easily be integrated with other software.
Adding a new physical machine in an OpenStack cloud
Let’s say a cloud provider wants to expand its cloud infrastructure by adding a new physical machine. OpenStack is already managing its cloud, and it wants its new machine to be integrated with OpenStack. KVM and Linux are already running in this new machine.
For a cloud infrastructure, the typical OpenStack configuration includes: a “master” controller node present on a physical machine managing other physical “slave” machines called compute nodes (see the following figure).
Obviously, since our cloud provider is already using OpenStack in his cloud, a controller node is already running on a machine. All he has to do is add and configure a new compute node on his new machine. In order to do that, he has only two components to install and configure:
- Nova-compute, responsible for managing the lifecycle of an instance (for KVM, the component is named nova-compute-kvm; nova-compute is specific for each hypervisor)
- Nova-network, responsible for forwarding controller requests the compute node
With this, the new machine should be integrated with OpenStack.
Prerequisite for minimum production deployment
There are some basic requirements you’ll have to meet to deploy OpenStack. Here are the prerequisites, drawn from the OpenStack manual.
- Hardware: For OpenStack controller node, 12 GB RAM are needed as well as a disk space of 30 GB to run OpenStack services. Two SATA disks of 2 TB will be necessary to store volumes used by instances. Communication with compute nodes requires a network interface card (NIC) of 1 Gbps. For compute nodes, 2 GB RAM will be sufficient to run three tiny instances on a single compute node. Two NIC 1 Gbps will allow communication with both the controller and other compute nodes.
- Operating system (OS): OpenStack supports the following operating systems: CentOS, Debian, Fedora, Red Hat Enterprise Linux (RHEL), openSUSE, SLES Linux Enterprise Server and Ubuntu. Other system support is provided by different editors or can be developed by porting nova modules on the target platform.
OpenStack and IBM
OpenStack is an open source tool that is flexible and able to inter-operate with other software products. For those reasons, it has become an ideal tool for IBM, which wants to develop its own cloud services at affordable costs for its clients.
So what do you think about OpenStack? Is it another open source tool supported by a bunch of geeks, or can backers like IBM and other companies increase the number of adopters and add staying power?