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:
- detect overloaded hosts
- select a vm to be migrated)
- 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?
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.