Some time ago I was at a conference and listened to an introduction to OpenNebula 2 by Tino Vasquez from the OpenNebula team. I was fascinated by the simplicity of the product and went on to write a Puppet module for it.
Today PacktPub have asked me to write a review of an early beta of the most recent book on the platform 'OpenNebula 3 Cloud Computing' by Giovanni Toraldo and lacking anything better to do I thought I would give it a shot (just to be clear I'm doing this for the fun of it, no money has changed hands - I just like to write about things).
For those who aren't savvy with the technology OpenNebula is an Open Source cloud framework aimed at enterprises who wish to run private clouds, but it also provides hooks into public clouds as well so you get this 'single management' effect no matter which direction you wish to go.
The book begins with the normal introduction to the PaaS, SaaS & IaaS terminology for those who aren't in the know. Starting small is a good idea I believe, it really is a brave new world for some people.
It also provides a lot of terminology that applies to most clouds. When the cloud industry started people barely knew where to start. Its funny now we can effectively model how most clouds should look, and the intro does a good job at describing that model.
Building
3 hypervisors are covered in detail: KVM, Xen and VMWare ESXi. Which are the three bigger players in the market. Its important that all three are covered in a book such as this, as different companies have invested in different paths.
It talks about how Libvirt plays in with these technologies, Libvirt being integral to the integration within OpenNebula as it takes away some of the heavy lifting.
The book states at the beginning that its focused on using Ubuntu 10.04. While I think this is fine I can hear the audible whine of the corporates who have rested their laurels on Redhat. I guess most people need to be mindful that this is just the hypervisor not the OS that applications will sit on, however haters will hate and divisions are clear. In my opinion over the years I've started to see that a hybrid approach is probably better, but still this doesn't help with licensing this kind of environment when your guests are going to be Redhat for example.
Still, Debian and Ubuntu have put a lot of effort in making this platform work for them which is a testament to their great efforts lately in the server space.
The book does however talk about installation from source and pre-built packages, and with enough knowledge Redhat users can probably happily find packages or build them using FPM if need be.
Storage
The storage section is detailed, it goes through the basic variants using SCP transfers and of course NFS backed storage. Which alone are enough to get most people up and running.
It also spends time talking about some distributed storage systems: MooseFS and GlusterFS. Its a shame Ceph isn't ready for prime-time yet, as I would love to see this covered at some point as well (perhaps next edition). Conversely though it does step into how a transfer driver is written, which gives you the grounding for adapting to any storage mechanism if you chose.
Instances
The book walks you though how to launch the example ttylinux demo instance. This instance itself is more of a light example for users, not really a production instance
The real meat that I wanted to see however was how to setup your own instance, as this is what most people have trouble with. However the chapter was very light on this, just mentioning it needs to be done on a another PC and imported into the OpenNebula environment. I would have liked to have seen a discussion on this in greater detail and some points on how to do it in a few hypervisors with Linux and Windows. Oh well, you can't have everything.
The chapter however does talk about contexualisation of your VM quite a bit. This is where you individualise a machine from a stored image by passing scripts and data to the VM as it boots in the form of a mini ISO image. Philosophically this is the place where your own individual solutions come out, as this is more about how to modelling your environment - and everyones needs are different.
Web Interfaces
The section on setting up Sunstone wasn't my favourite, but should be good enough to get people up and running. The tool itself is a pinch to setup, being a simple Ruby Sinatra application. However I would have preferred documentation on how to make this scale with a proper Ruby application server such as Unicorn or Passenger, which are the more preferred technologies for production Ruby web applications.
They do have some information on how to configure Nginx however as a reverse-proxy, which is at least a start.
The instructions on how to use the interface was very detailed however and included a lot of screenshots which was nice.
Monitoring
The monitoring sections were very detailed and went into how to setup custom monitors for VM state which was interesting, especially for those who have custom requirements. It also describes how to setup scripted hooks for scenarios like VM failure, which is a real treat for those who are control freaks.
There was an entire section for setting up Ganglia for uptime monitoring and OpenNebula integration. Its nice to see this covered, as monitoring is pretty critical to a real solution. Even users using other monitoring tools can take something away from this section as it helps one understand the entry points for monitoring regardless of tool.
Public Cloud Integration
I must say the entire section on AWS integration was very detailed. I'm not an expert on this part of OpenNebula, and the integration with AWS is often glossed over. The author however has spent quite a bit of time explaining how to make this work with Linux and Windows instances.
In the next section of the book the author also covers the EC2 interface that OpenNebula emulates so you can use EC2 compatible API's which is a very nice feature.
Other Interfaces
The final chapter gets into the nuts and bolts of how to configure OpenNebula to expose an EC2 and OCCI interface to the world, so that it can be called by third party tools designed around these protocols. The EC2 feature is of course interesting, as this means you can expose your private and public clouds using the same EC2 interface.
It also talks about one of my more favourite topics: Zones and Virtual Data Centres. The concept of Zones here is to allow a single OpenNebula cloud serve multiple 'customers' if you like: be it separate IT groups or even separate commercial customer entities. I believe this to be an integral part of the 'server provider' aspect of cloud computing weither you are going to zone your various development groups or customers A, B and Z.
In this section we get some setup instructions on how to configure the oZones service using Apache (not Nginx this time) as a reverse-proxy and some nice detailed instructions on how to use the management GUI.
Summary
I think all in all the book is a good reference guide, and would be perfect for those stepping out into building an OpenNebula driven cloud for themselves. It reads well, and the layout is front-to-back so you can step through it in a lab.
In some parts the author could have extended into more detail on production setups (use of Passenger, Unicorn for example) and scaling the oned daemon, as I feel these are the questions people ultimately ask.
It drills into some detail and explanations, and generally doesn't focus on one type of solution which is nice to see. All in all a good read and I'd recommend it to anyone stepping into the world of cloud building with OpenNebula. Well done Giovanni :-).
If you are interested in obtaining this book, it can be purchased from the PacktPub website at: http://link.packtpub.com/NUSJO7
I would also agree with this. Being a user who comes from RedHat there is a clear lack of information on how opennebula can be setup on either RHEL, CentOS or Fedora, though I know there are some RPMS available for CentOS 6, they are not generally available for other versions of RH/CentOS/Fedora.
ReplyDeleteBuilding OpenNebula manually did not seem too hard, but again due to differences I guess between Ubuntu and RH's setups has meant that silly things break like permissions to use libvirt, the kvm binaries being named differently to what OpenNebula seems to expect and also filesystem permissions due to user/group settings not being quite right. Properly built rpms solve this and make the software easier to install, but it is also possible that the manually installed software could recognise these differences and adjust for them.
The final thing about building a running image seemed again to be rather lightly documented and if I remember correctly there was a comment to build it via virt-manager and then contextualise the resulting image for later use. If I'm going to use OpenNebula I would like to be able to do everything from the software if that's possible.
I was also trying to do something "typical", create a new install, by booting from a cdimage of an install cd. That could be for Linux, FreeBSD, Solaris or whatever but this does not seem to be well documented, or I missed it.
So I liked the book, but would love to see a second edition which covers how to get OpenNebula installed on different versions of Linux and expands on the detail currently covered.