If you're building an internal or private cloud, Canonical wants you to use Ubuntu Linux 10.04 as your operating system of choice. To that end, the newest version of Ubuntu includes a feature set called Ubuntu Enterprise Cloud.
In keeping with its open source pedigree, Ubuntu Enterprise Cloud is integrated with the open source Eucalyptus private cloud platform, making it possible to create a private cloud with much less configuration than installing Linux first, then Eucalyptus.
And for those thinking about eventually moving resources to the public cloud, or simply bursting to the public cloud when workloads spike, the Ubuntu/Eucalyptus internal cloud offering is designed to be compatible with Amazon's EC2 public cloud service.
On the flip side, you'll need to familiarise yourself with both Ubuntu and Eucalyptus, as Ubuntu Enterprise Cloud's dependence on Eucalyptus will force you to reach beyond Ubuntu documentation when problems occur. For example, we found Ubuntu had weak documentation for customising images, an important step in deploying Ubuntu Enterprise Cloud.
Basically, Ubuntu Enterprise Cloud can be deployed on internal hardware to run job/batch applications. The idea is to initially allocate storage, then rapidly build multiple virtual machines to process data, collect the data, then tear down the infrastructure for re-use by a subsequent purpose.
Ubuntu Enterprise Cloud provides internal cloud control methods that closely mime what can be done on Amazon's public cloud infrastructure. Its tools can be used to process recurring jobs or one-shot distributed applications, like DNA analysis, video rendering, or database table reformatting/reindexing.
Ubuntu Enterprise Cloud uses the open source kernel-based virtual machine (KVM) platform to host virtual machines that run on the backend nodes. This is important because there are extra Eucalyptus-provided images that include both the KVM and Xen kernels, but you must use the KVM ones if you're importing them into Ubuntu Enterprise Cloud.
In order to successfully run Ubuntu Enterprise Cloud, we had to have at least two dedicated systems. One is used for the front-end applications, which include a Cloud Controller, a Cluster Controller, Walrus Controller and the Storage Controller. The other system became a node machine that ran the hosted virtual machines.
The controller services were easy to understand since they're similar to Amazon EC2 Cloud components. The Ubuntu Enterprise Cloud Cloud Controller is the front-end service application — the one to connect to for managing cloud services. It understands EC2 API calls, and offered us its web user interface.
The Cluster Controller, in turn, manages each cluster of node (VM) resources, and talks to the node/VM host via the open source libvrt library. We could use as many nodes as we had hardware resources to cram them into, Canonical recommends baseline hardware and recommends faster components, even down to disk speed.
The Walrus Controller acts as a storage mechanism like Amazon's S3 (Simple Storage Service) for data storage or storing VM images. The Ubuntu Enterprise Cloud Storage Controller, like Amazon Elastic Block Storage (EBS), makes persistent virtual disks to attach to running instances — active resource storage virtualisation control. Each cluster can have a Storage Controller for the convenience of management, snapshots, object aggregation, and so on.