How to create your own private cloud?

By : |August 26, 2010 0

BANGALORE, INDIA: Most discussions around Cloud Computing nowadays are either focused on the security issues associated with it, or providing basic definitions of the three different types of Cloud based services i.e SaaS, PaaS and IaaS. A third thing is of course the loud noise created by all the vendors around their own cloud based offerings.

There’s hardly anybody talking about actual usage of cloud computing. Which public cloud service should you choose? What’s a private cloud and how to get started on it? What are the tools that would let me create my own private cloud? There are very few discussions on these aspects.

So while the public cloud based services have been covered elsewhere in our cover story, in this story we’ll focus on how to build your own private IaaS (Infrastructure as a Service) based private cloud. For this, we’ve used Ubuntu’s 10.04 Server Edition, which is completely free. We’ve given it on this month’s DVD, else you can download it from


The benefits of setting this up are many. It has the elasticity to grow or shrink your compute capacity based on your application’s needs. You can rapidly deploy new applications whenever required on your existing IT infrastructure. This way, you don’t end up investing in additional hardware resources. The Ubuntu Enterprise Cloud provides the same APIs as the popular EC2 cloud from Amazon, so if you’ve worked with that, this should be a piece of cake. What you create and run on Ubuntu, you can also run on EC2.

Let’s Implement
You need at least two servers for deploying the Ubuntu Cloud. One (Machine A) would act as the cloud, cluster, warehouse, and storage controller; while the other (Machine B) would be the node controller. One thing to keep in mind is that the node controller should support virtualization as virtual machines would be running on it.

By default a single virtual machine would run per core, therefore having a multi-core node controller is highly recommended. We configured Machine A on a Core2duo X6800 processor based machine with 2 GB DDR 2 RAM and 80 GB HDD. Machine B was running on an AMD Phenome II X4 965 processor with 4 GB DDR 3 RAM and 250 GB HDD.

[image_library_tag 464/16464, height=”296″ width=”424″ border=”0″ ,default]
To install the Ubuntu based Cloud, select ‘Install Ubuntu Enterprise Cloud’ from the first screen for installation on both Machines A and B.


[image_library_tag 465/16465, height=”300″ width=”449″ border=”0″ ,default]
Choose ‘Select cloud installation mode’, and then select cloud, cluster, warehouse, and storage controller for Machine A and choose node controller for Machine B.


[image_library_tag 466/16466, height=”265″ width=”433″ border=”0″ ,default]
While installing on Machine A, give a range of available Elastic IPs in the window named ‘configuring eucalyptus-cc’.

You’ll need to burn the Ubuntu server ISO on a CD/DVD and boot machine A from it. From the first screen that pops up, choose ‘Install Ubuntu Enterprise Cloud’. The installer would automatically check for Eucalyptus components on the network and recommend that you install the required components. From the screen with ‘Select Cloud installation mode’ heading, select Cloud, cluster, warehouse, and storage controller. Other Cloud specific inputs required during installation are cluster name (cluster1 in our case) and range of public IPs that can be assigned to instances. Once Machine A is up and running, you’ll need to setup the Node Controller. For this, boot Machine B with the Ubuntu Enterprise Server CD/DVD and? select ‘Install Ubuntu Enterprise Cloud’. This would automatically detect the cluster1 and pre-select ‘node controller’ in ‘Select Cloud installation mode’. Once the installation is done, reboot machine B and we are done.


Configuring your Private Cloud
Before you can start using the nodes, they have to be registered. In our case, registration is done automatically as we are installing Ubuntu Enterprise Cloud using the ISO. To verify this registration, run following command on Machine A:

cat /var/log/eucalyptus/registration.log

Next you need to? get credentials of the users. This can be done either through a web browser or by using the command line. Just visit the IP address of your Cloud controller (in our case,, login using ‘admin’ as both user name and password. This action would prompt you to change your password. Once done with these changes, click on ‘Credentials’ tab on the top, and then click on ‘Download Credentials’ button on the top. Save this zipped file to ‘~/.euca’, then unzip this file using:

unzip -d ~/.euca

[image_library_tag 467/16467, height=”265″ width=”456″ border=”0″ ,default]
To check if nodes are properly registered, run the following command on Machine A: ‘cat /var/log/eucalyptus/registration.log’.


[image_library_tag 468/16468, height=”263″ width=”435″ border=”0″ ,default]
You can install sample images plus create users using the web interface of the cloud controller. For this, login as using ‘admin’ as both username and password.


[image_library_tag 469/16469, height=”253″ width=”446″ border=”0″ ,default]
Credentials of users can be taken either from a web browser or from the command line. Just visit the IP address of your cloud controller and go to ‘Credentials’ tab.


[image_library_tag 470/16470, height=”300″ width=”432″ border=”0″ ,default]
Click on the ‘Region’. This would pop up a window named ‘Manage EC2 Regions’. Enter region name and the IP address ‘’.


[image_library_tag 471/16471, height=”301″ width=”452″ border=”0″ ,default]
Click on ‘Credentials’ tab on the top; this would pop up ‘Manage EC2 Credentials’ window. Get value of ‘AWS Access Key’ and ‘AWS Secret Access Key’ from ‘’.

The other way of achieving credentials is by running the following commands on the cloud controller: 

mkdir -p ~/.euca
chmod 700 ~/.euca
cd ~/.euca
sudo euca_conf –get-credentials
ln -s ~/.euca/eucarc ~/.eucarc
cd ?

To use your credentials, install the required cloud user tools as follows:

sudo apt-get install euca2ools
And to check if everything is running properly
. ~/.euca/eucarc
euca-describe-availability-zones verbose

 Installing and running an image
We have created our infrastructure. Now we show you how to run applications on top of this. You can either create your own image or get the sample images from the image store on web interface. Simply access Machine A from a web browser by typing its IP address, and login as admin. From this interface, click on ‘Store’ and then click on ‘Search’. Now simply click on install button presented in front of the available images. Once installed, the image would show ‘How to run?’ link in front of it. This link displays commands to run the pre-installed image. All installed images can be seen under the Images tab.

[image_library_tag 472/16472, height=”300″ width=”434″ border=”0″ ,default]
Get all the installed images under ‘Images’ tab. Select the listed instance and click on ‘Start Instances (s)’ on the top. This would imitate instance and assign Elastic IP to it.


[image_library_tag 473/16473, height=”297″ width=”455″ border=”0″ ,default]
In Hybridfox, go to ‘Volume and Snapshots’ tab. Here you can create volumes; click on green plus sign and fill in amount of storage required and put available zone (Cluster1 in our case).

[image_library_tag 474/16474, height=”262″ width=”436″ border=”0″ ,default]
In ‘Attach Volume’ pop up window, select Instance and add device name ‘/dev/sdb’. You have successfully created and attached volume to your running instance.


Using Command line to run image
To run images go to Machine A and run following commands:

if [ ! -e ~/.euca/mykey.priv ]; then
mkdir -p -m 700 ~/.euca
touch ~/.euca/mykey.priv
chmod 0600 ~/.euca/mykey.priv
euca-add-keypair mykey > ~/.euca/mykey.priv

These commands are to create a keypair (ssh key) that you can use to log into your instance as root, once it boots. As the key is stored, you only need to create them once. You also need to allow access to port 22 of instance. This can be done using:

euca-authorize default -P tcp -p 22 -s

Then create instances of your registered images as follows:

euca-run-instances $EMI -k mykey emi-E1461079 -t m1.small ?addressing private

You can get an image id from the web interface of the Cloud controller by clicking on ‘How to run?’ under the ‘Store’ tab. You can monitor state of instance using the following:

watch -n5 euca-describe-instances

Output of this command shows information about the instance, including its state. While first-time caching is being performed, the instance’s state will be ‘pending’. When the instance is fully started, the above state will become ‘running’. Look at the IP address assigned to your instance in the output and then connect to it:

IPADDR=$(euca-describe-instances | grep $EMI | grep running | tail -n1 | awk ‘{print $4}’)
ssh -i ~/.euca/mykey.priv ubuntu@$IPADDR

To terminate instance run

INSTANCEID=$(euca-describe-instances | grep $EMI | grep running | tail -n1 | awk ‘{print $2}’)
euca-terminate-instances $INSTANCEID


Using Hybridfox extension to run Images
Besides using command line, one easy and efficient way to manage your Ubuntu private cloud is via Firefox extension known as Hybridfox. Download this extension from Once installed, you need to connect it to Ubuntu private Cloud. Click on  ‘Region’ on the top. This would pop up a window named ‘Manage EC2 Regions’ asking for region name and endpoint URL. Name region (India, in our case) and put ‘’ where ‘’ is the IP address of Machine A. Second important step to be carried out is to add credentials to hybridfox. Click on ‘Credentials’ tab on the top; this would pop up ‘Manage EC2 Credentials’ window. Get value of ‘AWS Access Key’ and ‘AWS Secret Access Key’ from ‘’, click on ‘Credentials’ tab and then click on ‘Show keys’ button under ‘Query interface credentials’. Here ‘Query ID’ is ‘AWS Access Key’ and ‘Secret Key’ is ‘AWS Secret Access Key’. Now refresh your page and you should get all the installed images under ‘Images’ tab. Simply select the listed instance and click on ‘Start Instances(s)’ button on the top (green start icon). This would imitate instance and assign Elastic IP to it. You can see the different states of imitated Instance; initially it starts as ‘pending’ then changes to ‘running’ and when terminated changes to ‘terminated’.  To get list of available Elastic IP’s, simply click on ‘Elastic IP’s’ tab on the top. Elastic IP’s are nothing but public IP’s that were defined during installation on Machine A. These are assigned to instances for access by users.

Allocate Resource on the fly
To summarize IaaS in plain English, it gives the capability of adding/ subtracting resources to your application on the fly. Suppose you had anticipated that x number of CPU’s and y amount of memory would be enough to run your application, but later you found  that extra memory/storage/processing power was needed, you might be in a fix. However, if you are using Cloud setup, it is just a matter of few clicks that would add those extra resources needed by your application and that too on the fly. Here, I show you how to create a virtual storage unit and then attach this storage unit to running instance on the fly. In Hybridfox, go to ‘Volume and Snapshots’ tab on the top. Here you can create volumes, click on green plus sign and fill in amount of storage required plus put available zone (Cluster1, in our case). Once volume is created, it would be assigned a volume ID, now select this volume and attach it to running instance by clicking on green button with tick mark. In ‘Attach Volume’ pop up window, select Instance and add device name ‘/dev/sdb’. With this, you have successfully created and attached volume to your running instance. You can also detach volumes by clicking on red button with cross image.

All these steps show how easy it is to take the first step in creation of your own private Cloud and that too with minimal investment.

No Comments so fars

Jump into a conversation

No Comments Yet!

You can be the one to start a conversation.