Neutron-server根据dhcp_agents_per_network配置,在多个dhcp-agent上启动dnsmasq进程。因此dhcp高可用的实现是通过部署多个dhcp-agent,使一个网络的dhcp服务由多个dhcp-agent支持。图1展示了一个network和dhcp-agent的关系图。

neutron dhcp高可用实现

图1 一个network可由多个agent为其实现dhcp功能

如果某些dhcp-agent停服,neutron-server还可以通过Dhcp迁移技术,保证可为网络服务的dhcp-agent数量。

该技术需要将allow_automatic_dhcp_failover设置为True。当dhcp-agentdown时,neutron-server可以分配其他正常的agent为网络提供服务。

它的实现方法是,neutron-server启动后会周期检查dhcp-agent的状态,当发现agent down时,则解除该agent与网络的关系,重新调度一个agent为网络提供服务。

neutron/db/agentschedulers.py

neutron dhcp高可用实现

remove_networks_from_down_agents函数被周期执行,该函数实现了dhcp迁移功能,其代码如下:

neutron dhcp高可用实现

neutron dhcp高可用实现

remove_networks_from_down_agents主要完成了以下功能:

①    从数据库中查询状态为down的dhcp-agent;

②    解除数据表中network和agent的关联关系;

③    为网络重新分配一个agent。

_schedule_network的实现细节:

neutron dhcp高可用实现

①  重新调度一个dhcp-agent,并在数据库中建立新agent和network的关联关系;

②  远程调用agent的network_create_end方法,通知agent处理新增加的网络,处理过程和subnet_create_end类似。


相关文章:

  • 2022-12-23
  • 2021-12-08
  • 2021-12-12
  • 2021-12-09
  • 2021-11-02
  • 2021-10-13
  • 2021-12-26
  • 2022-12-23
猜你喜欢
  • 2021-08-30
  • 2022-12-23
  • 2021-10-11
  • 2022-12-23
  • 2021-11-26
  • 2021-06-19
  • 2021-06-02
相关资源
相似解决方案