<p dir="ltr">Hi jay,</p>
<p dir="ltr">I’m reading the script and just found it also works for dhcp agent.</p>
<p dir="ltr">Thanks for your reply. So helpful.</p>
<p dir="ltr">Best regards,<br>
Nick Ma</p>
<p dir="ltr">2014-1-8 上午3:35于 "Jay Pipes" <<a href="mailto:jaypipes@gmail.com">jaypipes@gmail.com</a>>写道:<br>
><br>
> On Fri, 2014-01-03 at 18:33 +0800, Li Ma wrote:<br>
> > > Right, the Neutron L3 agent is the only OpenStack service that is<br>
> > > not stateless, and therefore you cannot use traditional<br>
> > > load-balancing across a set of identical nodes.<br>
> ><br>
> > Hi jay, how about dhcp-agent? I've went through the bps of neutron<br>
> > for icehouse release. There's no related topics on dhcp-agent.<br>
> ><br>
> > I wonder how to implement the same functionality of dhcp-agent.<br>
><br>
> Hi Li, sorry for the delayed response!<br>
><br>
> Technically, the DHCP agent itself does not maintain any state. Rather,<br>
> the DHCP agent ensures that a DHCP server (dnsmasq) is running in the<br>
> Linux network namespace and providing IP addresses in the tenant's<br>
> subnet to the VM's vNIC MAC addresses. The dnsmasq process, running in<br>
> the network namespace, *does* save state, though. Unless something has<br>
> changed recently, I believe the default behavior of Neutron is to start<br>
> a dnsmasq process within the tenant's network namespace on only *one*<br>
> DHCP agent.<br>
><br>
> However, it is definitely possible to instruct Neutron to place a<br>
> dnsmasq process on multiple nodes with a DHCP agent servicing the node.<br>
> In fact, in the Chef OpenStack Network cookbook [1] there is a tool<br>
> written by Alan Meadows called neutron-ha-tool.py [2] that contains code<br>
> [3] that queries Neutron for a list of DHCP agents, and then ensures<br>
> that all DHCP agents provide a dnsmasq process for all networks. Check<br>
> out the script and you'll see what I mean. We run it in a cron job and<br>
> it ensures that if a node running a DHCP agent goes down, that there are<br>
> other nodes providing the tenant subnet with DHCP servicing.<br>
><br>
> All the best,<br>
> -jay<br>
><br>
> [1] <a href="https://github.com/stackforge/cookbook-openstack-network">https://github.com/stackforge/cookbook-openstack-network</a><br>
> [2]<br>
> <a href="https://github.com/stackforge/cookbook-openstack-network/blob/master/files/default/neutron-ha-tool.py">https://github.com/stackforge/cookbook-openstack-network/blob/master/files/default/neutron-ha-tool.py</a><br>

> [3]<br>
> <a href="https://github.com/stackforge/cookbook-openstack-network/blob/master/files/default/neutron-ha-tool.py#L254">https://github.com/stackforge/cookbook-openstack-network/blob/master/files/default/neutron-ha-tool.py#L254</a><br>

><br>
><br>
</p>