一种基于两级转发的网络流量线程级动态负载均衡方法及系统与流程

文档序号:11234856阅读:750来源:国知局
一种基于两级转发的网络流量线程级动态负载均衡方法及系统与流程

本发明涉及一种网络流量线程级动态负载均衡方法及系统,具体涉及一种基于两级转发的网络流量线程级动态负载均衡方法及系统。



背景技术:

在网络流量监控系统中,服务器集群需要获取网络上的流量,并对其进行快速的分析和监测。在这种应用场景下,发送到每一个服务器上的流量必须保证同源同宿,即同一对源ip地址和目的ip地址需要送到同一台服务器上。

目前的方法大多采用一级网络转发设备进行静态调度,选用的网络设备通常为交换机或负载均衡设备。这类设备根据流量的源ip地址和目的ip地址,计算出hash值,根据hash值在设备上选择一个端口转发出去。服务器通过网络接口卡接收分配的流量,在网络接口卡上,再计算一遍hash值,根据hash值选取一个cpu核对流量进行处理。

然而,在实际应用场景中,服务器各个核之间的负载的大幅波动时有发生,可能导致一部分cpu核负载过高,而此时基于静态的流量调度设备仍然将流量转发至高负载服务器,在服务器上,流量仍然会发给负载高的cpu核,导致流量丢失。因此,必须根据服务器各个核的负载状态进行动态负载均衡。现有的二级交换机只能根据mac地址将流量转发到某台服务器,无法进行线程级的调度。

同时,在动态调度过程中,为了保证流量同源同宿,需要采用支持大容量流表的负载均衡设备。现有的交换机不支持大容量流表,而一般的负载均衡设备端口数量不能满足大型网络流量处理集群的要求。因此基于一级网络转发设备的静态流量调度系统无法适用于大型网络流量监控系统。

鉴于以上问题,需要基于两级转发的网络流量线程级动态负载均衡方法及系统,来改善网络流量处理集群的性能。



技术实现要素:

本发明提出了一种基于两级转发的网络流量线程级动态负载均衡方法及系统,目的是结合动态负载均衡设备和二层交换设备,实现服务器集群的状态采集和监控,并据此实现服务器集群的动态负载调度。

本发明是通过下述技术方案实现的:

所述方法包括一种基于mac地址的cpu线程标记方法、基于cpu核的负载采集和调度控制器、基于两级转发设备的流量转发网络。

其中,基于mac地址的cpu线程级标记方法在mac地址中选取一段作为cpu核的序号,序号标记的长度和个数可以根据组网拓扑灵活定义。

基于cpu核的负载采集和权重计算控制器通过在服务器上部署采集agent,采集每个cpu核的利用率及相应的网卡内存队列的利用率,通过加权平均计算出每个cpu核的负载,按照与负载成反比的方法为每一个cpu核分配调度权重。

调度权重下发到两级转发设备的第一级,第一级转发设备需要实时跟踪流量中的流表,根据收到的权重,为新建流分配目的cpu,并将cpu所属的服务器序号与cpu核序号分别填写在输出流量的mac地址中。而对于当前已经存在的流,按照上一次转发的目的cpu核进行转发,保证同源同宿。

第二级转发设备通常是交换机,根据mac地址中的服务器序号将流量转发到目的端口。

服务器的网络接口卡根据mac地址中的cpu核序号将流量转发到目的cpu。

所述方法实现服务器集群监控调度的主要工作流程是:

步骤1:系统初始化阶段,初始化各状态监控agent、状态采集周期、统计分析配置、调度算法配置、策略配置接口等系统参数和模块。之后,状态监控agent开始监控运行状态并等待控制器主机采集模块的采集请求,控制器主机开始运行并在每个状态采集周期触发采集模块。初始调度权重为各个cpu核平均接收流量。

步骤2:当到达状态采集周期,控制器采集模块初始化若干状态采集实例,每个实例独立向对应服务器上的agent请求状态监控结果,从而实现集群中各服务器各个cpu核运行状态的采集,同时将采集结果转译成状态消息,通过内存队列提交给计算模块;

步骤3:控制器计算模块的统计分析子模块根据统计分析配置对状态消息做初步的统计分析产生预处理结果,主要是根据cpu核利用率和网卡各个环的内存利用率计算得到每个cpu核的负载,计算公式如下:

li=kbi+(1-k)ci

其中,li是第i个核的负载,bi是对应的网卡环内存利用率,ci是第i个cpu核利用率,k是0~1之间的系数。

预处理后的负载提交给调度算法子模块,同时定期负责状态消息的管理维护,例如将状态消息更新至管理配置数据库并定期呈现给管理员。

步骤4:控制器计算模块的调度算法子模块负责根据状态消息的预处理结果,以及所配置的调度算法,生成各个cpu核的权重,并将各个cpu核的权重通过内存队列提交给执行模块;

其中:wi(k+1)是第i个cpu核在第k+1个采集周期的权重,wi(k)是第i个cpu核当前的权重,li是第i个核的负载,是所有核负载的平均值,∑li是所有核负载的和。

步骤5:执行模块通过策略配置接口将各个cpu核的权重下发到第一级转发设备,第一级转发设备根据接收的各个cpu核的权重,对新建流量按照新权重进行分发,给权重高的cpu核分发更多流量,给权重低的cpu核分配较少流量。回到步骤2,继续等待下一状态采集周期到达。

本发明的有益效果是:

提出了一种基于两级转发的网络流量线程级动态负载均衡方法及系统,改善了服务器集群的服务器利用率核拥塞率;解决了系统耦合程度高的问题,实现了第一服务器的集群的可管控性、提高了第二调度的效能(例如集群整体丢包率)。

通过实测数据显示,当使用集群整体丢包率指标体现集群运行效能时,本发明所述方法的丢包率降低(优化)幅度为30%左右。

附图说明

图1是本发明中服务器集群监控调度控制器系统的结构示意图。

图2是本发明中服务器集群监控调度控制器方法的工作流程图。

图3为mac地址示意图。

具体实施方式

下面结合附图和实施例对本发明所述方法进行详细说明。

如图1所示,本发明所述系统由采集模块108、计算模块104、执行模块102和状态监控agent109组成。采集模块、计算模块、执行模块运行在独立的控制器主机101上,模块间通过内存队列103、107通信。

如图2所示,本发明所述方法在本实施例中的工作流程是:

步骤201、202:系统初始化阶段,初始化各状态状态采集周期、统计分析配置、调度算法配置,以及监控agent109、策略配置接口113等系统参数和模块。之后,状态监控agent109开始监控运行状态并等待控制器主机101采集模块108的采集请求,控制器主机开始运行并在每个状态采集周期触发采集模块。

步骤203、204:当到达状态采集周期,采集模块初始化若干状态采集实例,每个实例独立向对应服务器上的agent请求状态监控结果,从而实现集群110中各服务器运行状态的采集,同时将采集结果转译成状态消息,通过内存队列107提交给计算模块;

步骤205:计算模块的统计分析子模块106根据统计分析配置对状态消息做初步的统计分析产生预处理结果,并将预处理结果提交给调度算法子模块,同时定期负责状态消息的管理维护,例如将状态消息更新至管理配置数据库并定期呈现给管理员;

步骤206:计算模块的调度算法子模块105负责根据状态消息的预处理结果,以及所配置的调度算法,例如pick-kx算法,生成调度权重,并将调度权重通过内存队列103提交给执行模块;

步骤207:执行模块通过策略配置接口113将调度权重下发到第一级负载分发设备111,例如分流交换机等。

步骤208:第一级负载分发设备接收到调度权重,对新建流量按照各个cpu核的权重进行流量分发,给权重大的cpu分配更多流量。对于当前已经存在的流,按照其上一个包转发的目的进行流量分发,保证同源同宿。转发时,将目的服务器的编号和目的cpu核的编号按照预先约定的格式,填写在输出流量的mac地址中,如图3所示。

步骤209:第二级转发设备根据mac地址中的服务器编号将流量转发到目的端口。

步骤210:服务器网络接口卡根据mac地址中的cpu核编号将流量转发到目的cpu。

回到步骤202,继续等待下一状态采集周期到达。

以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1