Installing Sahara using DevStack

So you heard of a cool new technology called OpenStack and wanna try it out! The easiest way to start with it is installation of DevStack which won’t take more than an hour. 

But first, what is DevStack? In a nutshell, DevStack is mini OpenStack for developers.

Now, let’s get started with the installation right away.

Pre-requisites:

1. Install Virtual Box or any other hypervisor of your choice with minimum 2 GB of RAM.(Required for DevStack to run successfully)

2. Install Ubuntu/any other Linux distro on it. I had used Ubuntu 14.04 server

Installation Steps:

1. Install git

$ sudo apt-get install git-core

2. Clone devstack repository

$ git clone https://git.openstack.org/openstack-dev/devstack.git

3. Navigate to the devstack directory

$ cd devstack

4. Copy local configuration file from devstack/samples to devstack. This file overwrites the settings in stack.sh file. There are few plugins which are not enabled by default. To enable them you need to modify this file.

$ cp samples/local.conf local.conf

5. Sahara is not enabled by default. So to enable it you need to add following
line in local.conf

$ enable_plugin sahara git://git.openstack.org/openstack/sahara

This enables sahara service but to be able to view the data processing tab (that is what sahara is called, data processing component of OpenStack) in the dashboard, you need to enable sahara dashboard plugin.

This is because sahara’s dashboard is separated from horizon. So you need to plug it externally.

$ enable_plugin sahara-dashboard git://git.openstack.org/openstack/sahara-dashboard

6. run stack.sh

$ ./stack.sh

If the script runs successfully and you have something like this on your screen,

devstack_successful_installation

then you are good to go.

You have a mini OpenStack cloud on your own machine. Now open a browser and explore the OpenStack dashboard (horizon) using the URL you got on the screen.

Happy exploring the cloud 🙂

My Internship Project – Improving Anti-Affinity in Sahara

It’s been around 3 weeks since my internship started and trust me every single day had been an entirely new learning experience.

My internship started on 7th December. The very first day, we had a meeting with the fellow OpenStack interns and mentors all around the world. It was kind of warm up for the internship. We discussed what and how we are going to achieve our goals set for the internship.

Project:

Improving anti-affinity behaviour for Sahara cluster creation

Sahara is a data processing component of OpenStack. It provisions the clusters (e.g a Hadoop cluster) into OpenStack cloud.

Since the nodes in the cluster are provisioned on virtual machines, we can’t be sure on which hypervisor they go. To provide high availability, hadoop ensures that there are replicas for the nodes. In the worst case, if all the replicas go onto the same hypervisor and the hypervisor goes down, high availability is not ensured. So to avoid this, Sahara provides the user with capability of defining anti-affinity policies. In the policy, the user is expected to define a node group, nodes of which should be anti-affine.

Sahara ensures that the nodes in the anti-affinity group are not on a single hypervisor. It provisions each of the anti-affine node on a different hypervisor. The problem with the current implementation is that, if the hypervisors are less than the number of nodes in the anti-affinity group, Sahara throws an error which can be a valid  use-case sometimes. My task involves me to understand the current cluster allocation strategy and improve it so as to support the above use case.

Mentor:

My mentor for the project is Michael McCune (elmiko). He is very supportive and encouraging. His “Keep up the good work!” comment always inspires me to do more and more. I would love to meet him in person some day. We discuss the status of the project every alternate day.

Work so far:

On the work front, I have installed DevStack with Sahara enabled (a blog post coming up soon on how to install it). I am exploring the Sahara codebase and pdb comes very handy. I am learning how to use screens in DevStack. So far, it has been an amazing experience.

I have fallen in love with OpenStack. I am learning new things each day. 🙂