Modifying OpenNebula codes

470 Views Asked by At

I would like to study resource allocation and management in a cloud environment and the platform that I am looking at is OpenNebula. If I would like to implement my own algorithms for load balancing, vm migration/vm assignment, which part of OpenNebula should I modify?

What I would like to do is automate tasks that will be applied to this scenario:

  1. detect overloaded hosts
  2. select a vm to be migrated)
  3. select a host to which the vm will be migrated.

If you can suggest other tools to do this, I will consider it as well. I've already read some materials and a book about OpenNebula but it was all about using the software and nothing about customization / modification is mentioned.

What's the right direction to get started?

2

There are 2 best solutions below

0
On

OpenNebula has two main daemons, oned and mm_sched. The scheduler mm_sched talks to oned through the xml-rpc api, take a look at the architecture here.

One option is to create your own new scheduler, using the ruby or java bindings (or any language if you use xml-rpc directly).

The other option is to adapt the existing scheduler. All the code is in src/scheduler, but be warned that it is not one the the most straightforward parts of the code.

0
On

The best way to do what you want is to take the hypervisor as the hard worker. In default you can use the vmware (Esxi) solution. The vmware hypervisor solution is responsible for load balancing virtual machines. That is to say. You can divide the problem as if they were modules. The hypervisor is responsible for everything related to load balancing, etc etc (hard work), while OpenNebula use it only as Front-End, it is only responsible for telling ESXi through the APIs (vCenter) that you want (Whether VM, virtual network, etc etc). In other words. Do not overload OpenNebula with tasks that the hypervisor would perform in a more efficient way.