Eucalyptus is the best known (and as I consider the oldest) open source solution for organizing cloud infrastructure. Let's take a look on it.
Eucalyptus consists of five types of components:
- Cloud controller, provides web-interface and Amazon's EC2-compatible SOAP interface for virtual machines management. It's written in Java.
- Walrus, implements Amazon's S3-compatible SOAP and REST storage interface. It's also written in Java.
- Cluster Controller, managing one node group (one ethernet segment). It's written in C.
- Storage Controller. It is Amazon's EBS-style place where virtual images are stored before (and after) you use them. It's written in Java.
- Node Controller. It is an abstraction layer over you hypervisor (KVM and Xen are supported by now). It's written in C.
I installed Ubuntu Enterprise Cloud (UEC) using Ubuntu 9.10 Server. When you install it you can choose either Cluster (with Cloud Controller, Walrus, Cluster Controller, Storage Controller) or Node (with KVM-enabled Node Controller). Be careful! You can get a lot of strange errors if Cluster host runs out of memory or disk space.
Eucalyptus cloud is managed using Amazon-compatible Eucalyptus Tools written in python. By the way I build a package with these tools for Sisyphus. The life circle of the virtual machine is:
- You make images of file system, kernel and initrd and upload them (using euca2ools) to Block Storage.
- You ask cloud to run instance of you machine with fixed amount of CPU, memory and disk space.
- Images are downloaded from a Block Storage to a free node (node which has required resources). There are caches on nodes of cause. Node controller runs your machine.
- Virtual machine gets IP from a pool.
- Your machine is ready, you starts to use it.
- You ask cloud to shut down your machine.
- Node Controller shuts down your machine.
- Machine's image gets uploaded to a Block Storage.
Eucalyptus implements Amazon's API, so it is very useful in hybrid clouds (you can run your images in Amazon EC2 if you a running out of resources without any problem). But implementation in Java is a pain for me.
Tomorrow I'll start looking at OpenNebula. Stay tuned!
Hi. Thanks a lot for interesting posts :). Could you please make a comparison between OpenNebula and Eucalyptus?
ReplyDelete