1 配置
1.1 新节点
在新的节点上安装dhcp agent,例如这次在计算节点上安装dhcp agent,执行如下:
apt-get install neutron-dhcp-agent
修改配置文件: /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
然后重启如下的服务:
service neutron-dhcp-agent restart
1.2 控制节点
修改配置文件:/etc/neutron/neutron.conf
[DEFAULT]
dhcp_agents_per_network = 2 (每个网络会关联两个DHCP Agent)
然后重启如下的服务:
service neutron-server restart
1.3 网络&计算节点
保持不变。
1.4 配置后结果
从上图可以看到,在计算节点也增加了一个dhcp agent。
2 实验
先来创建一个租户网络:
查看该网络net1关联了哪些DHCP Agent,如下图所示:
可以看到创建的网络关联到了2个DHCP Agent(和我们配置的数量是一致的)。
查看某个DHCP Agent包含了哪些网络,如下图所示:
Show详细的dhcp agent信息:
查看dhcp namespace信息如下:
可以看到,两个节点上的dhcp namespace中分配的接口IP地址,MAC地址都是不同的。
我们再来看下两个节点接收到的dhcp报文信息,如下:
上图是在控制节点上接收的dhcp报文信息,有完整的交互过程。
上图为在计算节点接收到的dhcp报文信息,可以看出vm都向这两个dhcp server发送了dhcp广播请求报文,并且两个dhcp server都给VM回应了Offer报文。但是vm最终选择了在控制节点上的dhcp server分配的IP地址。
手动添加dhcp agent到某个网络的方法如下:
手动将dhcp agent移出某个网络的方法如下:
禁用dhcp agent的方法如下:
禁用dhcp agent之后,之前分配的资源依然保留着,因此需要删除dhcp agent才能释放资源,如下所示:
重启dhcp agent进程后,又会重新出现。
首先在控制节点上禁用dhcp agent,如下所示:
这个时候在vm再重新发起dhcp请求,看看在哪个dhcp agent会处理。如下图所示,计算节点上的dhcp server完成了整个dhcp的流程:
进入到dnsmasq进程的配置文件,两个节点的配置信息都是一样的: