neutron dhcp高可用实现

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

neutron dhcp高可用实现_第1张图片

图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高可用实现_第2张图片

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

neutron dhcp高可用实现_第3张图片

neutron dhcp高可用实现_第4张图片

remove_networks_from_down_agents主要完成了以下功能:

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

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

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

_schedule_network的实现细节:

neutron dhcp高可用实现_第5张图片

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

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


你可能感兴趣的:(openstack,neutron,openstack,neutron)