A Preview of the New Scheduling Features in OpenNebula 4.0

We are working hard developing new features and overall improvements for OpenNebula 4.0. Before the new Sunstone eye-candy is revealed and steals all the attention, we wanted to share some of the other features, those small pieces that won’t wow anyone, but combined together make OpenNebula the best option when it comes to integration capabilities.

In this post I will focus on the Scheduler related features.

Schedule any action, not only deployments

We have added a '--schedule' option to most of the VM life-cycle commands. Users can schedule one or more VM actions to be executed at a certain date and time, for example:

$ onevm shutdown 0 --schedule "05/25 17:45"
VM 0: shutdown scheduled at 2013-05-25 17:45:00 +0200

$ onevm cancel 0 --schedule "05/25 18:00"
VM 0: cancel scheduled at 2013-05-25 18:00:00 +0200

$ onevm show 0
SCHEDULED ACTIONS
ID ACTION        SCHEDULED         DONE MESSAGE
 0 shutdown    05/25 17:45            -
 1 cancel      05/25 18:00            -

These actions can be edited or deleted updating the VM template (another new feature that you will see in 4.0).

$ onevm update 0

SCHED_ACTION=[
  ACTION="shutdown",
  ID="0",
  TIME="1369496700" ]
SCHED_ACTION=[
  ACTION="cancel",
  ID="1",
  TIME="1369497600" ]

Placement expressions improvements

We have also improved the requirements and rank expressions making them more useful. Until now you could choose to deploy VMs in a certain cluster, using the following expression:

SCHED_REQUIREMENTS = "CLUSTER = production"

But now you can also use variables from the Host’s Cluster template. Let’s say you have the following scenario:

$ onehost list
  ID NAME            CLUSTER   RVM      ALLOCATED_CPU      ALLOCATED_MEM STAT
   1 host01          cluster_a   0       0 / 200 (0%)     0K / 3.6G (0%) on
   2 host02          cluster_a   0       0 / 200 (0%)     0K / 3.6G (0%) on
   3 host03          cluster_b   0       0 / 200 (0%)     0K / 3.6G (0%) on    

$ onecluster show cluster_a
CLUSTER TEMPLATE
QOS="GOLD"

$ onecluster show cluster_b
CLUSTER TEMPLATE
QOS="SILVER"

You can now use these expressions:

SCHED_REQUIREMENTS = "QOS = GOLD"

SCHED_REQUIREMENTS = "QOS != GOLD & HYPERVISOR = kvm"

If you use the ruby, java or xml-rpc APIs you will be familiar with the XML representation of the resources. The variable names used in rank and requirements expressions can be child elements of HOST, HOST/HOST_SHARE or HOST/TEMPLATE. From now on, you can also use XPath to have more control over the element used:

SCHED_RANK="/HOST/HOST_SHARE/FREE_CPU"
SCHED_REQUIREMENTS="/HOST/TEMPLATE/CUSTOM_VAR != 5"

Scheduler decisions explained

By default, regular users can’t see the Hosts or open the Scheduler log file, and when their VMs can’t be deployed it may look like something is broken. In the next version, the scheduler will add a message to the VM templates to let users know if there are any problems:

$ onevm show 4
USER TEMPLATE
SCHED_MESSAGE="Wed Feb 20 11:43:55 2013 : No hosts enabled to run VMs"

$ onevm show 5
USER TEMPLATE
SCHED_MESSAGE="Wed Feb 20 11:52:11 2013 : No host meets the SCHED_REQUIREMENTS expression"
SCHED_REQUIREMENTS="FREE_CPU > 100 & FREE_CPU < 50"

Basic affinity

There is a new special variable that provides basic VM affinity functionality. Let’s see a sample use case: we want to create two identical VMs, and they should run on the same Host. In OpenNebula 4.0 you can create VMs directly on hold, so the scheduler won’t deploy them until you decide to release them:

$ onetemplate instantiate 0 --multiple 2 --hold
VM ID: 2
VM ID: 3

Now that we have the IDs, we can update one of the VM’s scheduler requirements.

$ onevm update 3
SCHED_REQUIREMENTS="CURRENT_VMS = 2"

$ onevm release 2,3

The scheduler will deploy first VM 2, and in the following cycle VM 3 in the same Host. This, of course, has some limitations because the scheduler will treat each VM individually, instead of as a group. If you need more advanced VM group management, give a try to the AppFlow component.

As always, we welcome any feedback. In fact, most of these changes are requests made by the community, I invite you to join our mailing lists and our development portal if you haven’t yet.

OpenNebula at LinuxCon Europe 2012

Last Monday we were at LinuxCon Europe, held in the beautiful city of Barcelona. Rubén gave a talk about building IaaS clouds and the art of virtual machine management, while he created a small OpenNebula private cloud in his laptop from scratch. He even had time to import a couple of images from the Marketplace, and boot them.

We would like to thank the Linux Foundation for the invitation to participate in this event, giving us the opportunity to chat with some of our users. We also had the chance to talk about the future of the open cloud with our beautiful open source sisters. What sisters? you may ask. Well, this is how Mårten Mickos referred in his keynote to the main 4 open source cloud technologies Eucalyptus, CloudStack, OpenStack, and OpenNebula in reply to VMware, and I hope the term catches on.

Here are the slides from the talk:

OpenNebula at CloudOpen 2012

Yesterday we gave a presentation at CloudOpen, an event co-located with LinuxCon in San Diego, US. After a demo of the different web and cloud interfaces that OpenNebula offers, we talked about the advanced features that allow the creation of complex scenarios, and about OpenNebula’s unique capabilities to be customized to the cloud provider’s specific needs.

It was great to finally meet in person some users and contributors from our community. Thanks to the Linux Foundation for this great event.

The slides are available at slideshare:

OpenNebula 3.6 Sunstone Screenshots

We already posted the main features of OpenNebula 3.6 Beta, which are of course fully supported by Sunstone. But we have been working also on the Sunstone visual appeal, and we will keep polishing the interface for the final release. Here are some preview screenshots:

New Dashboard

Similar dashboard for Clusters

Marketplace Integration

Host Monitorization Graphs

User Quota Management

You can request an account in our Demo Cloud and enjoy them, stay tuned for the final release!

OpenNebula Demo Cloud Updated to 3.6 Beta

The OpenNebula Cloud offers a virtual computing environment accessible through two different remote cloud interfaces, OCCI and EC2, and two different web interfaces: Sunstone for cloud administrators, and SelfService for cloud consumers. These interfaces access the same infrastructure, i.e. resources created by any of the mentioned methods will be instantly available on the others. For instance, you can create a VM with the OCCI interface, monitor it with the EC2 interface, and shut it down using the OpenNebula Sunstone web interface.

This Cloud has been migrated to the latest OpenNebula 3.6 Beta. If you have an account you can still use your old username and password. If not, request a new account and check out the upcoming OpenNebula 3.6 features. These interfaces show you a limited view of the Cloud, as you will not be able to manage certain system resources such as ACL rules, groups or users; nor infrastructure resources such as hosts, clusters and datastores.

Keep in mind that this is a demo cloud, and the operations you can perform will result on virtual networks and machines resource creations, but no real action whatsoever will be performed. This means that there will be the illusion that a VM is created, but in fact it won’t be running anywhere.

OpenNebula at FOSDEM 2012

This weekend we were at FOSDEM giving a presentation about OpenNebula development, and how to integrate it with external technologies; you can get the slides in our community page. It was a great opportunity to get feedback from the community, and to meet with the people behind the projects we collaborate with, DeltacloudCompatibleOne, Xen Cloud Platform, ….

We had a great time, and we are already looking forward to next year’s event!

Thanks to @amiatylabs for the pic.