我想研究云环境中的资源分配和管理,我正在研究的平台是OpenNebula。如果我想实现自己的负载平衡算法、vm 迁移/vm 分配,我应该修改 OpenNebula 的哪个部分?
我想做的是自动化将应用于此场景的任务:
- 检测过载主机
- 选择要迁移的虚拟机)
- 选择要迁移虚拟机的主机。
如果您可以建议其他工具来执行此操作,我也会考虑。我已经阅读了一些关于 OpenNebula 的材料和一本书,但这都是关于使用软件的,没有提到任何关于定制/修改的内容。
开始的正确方向是什么?
我想研究云环境中的资源分配和管理,我正在研究的平台是OpenNebula。如果我想实现自己的负载平衡算法、vm 迁移/vm 分配,我应该修改 OpenNebula 的哪个部分?
我想做的是自动化将应用于此场景的任务:
如果您可以建议其他工具来执行此操作,我也会考虑。我已经阅读了一些关于 OpenNebula 的材料和一本书,但这都是关于使用软件的,没有提到任何关于定制/修改的内容。
开始的正确方向是什么?
OpenNebula 有两个主要的守护进程,oned 和 mm_sched。调度程序mm_sched 通过xml-rpc api与oned 对话,看看这里的架构。
一种选择是创建您自己的新调度程序,使用ruby 或java绑定(或任何语言,如果您直接使用 xml-rpc)。
另一种选择是调整现有的调度程序。所有代码都在src/scheduler中,但请注意它不是代码中最直接的部分之一。
做你想做的最好的方法是把虚拟机管理程序当作勤奋的工作人员。默认情况下,您可以使用 vmware (Esxi) 解决方案。vmware hypervisor 解决方案负责对虚拟机进行负载平衡。也就是说。您可以将问题划分为模块。虚拟机管理程序负责与负载平衡等相关的所有事情(艰苦的工作),而 OpenNebula 仅将其用作前端,它仅负责通过 API(vCenter)告诉 ESXi 您想要(无论是 VM、虚拟网络等)。换句话说。不要让管理程序以更有效的方式执行的任务使 OpenNebula 过载。