Neutron DHCP Agents 可用区感知¶
在需要高可用性的大型部署中,至关重要的是确保网络代理,特别是本文档中的 DHCP 代理,运行在不同的可用区。
Nova AZ 与 Neutron AZ 不同¶
从逻辑上讲,AZ 在 Nova 和 Neutron 之间是相同的概念,但从功能上讲,它们没有任何关联。这意味着你在 Nova 中定义的 AZ 不会影响 Neutron。
默认情况下,BaseWeightScheduler 会独立于相关的 AZ 在 DHCP Agents 上调度网络。即使你为网络设置了 AZ 提示,调度器也会选择处理网络最少的代理来满足 dhcp_agents_per_network 要求。
例如,如果你配置 dhcp_agents_per_network = 2 并在 AZ1 中部署 2 个代理,在 AZ2 中部署 2 个代理,调度器可能会将第一个网络 (net1) 调度到 AZ1 中的两个 DHCP 代理,并将第二个网络调度到 AZ2 中的代理。
这种情况不可取,因为如果 AZ1 中出现问题,网络 net1 可能会无法访问。
AZAwareWeightScheduler¶
Neutron 提供了一种解决方案,使调度器更好地理解 AZ。为此,将 Neutron 配置为使用 AZAwareWeightScheduler。
network_scheduler_driver = neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler
dhcp_load_type = networks
现在,调度器理解 AZ 了。
下一步是确保所有网络都调度到两个 AZ 上。将 default_availability_zones 设置为包含两个 AZ。
default_availability_zones = AZ1, AZ2
也可以通过设置提示来为网络添加更精细的控制
例如,如果你希望网络调度到特定区域,比如 AZ3
openstack network create --availability-zone-hint AZ3
结论¶
总而言之,配置 Neutron 以使其代理(特别是本文档中的 DHCP 代理)感知 AZ 相对简单。它只需要最少且不过多的更改,但可以显著提高环境的健壮性和高可用性。