Advertisment

Create Your Own Private Cloud

author-image
PCQ Bureau
New Update

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.

Advertisment

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 ubuntu.com/cloud/private.

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.

Advertisment
To install the Ubuntu based Cloud, select 'Install Ubuntu

Enterprise Cloud' from the first screen for installation on both Machines A

and B.
Choose 'Select cloud installation mode', and then select

cloud, cluster, warehouse, and storage controller for Machine A and choose

node controller for Machine B.
While installing on Machine A, give a range of available

Elastic IPs in the window named 'configuring eucalyptus-cc'.
Advertisment

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

Advertisment

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, 192.168.2.10), 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 mycreds.zip

To check if nodes are properly registered, run the

following command on Machine A: 'cat /var/log/eucalyptus/registration.log'.
Advertisment

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.

Advertisment
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.

Click on the 'Region'. This would pop up a window named

'Manage EC2 Regions'. Enter region name and the IP address

'http://192.168.2.10:8773/services/Eucalyptus'.
Advertisment

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 'http://192.168.2.10'.

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 mycreds.zip


unzip mycreds.zip


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.

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.

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).

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


fi



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 0.0.0.0/0

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 http://code.google.com/p/hybridfox/. 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

'http://192.168.2.10:8773/services/Eucalyptus' where '192.168.2.10' 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 '192.168.2.10', 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.

Advertisment