Problem solve Get help with specific problems with your technologies, process and projects.

Setting up cloud computing with Eucalyptus

Cloud computing provides on demand provisioning of compute resources. Learn how to set up Eucalyptus on Ubuntu to perform your own cloud computing operations. Eucalyptus is available in source code, and packages are available for CentOS 5.3, OpenSUSE 11, Debian 5, and Ubuntu 9.04.

Because of the need to add computing resources quickly on-demand, technologies have been created that allow the provisioning of resources without knowing specifically what or where the provisioned resource is. This on demand provisioning within an "elastic" environment has become known as cloud computing. The major criteria for acceptance of this shift in computing is the potential of rapid large scaling of resources not available in smaller "controlled" environments.

This new paradigm in computing has been recently become commercial viable due to the widespread adoption of virtual computing. Virtual computing allows the quick deployment of resources, as virtual machines can be built with relatively low concern (outside of capacity) of the underlying hardware. (Physical allocation of new resources such as processors on demand have been available, at least technologically from vendors for many years; however, their adoption is still lacking as a viable charge model has not been created and/or accepted.)

Elements of cloud computing
The level of abstraction and lack of control provided in a cloud computing environment depends on the particular solution; however, most solutions have common elements that make up the environment regardless of how much control is actually given to the user. These elements are: application programming interface (API), network, processing cycles (CPU) and storage.

API: The API element is often referred to as the client interface and provides the developer with control of specific elements that are often abstracts (such as Java elements, storage space, etc.).

Network: The network element is typically hidden from the user of the cloud; however, it is fundamental in both the translation of transaction from the public Internet to the private cloud resources. This network element is also often virtual, allowing the network to add resiliency through failover and offlining network addresses assigned to systems and possibly network routers and switches.

CPU: The processing cycles may or may not be hidden from the user of the cloud depending on the solution being provided. In some environments it may be desirable to provide and bill resources based upon the number of instructions provided by the system. At a higher level though, these processing cycles are central processing units, or partial central processor units through virtualization.

Storage: Due to its relatively high cost and the fact that growth is hard to plan and often hard to provision, storage lends itself well to cloud computing. Depending on the solution, storage may be presented to the user. For example, EMC's Mozy Backup solution provides access to storage for backing up personal computers.

Open source cloud computing with Eucalyptus
Eucalyptus cloud computing software provides abstraction of these resources in an open source (and commercially available) platform. Eucalyptus is available in source code, and packages are available for CentOS 5.3, OpenSUSE 11, Debian 5, and Ubuntu 9.04.

Eucalyptus uses the Xen and KVM as the hypervsior of choice for virtualization. The current release at the time of publication is 1.5.

Eucalyptus components: Logically the Eucalyptus cloud consists of four components: the client, the cloud controller (clc or "cloud"), the cluster controller (cc), and the node controller (nc). The client is solution dependent, but may come in the form of a browser script, a user space program, or even a kernel module. The cloud controller is the client's interface into the cloud and provides the logic decision of the cloud. The cloud controller runs services that authenticates the client, and then translates the client requests into transactions. The cluster controller is a collection of node controllers. It is responsible for state information and interaction with the virtual machines availability. However, the nodes themselves are responsible via the hypervisor (Xen or KVM) to online and offline virtual machines. A node controller exists as a single instance on a single machine; however, multiple node controllers make up the particular cloud.

The figure below shows these components and their hierarchy relationship.

Click on image for larger version

How to install Eucalyptus
The packages that make up Eucalyptus, are closely named to their components: eucalyptus cloud controller (eucalyptus-cloud), eucalyptus controller (eucalyptus-controller), and noded controller (eucalyptus-nc). For this article Ubuntu 9.04 is used. The prerequisites for installation are a consistent network time protocol (NTP) configuration throughout the nodes, and bridging configuration on the node controllers. The bridging steps are outside the scope of this article, but Ubuntu provides documentation. The first step to installation is to download Eucalyptus (32-bit or 64-bit).

After downloading the program, move into the directory where you downloaded it to, (in this example, /tmp was used). Then execute the following on each of the machines that make up the cloud controllers, cluster controller, and node controllers:

 [email protected]:/tmp/eucalyptus-1.5.1-ubuntu-i386# tar zxvf eucalyptus-1.5.1-*[email protected]:/tmp/eucalyptus-1.5.1-ubuntu-i386# cd eucalyptus-1.5.1-*[email protected]:/tmp/eucalyptus-1.5.1-ubuntu-i386# echo deb file://${PWD} ./ >> /etc/apt/[email protected]:/tmp/eucalyptus-1.5.1-ubuntu-i386# apt-get update

The apt-get update will install the prerequisites needed for the platform, with the open Java framework being a large majority of the download. The apt-get will require quite a bit of time.

For each of the component roles, individual packages are installed that are dependent on the role.

On the cloud controller:

 [email protected]:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-cloud

On the controller:

 [email protected]:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-cc

And finally on the node controllers:

 [email protected]:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-nc

The cluster is now built. Services can be started as follows, on the appropriate systems:

 /etc/init.d/eucalyptus-cloud /etc/init.d/ecualyptus-cc /etc/init.d/eucalyptus-nc

This article has provided an overview of Eucalyptus as well as installing the platform on Ubuntu 9.0.4. The infrastructure is now in place to perform your own cloud computing solutions.

ABOUT THE AUTHOR: Ronald McCarty is a freelance writer and consultant specializing in systems, network, and information security. He received his bachelor's degree in Computer and Information Systems at the University of Maryland's international campus at Schwaebisch Gmuend, Germany and his master's degree in Management with a specialization in information technology at Capella University. Ron's company, Your Net Guard offers IT consulting and integration services in the Dallas/Forth Worth area. He can be reached at [email protected].

Dig Deeper on Linux servers