DHCP 服务负载均衡调度器¶
Launchpad蓝图
https://blueprints.launchpad.net/neutron/+spec/dhcpservice-loadbalancing
问题描述¶
使用当前的 Agent 管理和调度器扩展,我们无法有效地分配 DHCP 命名空间,尤其是在有多个网络节点可用时。现有的调度器(Chance 调度器)无法根据 DHCP agent 的网络负载,在多个网络节点之间正确地负载均衡 DHCP 命名空间。
Chance 调度器会不均匀地调度 DHCP 命名空间,当创建大量命名空间时,这并不适用。Chance 调度器会将大约 90% 的 DHCP 命名空间调度到一个网络节点上,而剩余的 10% 的命名空间则分布在其余网络节点上。
此蓝图试图通过提出一个新的 DHCP agent 调度器来解决此问题,该调度器将根据 DHCP agent 的 DHCP 命名空间数量,在多个网络节点之间平均分配 DHCP 命名空间。
提议的变更¶
在 Neutron 服务器中,我们编写了一个 DHCP agent 调度器,它将根据 ‘neutron.conf’ 中的“network_scheduler_driver”配置,跟踪在网络节点上运行的 DHCP 服务。
只有当“network_scheduler_driver”参数设置为 LeastNetworksScheduler 时,才会触发 ‘LeastNetworksScheduler’ 类型的 DHCP 调度器。 此标志的默认值为 ‘ChanceScheduler’。
当创建新网络时,DHCP agent 调度器将获取托管网络数量最少的 dhcp agent。并将新创建的 DHCP 命名空间服务调度到这些负载最小的 DHCP agent 上。
这里的 dhcp agent 负载是根据 dhcp agent 上已经创建的 DHCP 命名空间数量来决定的。‘LeastNetworksScheduler’ 将返回 ‘dhcp_agents_per_network’ 配置参数中指定的,负载最少的 DHCP agent 数量。
在此实现中,DHCP 命名空间计数是基于从 DHCP agent 接收到的报告状态消息计算的。
数据模型影响¶
将在“Agents”表中添加一个名为“load”的新列。 此列包含基于托管在该 agent 上的 DHCP 命名空间数量的 Agent 负载。 该表将根据负载排序,并且负载最少的排名前 n 个 Agent 将被提供给调度器以托管 DHCP 命名空间。
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
IPv6 影响¶
无
其他部署者影响¶
可以通过设置标志 network_scheduler_driver = LeastNetworksScheduler 来启用此功能,该标志可以从 “neutron.conf” 中配置。 如果该标志设置为 ChanceScheduler,则不会执行任何此代码。
开发人员影响¶
无
社区影响¶
无
备选方案¶
无
实现¶
负责人¶
- 主要负责人
praveen-sm-kumar
- 其他贡献者
shiva-m
工作项¶
- 高级任务包括
重构 ChanceScheduler 的代码,并引入一个名为 LeastNetworksScheduler 的新类。 此活动包括将公共方法移动到名为 DHCPScheduler 的父类中,并在 ChanceScheduler 和 LeastNetworksScheduler 类中继承这些方法。
LeastNetworksScheduler 此类将具有获取托管网络数量最少的 dhcp agent 的实现。 随后,它将在这些负载最小的 DHCP agent 上调度相应的 DHCP 命名空间服务。
依赖项¶
将重用当前调度器类中的一些方法。
测试¶
代码将涵盖单元测试。
Tempest 测试¶
无
功能测试¶
将会添加。
API 测试¶
无
文档影响¶
需要增强当前文档,以添加特定于 DHCP 服务负载均衡调度器的内容。
用户文档¶
需要修改 Openstack 配置参考文档的调度器部分。
开发人员文档¶
无
参考资料¶
代码已提交进行审查,链接如下 https://review.openstack.org/#/c/137017