April 29, 2009
This article was contributed by Koen Vervloesem
While Ubuntu has been able to attract an impressive "market share" as a
GNU/Linux distribution in just a couple of years, this success has been
limited mainly to the desktop. Canonical has made it clear that it has
ambitions for the server market, but at the moment Ubuntu
Server Edition does not stand apart from enterprise distributions like
Red Hat Enterprise Linux and SUSE Linux Enterprise. With the newest
edition, Ubuntu 9.04 ("Jaunty Jackalope"), Canonical has tried to outsmart
its competitors by focusing on cloud computing.
"Cloud computing" comes down to providing computing resources as a
dynamically scalable service. In practice this means that customers rent
computers to run their own software. The best known cloud computing system
is Amazon Elastic Compute Cloud
(EC2). Customers can create virtual machines (which EC2 calls server
instances) and run them on Amazon's servers. They are charged for each hour
the virtual machine runs, and for the bandwidth used. Amazon distributes a
set of (proprietary) EC2 tools to manage a cloud. With these command line
programs, users can create, launch or terminate virtual servers, as well as
any other imaginable task.
The most innovative part in Ubuntu 9.04 is found in the Eucalyptus project, which brings an
Amazon EC2-style private cloud within the reach of every Ubuntu 9.04
user. At the moment it's still a technology preview, which will not be
considered production-ready until Ubuntu 9.10 later this year. Eucalyptus
makes it possible to investigate cloud possibilities inside a company,
without the need to deploy the applications on external servers at
Amazon. Because Eucalyptus is interface-compatible with the EC2 APIs, the
same EC2 tools can be used. This means that working with virtual machines
on Eucalyptus is almost identical to working with virtual machines on
Amazon EC2, and a company wanting to use cloud
computing on Ubuntu has the choice between Ubuntu
Server on Amazon EC2 and Ubuntu Server on Eucalyptus, what Canonical is
calling Ubuntu
Enterprise Cloud.
The Eucalyptus project is important because it 'frees' cloud
computing. Traditionally, cloud computing systems have been the playground
of large companies from Google, Amazon and IBM to Microsoft. Vendor lock-in
is a serious issue in this emerging market. However, with Eucalyptus there
is a technology which allows anyone to set up their own cloud system on
their own hardware. The framework essentially implements what is commonly
referred to as "Infrastructure as a Service": a system with the
ability to run and control collections of virtual machine instances
deployed across a variety of physical servers.
Development of Eucalyptus
The name Eucalyptus is an acronym for "Elastic Utility Computing
Architecture for Linking Your Programs To Useful Systems". The software was
originally a research project in the Computer Science Department at the
University of California, Santa Barbara (UCSB). The research question that
was investigated concerned the combined use of U.S. National Science
Foundation supercomputers,
university research machines and the public clouds for large-scale science
applications. Through that project, called VGrADS, the researchers designed and
coded what has been released as Eucalyptus 1.0 in May 2008. This gave them
an environment to host a cloud for themselves.
At that time, the only commercial cloud was Amazon's EC2. The
researchers ported their grid system to Amazon EC2, and at the same time
built Eucalyptus as an EC2-compatible cloud system. Because the researchers
didn't have the resources to support more than one cloud API, Eucalyptus
has been written as a drop-in replacement for EC2, such that a system
running on EC2 could also run on Eucalyptus in the same way. The developers
have only read Amazon's API specifications that are published free of
charge. Thus, internally, Eucalyptus works completely differently than
EC2, but it faithfully reproduces EC2 functionality.
While Eucalyptus was designed as a tool to support research, the
developers clearly saw that it had potential in the non-academic world
too. Therefore, they released the code as open source under a BSD
license. However, for the moment, the developers are restricting external
contributions to bug fixes, because they want to keep the code base stable
in this early phase of development. According to project lead Rich Wolski,
this policy will change during this year:
Once we finalize the implementation of the Amazon Web
Services API (there remain a few missing API features that we wish to
include for completeness), we'll begin to recruit contributors. As of now,
we think that will be some time in the mid July time frame, but it will
depend on our release schedule.
There was a close collaboration between the Eucalyptus and Ubuntu
developers to get Eucalyptus in Ubuntu 9.04. For example, originally
Eucalyptus used Xen as its virtualization platform, but because Ubuntu
favors KVM it has been integrated with KVM in Ubuntu. However,
Eucalyptus isn't tied to Ubuntu or KVM. As Rich Wolski says:
The biggest challenge at the moment is to extend the
generality of Eucalyptus while maintaining the integrity of the system. As
we expand the number of platforms on which it runs, the hypervisors it
supports, and the APIs it supports, the complexity associated with
maintaining its core abstractions is increasing. Fortunately, we did the
original design with this generality in mind, choosing to focus initially
only on AWS, Xen and RPM packaging, but with a modularity of design that
would allow us to expand the infrastructure in an orderly way.
Creating your own private cloud with Eucalyptus
So how does Eucalyptus work? It's essentially a set of web services: the
user makes a request to a front-end web service, the cloud controller. If
the request is for storage, it is forwarded to Walrus,
the storage front-end that is compatible with Amazon S3. The storage request is then
forwarded to storage controllers running at the cluster level. If the
request to the cloud controller is not about storage, it is forwarded to
web services on the cluster level and next to the individual compute
nodes.
Eucalyptus consists of three parts, which come in Ubuntu as three packages:
- eucalyptus-cloud: the cloud controller, implementing the EC2
and S3 APIs. A Eucalyptus system needs only one cloud controller.
- eucalyptus-cc: the cluster controller, which is the master
server and implements the virtual network. A Eucalyptus system normally
needs only one cluster controller.
- eucalyptus-nc: the node controller, which controls the KVM
hypervisor and manages the virtual machines on a node. Each physical
server in the cloud needs a node controller.
The three components can also be installed on one computer. This can be
done for example if one wants to evaluate Eucalyptus on an Ubuntu 9.04
system for the first time.
Installing and deploying Eucalyptus on Ubuntu 9.04 is still somewhat
complicated, but the Ubuntu community
documentation is an excellent guide for the installation. The user
trying to install Eucalyptus will definitely meet some rough edges. For
example, he can add a cluster to the cloud in the web interface, but adding
nodes has to be done on the command line. And the EC2 tools bundled with
Ubuntu 9.04 are not compatible with Eucalyptus, hence users have to
download another version of the EC2 tools manually. Moreover, while trying
to set up a Eucalyptus system on a fresh Ubuntu 9.04 install, your author
discovered that Eucalyptus is extremely sensitive to the virtual or
physical network setup. If something is wrong with the network, the error
messages of Eucalyptus and the EC2 tools are not helpful.
And so on; one assumes these difficulties will be ironed out over time.
Ubuntu in the cloud
Ubuntu's cloud computing possibilities don't stop with Eucalyptus. For
the last few months, Canonical has had Ubuntu machine images for Amazon EC2 in beta,
and, last week, the Ubuntu EC2 team announced the availability of public
Ubuntu EC2 images for the 8.10 and 8.04 (LTS) releases. This provides a
stable Ubuntu platform that allows users to run their applications in an
EC2 environment. Meanwhile, the Ubuntu EC2 team is working on EC2 images
for 9.04.
It's interesting to note that an Amazon machine image can be converted
to a Eucalyptus machine image, even if Amazon is using Xen and Eucalyptus
on Ubuntu is using KVM. The key difference is that Xen accepts an ext3
filesystem for use as a root filesystem, while KVM expects a disk
image. The Eucalyptus developers have some internal tools for making this
conversion and are using it frequently during the development and Q/A for
each release. According to Wolski, they are planning to add the tools to a
future Eucalyptus release. For now, converting images requires a little bit
of an understanding of the different requirements each hypervisor has.
Canonical and Eucalyptus have worked together to make it as easy as
possible to set up and manage a private cloud. Therefore, the Eucalyptus
web interface has a button to register for a RightScale account, which is available
in a free
developer edition to try it out, and some pay editions with extra
features. By following the link on the configuration web
page of the Eucalyptus web interface, the user is ready to manage a cloud from
within a RightScale dashboard. Users can see their virtual machine
instances on their private cloud or on EC2 in one dashboard.
User
management is also included, for example a user can be allowed to launch
his own cloud server on someone else's cloud. RightScale is now working
with Canonical to ensure that the official Ubuntu 9.04 Amazon Machine
Images will work out-of-the-box with RightScale. According to the official
RightScale blog, this will work out as following:
This means that if you launch one of the 9.04 AMIs
from the RightScale dashboard then all the RightScale goodness will work:
server templates, monitoring, automation, etc. If you launch the same AMI
using the API or from a different console, then they'll work as if
RightScale didn't exist.
An interesting note: RightScale first focused on CentOS, but switched to
Ubuntu as its primary supported distribution because of Canonical's cloud
plans.
Conclusion
When Ubuntu Server first appeared, a lot of people didn't believe it
could be a real competitor in the enterprise Linux market. However, with
Ubuntu 9.04 a clear focus is arising. Canonical wants to do for cloud
computing just the same thing it has done with its desktop operating
system: make it work out-of-the-box and make it easy to deploy. The
collaboration between Canonical, Amazon, Eucalyptus and RightScale is an
important step in this direction. While working with Eucalyptus in Ubuntu
9.04 has still its rough edges, it's interesting to preview this flexible
technology that will hopefully be mature in Ubuntu 9.10 at the end of the
year. The name "Karmic Koala" for the 9.10 release at least gives a nice
insight in what a core role Eucalyptus will play in Ubuntu Server.
(
Log in to post comments)