searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

用快照来加快OVS流表恢复

2023-07-19 08:48:20
35
0

Openstack虚拟网络是通过OpenvswitchOVS)组件承载进行流量转发和租户隔离的,随着租户和虚拟机数量的增加,OVS内的流表数量会线性增加。由于OVS的流表是保存在内存中,当物理服务器遇到下电维修检查、宕机复位等情况时,内存中的流表会丢失,需要控制面重建流表,当OVS内流表数增加到一定规模后,重建流表的时间相当长的,导致系统故障恢复的时间长(小时级)。在流表重建完成前,整个物理服务器上的虚拟网络不可用。

 

Openstack Vxlan组网模式下,虚拟网络是通过OpenvswitchOVS)组件承载进行流量转发和租户隔离的,随着租户和虚拟机数量的增加,OVS内的流表数量会线性增加。由于OVS的流表是保存在内存中,当物理服务器遇到下电维修检查、宕机复位等情况时,内存中的流表会丢失,需要控制面重建流表,当OVS内流表数增加到一定规模后,重建流表的时间相当长的,导致系统故障恢复的时间长(小时级)。在流表重建完成前,整个物理服务器上的虚拟网络不通,虽然可以通过部署高可用的方式缓解单个节点故障的影响,但是当多个高可用节点同时故障、复位时,仍然面临流表缺失、网络失效长时间无法恢复的问题。

原有方案:

增量场景:

1、业务组件(如创建虚机时)会将port插入ovsdb

2、OVS agent启动db monitor,监控ovsdb中port变化

3、OVS agent通过MQ向Neutron server请求port的详情

4、Neutron server查询数据库,并返回port的详情

5、OVS agent获取到详情,根据详情下发流表到OVS

全量场景

       当物理服务器重启后,OVS agent启动db monitor从ovsdb中监控到全量的port,当集群容量到达一定的规模,ovsdb中port个数超过4000时,流表个数达20000,对于每一个port都要重复执行增量场景中的2、3、4、5步。这一过程整体非常耗时(小时级)。

 

改进的方法:

增量场景:

       在现有方案基础上增加流表快照,如图二所示,当OVS agent通过ovs-ofctl命令下发流表时(图二步骤5),同时下发一条流表到快照中(上图步骤6),快照以文件形式存放到物理服务器的磁盘上。

量场景

       当物理服务器重启后,先执行第7步(如图二步骤7),加载流表快照文件,读取快照中的各个分区,将各分区中的流表批量下发到OVS中。将流表恢复到服务器重启之前的样子,可将网络流量迅速打通,实现秒级的流表恢复。流表恢复后,再执行原生逻辑中的2,3,4,5,6步,目的是同步在物理服务器重启过程中的增量数据,保证流表的完备性。

 

 

0条评论
0 / 1000
牛哥
8文章数
0粉丝数
牛哥
8 文章 | 0 粉丝
原创

用快照来加快OVS流表恢复

2023-07-19 08:48:20
35
0

Openstack虚拟网络是通过OpenvswitchOVS)组件承载进行流量转发和租户隔离的,随着租户和虚拟机数量的增加,OVS内的流表数量会线性增加。由于OVS的流表是保存在内存中,当物理服务器遇到下电维修检查、宕机复位等情况时,内存中的流表会丢失,需要控制面重建流表,当OVS内流表数增加到一定规模后,重建流表的时间相当长的,导致系统故障恢复的时间长(小时级)。在流表重建完成前,整个物理服务器上的虚拟网络不可用。

 

Openstack Vxlan组网模式下,虚拟网络是通过OpenvswitchOVS)组件承载进行流量转发和租户隔离的,随着租户和虚拟机数量的增加,OVS内的流表数量会线性增加。由于OVS的流表是保存在内存中,当物理服务器遇到下电维修检查、宕机复位等情况时,内存中的流表会丢失,需要控制面重建流表,当OVS内流表数增加到一定规模后,重建流表的时间相当长的,导致系统故障恢复的时间长(小时级)。在流表重建完成前,整个物理服务器上的虚拟网络不通,虽然可以通过部署高可用的方式缓解单个节点故障的影响,但是当多个高可用节点同时故障、复位时,仍然面临流表缺失、网络失效长时间无法恢复的问题。

原有方案:

增量场景:

1、业务组件(如创建虚机时)会将port插入ovsdb

2、OVS agent启动db monitor,监控ovsdb中port变化

3、OVS agent通过MQ向Neutron server请求port的详情

4、Neutron server查询数据库,并返回port的详情

5、OVS agent获取到详情,根据详情下发流表到OVS

全量场景

       当物理服务器重启后,OVS agent启动db monitor从ovsdb中监控到全量的port,当集群容量到达一定的规模,ovsdb中port个数超过4000时,流表个数达20000,对于每一个port都要重复执行增量场景中的2、3、4、5步。这一过程整体非常耗时(小时级)。

 

改进的方法:

增量场景:

       在现有方案基础上增加流表快照,如图二所示,当OVS agent通过ovs-ofctl命令下发流表时(图二步骤5),同时下发一条流表到快照中(上图步骤6),快照以文件形式存放到物理服务器的磁盘上。

量场景

       当物理服务器重启后,先执行第7步(如图二步骤7),加载流表快照文件,读取快照中的各个分区,将各分区中的流表批量下发到OVS中。将流表恢复到服务器重启之前的样子,可将网络流量迅速打通,实现秒级的流表恢复。流表恢复后,再执行原生逻辑中的2,3,4,5,6步,目的是同步在物理服务器重启过程中的增量数据,保证流表的完备性。

 

 

文章来自个人专栏
Openstack
8 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0