SchedulerImplementation
调度器实现
关于此主题的实时笔记可以在这里获取: http://etherpad.openstack.org/Scheduler
用户发起构建新的切片/实例/虚拟机请求。
在数千个潜在节点中,我们如何决定将它放置在哪里?
确定影响决策的因素,例如
- 定性适用性度量(硬性规则)
- 它是否“活跃”(节点可能具有某种状态(“活跃”、“维护”等)?)
- 硬件是否是当前版本或正在逐步淘汰?
- 它能放得下吗?(一个 16 GB 的切片无法放置在只有 256 MB 可用空间的节点上)
- 定量适用性(权重)
- 状态(可能有更多状态可用于新的虚拟机,但有些状态可能比其他状态更受欢迎(例如,应优先选择“活跃”服务器而不是“备用”服务器,但必要时,“备用”服务器也是合适的))
- 服务器在执行其他任务(例如构建虚拟机或清理旧虚拟机)时有多忙?
- 用户是否在同一集群中有其他虚拟机(不是硬性规则,因为我们只有这么多集群)
- 用户是否在同一节点上有其他虚拟机(不是硬性规则,因为我们只有这么多节点)
- 节点是否已经缓存了磁盘镜像的副本?
我们需要“最佳匹配”、“足够好”还是“还不错”?
讨论包括拍卖和“去获取它”以及想法。
- 主机仅在有效候选人时响应
- 然后最不忙的获胜
- 在启动队列中,就像硬币分类器(更复杂)
- 最先响应的获胜,除非很大,然后最不忙的获胜
- 主机智能更好,因为它具有可扩展性,更高级别的智能则没有
- 可插拔
当前 Ozone 实现的服务器最佳匹配 (SBM)
- 硬性规则
- 软性规则
- 最佳加权获胜