Neutron L3 auto Reschedule VRouter feature

在Havana、icehouse版本的生产环境部署中,常常会启用一个外部cron job去监控是否存在down掉的L3,如果存在则将此L3上所有绑定的VRouter重新绑定到其他L3上。

这个feature现在被Kevin Benton写成了buildin版本,代码如下:

https://review.openstack.org/#/c/110893/16

最开始的代码存在以下bug,现在已经修复了:

https://bugs.launchpad.net/neutron/+bug/1359460

简单测试了一下这个feature, 发现触发L3 Reschedule 的时间大概是两倍的agent_down_time, 默认的agent_down_time为75秒,所以从L3 agent down掉到开始reschedule至少需要150秒。

reschedule过程所需要的时间是和虚拟路由器的个数有关。所以总共的traffic downtime为150 + reschedule VRouter的时间。

我的测试环境是devstack搭建的两个节点,L3 agent分别部署在两个节点上:

kill掉第二个节点的L3:

[email protected]:/opt/stack/neutron# ps axu |  grep l3

stack     3750  0.1  0.3  32620 26332 pts/5    S+   05:58   0:01 python /usr/local/bin/neutron-l3-agent --config-file /etc/neutron/neutron.conf --config-file=/etc/neutron/l3_agent.ini --config-file /etc/neutron/fwaas_driver.ini

root      7237  0.0  0.0   4208   828 pts/12   R+   06:08   0:00 grep --color=auto l3

[email protected]:/opt/stack/neutron# kill -9 3750 | date

Wed Aug 27 06:08:41 UTC 2014

大约150s后,发生了Reschedule:

[email protected]:/opt/stack/neutron$ tail -f  /opt/stack/logs/screen/screen-q-svc.log | grep "Rescheduling router"

2014-08-27 06:11:14.713 WARNING neutron.db.l3_agentschedulers_db [-] Rescheduling router 42265639-d335-488c-af40-64a698c2cae5 from agent d6fc8003-59bd-4a68-a36b-8e36872df8cd because the agent did not report to the server in the last 150 seconds.

2014-08-27 06:11:14.782 WARNING neutron.db.l3_agentschedulers_db [-] Rescheduling router 893e7ce6-d838-444b-a03c-831cabdb046a from agent d6fc8003-59bd-4a68-a36b-8e36872df8cd because the agent did not report to the server in the last 150 seconds.

之后可以看到VRouter的namespace出现在了第一个节点上,接口也被正确配置了,虚机恢复了正常通信。

使用这个feature需要注意的地方:

1. 注意会有至少150s的downtime。VRouter如果很多的话,downtime会更长。

2. 触发Reschedule的条件其实应该是Node2的namespace不能正常工作了,而不是node2的neutron-l3-agent,但目前neutron不能判断Node2的namespace不能工作。如果出现了namespace可以正常工作,但neutron-l3-agent死掉的情况,就会影响虚机通信。所以我们需要对neutron-l3-agent进行监控,neutron-l3-agent一旦down掉就把它restart。这样只有再neutron-l3-agent不能restart的情况下才会触发Reschedule,一般这种情况是OS也出问题了。

总的来说这个feature只是一个过渡的feature, L3用VRRP做HA才能将downtime降到可接受范围。不过L3 VRRP的feature和DVR一样存在和高级service兼容的问题,所以目前这个feature还是有价值的。

时间: 2024-10-16 08:04:58

Neutron L3 auto Reschedule VRouter feature的相关文章

openstack neutron L3 HA

作者:Liping Mao  发表于:2014-08-20 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 最近Assaf Muller写了一篇关于Neutron L3 HA的文章很不错. 建议看原文,地址如下: http://assafmuller.wordpress.com/category/ml2/ 大致翻译如下: L3 Agent Low Availability(L3 agent的低可用性) 目前,在Openstack中,你只能用多个网络节点达到

OpenStack Neutron L3层高可靠

英文地址:http://assafmuller.com/2014/08/16/layer-3-high-availability/ L3层Agent的低可靠解决方案 当前,你可以通过多网络节点的方式解决负载均衡,但是这并非高可靠和冗余的解决方案.假设你有三个网络节点,创建新的路由,会自动的规划和分布在这三个网络节点上.但是,如果一个节点坏掉,所有路由将无法提供服务,路由转发也无法正常进行.Neutron,在IceHouse版本中,没有提供任何内置的解决方案. DHCP Agent的高可靠的变通之

理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)

本系列会分析OpenStack 的高可用性(HA)解决方案: (1)概述 (TBD,写完整个系列在回来写这块) (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)Neutron L3 Agent HA - DVR (分布式虚机路由器) (4)TBD 1. 基础知识 1.1 虚拟路由冗余协议 - VRRP 1.1.1 概念 路由器是整个网络的核心.一个网络内的所有主机往往都设置一条缺省路由,这样,主机发出的目的地址不在本网段的报文将被通过缺省路由发往路由器,从

Neutron - L3 HA VRRP配置

Juno版本的l3 ha采用的是keepalived这个工具,其内部实现了vrrp协议.先来介绍下vrrp: VRRP简介 VRRP是一种路由容错协议,也可以叫做备份路由协议.一个局域网络内的所有主机都设置缺省路由,当网内主机发出的目的地址不在本网段时,报文将被通过缺省路由发往外部路由器,从而实现了主机与外部网络的通信.当缺省路由器down掉(即端口关闭)之后,内部主机将无法与外部通信,如果路由器设置了VRRP时,那么这时,虚拟路由将启用备份路由器,从而实现全网通信.(选自百度百科:虚拟路由冗余

Neutron 理解 (6): Neutron 是怎么实现虚拟三层网络的 [How Neutron implements virtual L3 network]

学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7)Neutron LBaas Neutron 对虚拟三层网络的实现是通过其 L3 Agent (ne

Ubuntu16.10安装Ocata之4:Neutron

1.创建neutorn数据库 [email protected]:~/ocata# mysql -uroot -p -e "CREATE DATABASE neutron" Enter password: [email protected]:~/ocata# mysql -uroot -p -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'zoomtech'"

OpenStack 学习笔记(六):OpenStack neutron服务搭建

--先决条件 1.)创建数据库 MariaDB [(none)]> CREATE DATABASE neutron; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)

Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]

学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron L3 agent (5)TBD 目前,OpenStack Neutron 支持使用两种隧道网络技术 通用路由封装(GRE) 和 VxLAN 来实现虚拟的二层网络.这两种技术大致看起来非常相似,都是需要使用 OpenStack 在计算和网络节点上建立隧道

openstack M版安装 network(neutron)服务篇

安装配置network(neutron) 服务 Mitaka版本网络有两个选择,Provider network 和Self-service network,这里我们选择第二种. controller 节点 一.创建数据库 [[email protected] ~]# mysql -u root -p >>CREATE DATABASE neutron; >>GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost'   I