[Openstack] How to achieve HA and Scalability for Neutron

Jay Pipes jaypipes at gmail.com
Thu Dec 26 19:36:16 UTC 2013


On 12/26/2013 02:22 PM, Diego Parrilla SantamarĂ­a wrote:
> That's really a nice stuff...

So, to wrap up this particular mini-thread... here is the solution:

If on Grizzly or Havana and you don't want use Pacemaker (so that you 
can spread L3 agent load across multiple nodes):

1) Apply this patch to Neutron:

https://gist.github.com/jaypipes/8135839

2) Set the router_scheduler_driver in nova.conf to 
neutron.scheduler.l3_agent_scheduler.LeastUtilizedScheduler

Reference: 
https://github.com/stackforge/cookbook-openstack-network/blob/master/templates/default/neutron.conf.erb#L232

3) Put this script into a cron job:

https://github.com/stackforge/cookbook-openstack-network/blob/master/files/default/neutron-ha-tool.py

If you're on Icehouse, simply do:

1) Set the router_scheduler_driver in nova.conf to 
neutron.scheduler.l3_agent_scheduler.LeastRoutersScheduler

Reference: 
https://github.com/openstack/neutron/blob/master/etc/neutron.conf#L223

2) Put this script into a cron job:

https://github.com/stackforge/cookbook-openstack-network/blob/master/files/default/neutron-ha-tool.py

Best,
-jay

> On Thu, Dec 26, 2013 at 5:58 PM, Jay Pipes <jaypipes at gmail.com
> <mailto:jaypipes at gmail.com>> wrote:
>
>     On 12/26/2013 07:43 AM, skywalker.nick at gmail.com
>     <mailto:skywalker.nick at gmail.com> wrote:
>
>         Hi stackers,
>         I'm preparing for an OpenStack cloud in the production system. I've
>         achieved HA and load balancing for most of the components to a
>         certain
>         degree.
>         Finally I find it hard for Neutron to do such configuration. Are
>         there
>         any ways to run multiple l3-agents and dhcp-agents and cluster them
>         together?
>
>
>     Right, the Neutron L3 agent is the only OpenStack service that is
>     not stateless, and therefore you cannot use traditional
>     load-balancing across a set of identical nodes.
>
>     That said, there's nothing wrong with running multiple L3 nodes,
>     with routers for different tenants hosted on different L3 agents. We
>     do this successfully in our deployment using a custom Neutron
>     scheduler that my colleague Alan Meadows wrote [1] and a Python
>     script (also written by Alan) that runs in cron looking for failures
>     on an L3 agent and if found, moves the routers from the failed node
>     to a working one. [2]
>
>     The advantage to this vs. something like pacemaker is that you
>     spread the L3 agent workload across many nodes -- accomplishing a
>     sort of poor-man's load balancing/sharding for L3 agent requests.
>
>     Best,
>     -jay
>
>     [1] https://gist.github.com/__jaypipes/8135839
>     <https://gist.github.com/jaypipes/8135839>
>     [2]
>     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>
>
>
>     _________________________________________________
>     Mailing list:
>     http://lists.openstack.org/__cgi-bin/mailman/listinfo/__openstack
>     <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack>
>     Post to     : openstack at lists.openstack.org
>     <mailto:openstack at lists.openstack.org>
>     Unsubscribe :
>     http://lists.openstack.org/__cgi-bin/mailman/listinfo/__openstack
>     <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack>
>
>





More information about the Openstack mailing list