Overview

Objective

From this tutorial, you will learn how to install, configure, register and perform several operations on a basic UEC setup that results in a cloud with a one controller "front-end" and one node for running Virtual Machine (VM) instances.

Tutorial

STEP 1: Prerequisites

To deploy a minimal cloud infrastructure, you’ll need at least two dedicated systems:

a Front End

one or more Node(s)

The following are recommendations, rather than fixed requirements. However, our experience in developing this documentation indicated the following suggestions.

Front End

Use the following table for a system that will run one or more of:

the cloud controller (clc)

the cluster controller (cc)

walrus (the S3-like storage service)

the storage controller (sc)

Hardware

Minimum

Suggested

Notes

CPU

1GHz

2 x 2GHz

for an all-in-one front end, it helps to have at least a dual core processor

Memory

2GB

4GB

the Java web front end benefits from lots of available memory

Disk

5400rpm IDE

7200rpm SATA

slower disks will work, but will yield much longer instance startup times

Disk Space

40GB

200GB

40GB is only enough space for only a single image, cache, etc., Eucalyptus does not like to run out of disk space

Networking

100Mbps

1000Mbps

machine images are hundreds of MB, and need to be copied over the network to nodes

Node(s)

The other system(s) are nodes, which will run:

the node controller (nc)

These systems will actually run the instances. You will need one or more systems with:

Hardware

Minimum

Suggested

Notes

CPU

VT extensions

VT, 64-bit, Multicore

64-bit can run both i386, and amd64 instances; by default, Eucalyptus will only run 1 VM per CPU core on a Node

Memory

1GB

4GB

additional memory means more, and larger guests

Disk

5400rpm IDE

7200rpm SATA or SCSI

Eucalyptus nodes are disk-intensive; I/O wait will likely be the performance bottleneck

Disk Space

40GB

100GB

images will be cached locally, Eucalyptus does not like to run out of disk space

Networking

100Mbps

1000Mbps

machine images are hundreds of MB, and need to be copied over the network to nodes

Configure the system's primary ethernet interface as a bridge. The node controller will attach virtual network interfaces to this bridge for VM that is started before it to enable network connectivity.

Note: Remember the name of your node's bridge device (we assume the name of your bridge device is "br0" for the rest of this document).

Note that there are several ways to configure a node to have a bridge as its primary interface, depending on the configuration of your machine. We show an example set of steps here but you will need to take care to ensure that this example configuration does not conflict with your local configuration if you wish to use it.

Finally, you need to install the Cloud Controller's eucalyptus user's public ssh key into the Node Controller's eucalyptus user's authorized_keys file. The easiest way to do this:

On the Node Controller, temporarily set a password for the eucalyptus user:

You can now remove the password of the eucalyptus account on the Node:

sudo passwd -d eucalyptus

The following diagram depicts what your setup should now resemble:

STEP 4: Register the Walrus, Cluster, Storage, and Node Controllers

As of Ubuntu 10.04 LTS, all component registration should be automatic, assuming:

Public SSH keys have been exchanged properly

The services are configured properly

The services are publishing their existence

The appropriate uec-component-listener is running

Verify Registration.

Steps a to e should only be required if you're using the UEC/PackageInstall method. Otherwise, if you are following the UEC/CDInstall method, these steps should already be completed automatically for you, and therefore you can skip a to e.

a.

Exchange Public SSH Keys

The Cloud Controller's eucalyptus user needs to have SSH access to the Walrus Controller, Cluster Controller, and Storage Controller as the eucalyptus user.

Install the Cloud Controller's eucalyptus user's public ssh key by:

On the target controller, temporarily set a password for the eucalyptus user:

STEP 5: Obtain Credentials

After installing and booting the Cloud Controller, users of the cloud will need to retrieve their credentials. This can be done either through a web browser, or at the command line.

From a Web Browser

From your web browser (either remotely or on your Ubuntu server) access the following URL:

https://<cloud-controller-ip-address>:8443/

Important! You must use a secure connection, so make sure you use "https" not "http" in your URL. You will get a security certificate warning. You will have to add an exception to view the page. If you do not accept it you will not be able to view the Eucalyptus configuration page.

Use username 'admin' and password 'admin' for the first time login (you will be prompted to change your password).

Then follow the on-screen instructions to update the admin password and email address.

Once the first time configuration process is completed, click the 'credentials' tab located in the top-left portion of the screen.

Click the 'Download Credentials' button to get your certificates

Save them to ~/.euca

Unzip the downloaded zipfile into a safe location (~/.euca)

unzip -d ~/.euca mycreds.zip

From a Command Line

Alternatively, if you are on the command line of the Cloud Controller, you can run:

STEP 6: Install an image from the store

The following is by far the simplest way to install an image. However, advanced users may be interested in learning how to Bundle their own image.

The simplest way to add an image to UEC is to install it from the Image Store on the UEC web interface.

Access the web interface at the following URL (Make sure you specify https):

https://<cloud-controller-ip-address>:8443/

Enter your login and password (if requested, as you may still be logged in from earlier)

Click on the Store tab

Browse available images

Click on install for the image you want

Once the image has been downloaded and installed, you can click on "How to run?" that will be displayed below the image button to view the command to execute to instantiate (start) this image. The image will also appear on the list given on the Image tab.

Before running an instance of your image, you should first create a keypair (ssh key) that you can use to log into your instance as root, once it boots. The key is stored, so you will only have to do this once. Run the following command:

Note: You can call your key whatever you like (in this example, the key is called 'mykey'), but remember what it is called. If you forget, you can always run euca-describe-keypairs to get a list of created keys stored in the system.

You must make sure to source ~/.euca/eucarc before you run any of the eucatools. It is probably best to add this to the bottom of your .bashrc script.

You must also allow access to port 22 in your instances:

euca-authorize default -P tcp -p 22 -s 0.0.0.0/0

Next, you can create instances of your registered image:

euca-run-instances $EMI -k mykey -t m1.small

Note: If you receive an error regarding image_id, you may find it by viewing Images page or click "How to Run" on the Store page to see the sample command.

The first time you run an instance, the system will be setting up caches for the image from which it will be created. This can often take some time the first time an instance is run given that VM images are usually quite large. To monitor the state of your instance, run:

watch -n5 euca-describe-instances

In the output, you should see 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, then connect to it:

Glossary

The Ubuntu Enterprise Cloud documentation uses terminology that might be unfamiliar to some readers. This page is intended to provide a glossary of such terms and acronyms.

Cloud - A federated set of physical machines that offer computing resources through virtual machines, provisioned and recollected dynamically.

Cloud Controller (CLC) - Eucalyptus component that provides the web UI (an https server on port 8443), and implements the Amazon EC2 API. There should be only one Cloud Controller in an installation of UEC. This service is provided by the Ubuntu eucalyptus-cloud package.

Cluster - A collection of nodes, associated with a Cluster Controller. There can be more than one Cluster in an installation of UEC. Clusters are sometimes physically separate sets of nodes. (e.g. floor1, floor2, floor2).

Cluster Controller (CC) - Eucalyptus component that manages collections of node resources. This service is provided by the Ubuntu eucalyptus-cc package.

Eucalyptus - Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems. An open source project originally from the University of California at Santa Barbara, now supported by Eucalyptus Systems, a Canonical Partner.

Node - A node is a physical machine that's capable of running virtual machines, running a node controller. Within Ubuntu, this generally means that the CPU has VT extensions, and can run the KVM hypervisor.

Node Controller (NC) - Eucalyptus component that runs on nodes which host the virtual machines that comprise the cloud. This service is provided by the Ubuntu package eucalyptus-nc.

Storage Controller (SC) - Eucalyptus component that manages dynamic block storage services (EBS). Each 'cluster' in a Eucalyptus installation can have its own Storage Controller. This component is provided by the 'eucalyptus-sc' package.