一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库流量负载均衡系统及方法与流程

2021-11-09 23:01:00 来源:中国专利 TAG:


1.本发明属于数据安全应用技术领域,涉及一种数据库流量负载均衡系统及方法。


背景技术:

2.在云环境下,数据库用户请求量大增,必然造成访问流量在服务器之间分布不均。目前通用的云环境下审计方法的基本原理都是通过在云数据库上部署流量采集模块,把云数据库流量回传到一个固定的数据库审计服务器,从而实现对云数据库的审计。
3.申请公布号cn108494868a、申请公布日2018年9月4日的中国发明专利申请《一种基于云业务系统下的负载均衡方法及系统》公开了一种基于云业务系统下的负载均衡方法,包括:客户端上传访问请求至负载均衡器,所述访问请求包括读取请求及写入请求;所述负载均衡器将访问请求分类转发至应用服务器中,其中,应用服务池中包括多组应用服务组,每一应用服务组内包括多个应用服务器;所述应用服务器根据访问请求读取数据库集群或者向数据库集群中写入数据。虽然上述技术方案用户所有的访问流量先经过高性能的负载均衡器进行分流,大大减轻云主机的压力,但是由于云数据库流量分布的不均衡,势必造成有的数据库审计系统探测器工作负载很高,而有的探测器则很空闲的问题。


技术实现要素:

4.本发明的目的在于如何解决由于云数据库流量分布的不均衡造成的数据库审计系统中探测器工作负载不均匀的技术问题。
5.本发明是通过以下技术方案解决上述技术问题的:
6.一种数据库流量负载均衡系统,包括:审计管理中心、探测器集群以及流量采集模块;
7.所述审计管理中心用于监测探测器集群中各个探测器的负载状态,并根据各个探测器的负载状态对流量采集模块的回传路径进行配置;
8.所述流量采集模块用于对采集的数据库流量进行封包,并根据配置的回传路径将流量封包回传到其他一个或多个探测器上;
9.所述探测器集群中各个探测器分别用于根据流量采集模块回传的对接收到的数据库流量封包进行解析。
10.本发明的技术方案通过识别出数据库审计系统中负载高的探测器,控制流量采集模块将云数据库流量按照数据库或者访问会话维度回传到一个或者多个空闲的探测器上,从而平衡数据库审计系统各个探测器上的流量分布,实现了对云数据库流量的负载均衡审计,提高了数据库审计系统的工作效率与稳定性。
11.作为本发明技术方案的进一步改进,所述审计管理中心包括:
12.负载状态监测模块,用于实时获取探测器集群中各个探测器的负载状态;
13.回传路径配置模块,用于当一探测器处于高负载状态时,根据该探测器上的数据库流量,对流量采集模块的回传路径进行配置。
14.作为本发明技术方案的进一步改进,所述负载状态监测模块包括:
15.信息获取单元,用于实时获取探测器集群中各探测器的cpu信息、内存信息或磁盘信息;
16.状态确定单元,用于当所述cpu信息、内存信息或磁盘信息中的一个或多个大于第一预设阈值时,确定该探测器处于高负载状态;当所述cpu信息、内存信息或磁盘信息中的一个或多个小于第二预设阈值时,确定该探测器处于空闲状态。
17.作为本发明技术方案的进一步改进,回传路径配置模块包括:
18.计算单元,用于根据历史数据获取各探测器上每个数据库的流量,并计算所有数据库流量的平均信息;
19.判断单元,用于判断处于高负载状态的探测器上的数据库流量是否大于所述平均信息;
20.配置单元,用于当处于高负载状态的探测器上的数据库流量小于所述平均信息时,将流量采集模块的回传路径配置为按照数据库维度进行回传;当处于高负载状态的探测器上的数据库流量大于或等于所述平均信息时,将流量采集模块的回传路径配置为按照会话维度进行回传。
21.作为本发明技术方案的进一步改进,所述审计管理中心还包括:web前端和java后端;所述web前端用于接收用户的输入指令,并将输出结果进行显示;所述java后端负责提供web接口、对于探测器进行管控及日志分析处理。
22.作为本发明技术方案的进一步改进,所述探测器集群与审计管理中心通过redis消息队列模式进行通信,探测器集群上报到审计管理中心的审计日志通过kafka转发。
23.一种应用于所述的数据库流量负载均衡系统的方法,获取探测器集群中的各探测器的负载状态;当一探测器处于高负载状态时,根据该探测器上的数据库流量,对流量采集模块的回传路径进行配置;基于配置的回传路径,由所述流量采集模块对数据库流量进行封包并将流量封包回传至其他一个或多个探测器上。
24.作为本发明技术方案的进一步改进,所述获取探测器集群中的各探测器的负载状态的步骤包括:
25.实时获取探测器集群中各探测器的cpu信息、内存信息或磁盘信息;
26.当所述cpu信息、内存信息或磁盘信息中的一个或多个大于第一预设阈值时,确定该探测器处于高负载状态;
27.当所述cpu信息、内存信息或磁盘信息中的一个或多个小于第二预设阈值时,确定该探测器处于空闲状态。
28.作为本发明技术方案的进一步改进,所述当一探测器处于高负载状态时,根据该探测器上的数据库流量,对流量采集模块的回传路径进行配置的步骤包括:
29.根据历史数据获取各探测器上每个数据库的流量,并计算所有数据库流量的平均信息;
30.判断处于高负载状态的探测器上的数据库流量是否大于所述平均信息;
31.当处于高负载状态的探测器上的数据库流量小于所述平均信息时,将流量采集模块的回传路径配置为按照数据库维度进行回传;
32.当处于高负载状态的探测器上的数据库流量大于或等于所述平均信息时,将流量
采集模块的回传路径配置为按照会话维度进行回传。
33.作为本发明技术方案的进一步改进,所述将流量采集模块的回传路径配置为按照会话维度进行回传的步骤包括:
34.根据四元组信息对访问数据库的会话进行区分,所述四元组信息包括:源ip、源端口、目的ip、目的端口;
35.分别获取各个会话的哈希值;
36.根据各个会话的哈希值分别确定各流量采集模块的回传路径。
37.本发明的优点在于:
38.本发明的数据库流量负载均衡系统及方法通过识别出数据库审计系统中负载高的探测器,控制流量采集模块将云数据库流量按照数据库或者访问会话维度回传到一个或者多个空闲的探测器上,从而平衡数据库审计系统各个探测器上的流量分布,实现了对云数据库流量的负载均衡审计,提高了数据库审计系统的工作效率与稳定性。
附图说明
39.图1本发明实施例一的一种数据库流量负载均衡系统的架构图;
40.图2本发明实施例二的一种数据库流量负载均衡方法的流程图;
41.图3本发明实施例二的一种数据库流量负载均衡方法的以系统发现探测器1为负载高并且发现探测2空闲为例的系统自动调整负载流程图。
具体实施方式
42.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
43.下面结合说明书附图以及具体的实施例对本发明的技术方案作进一步描述:
44.实施例一
45.如图1所示,一种数据库流量负载均衡系统,包括:审计管理中心、探测器集群、流量采集模块。所述的审计管理中心用于监测探测器集群中各个探测器的负载状态,并根据各个探测器的负载状态对流量采集模块的回传路径进行配置;本发明的审计管理中心可自动识别出负载高和空闲的探测器,无需人工介入判断,并从存储服务器中拉取所有云数据库的审计日志集中展示。所述探测器集群用于对采集的数据库流量封包进行解析;具体地,所述探测器集群中各探测器可根据流量采集模块回传的流量,解析出数据库会话流量中的登录信息、生成sql语句和结果集、上报探测器集群运行状态以及审计的各个数据库的流量大小信息等;所述登录信息包括:用户名、访问数据库、访问工具等;探测器集群运行状态包括:cpu、内存、磁盘信息等。所述流量采集模用于对采集的数据库流量进行封包,并根据配置的回传路径将流量封包回传到其他一个或多个探测器上。
46.本实施例中,审计管理中心通过分析探测器集群上报的系统状态,包括探测器cpu、内存、磁盘,以及审计的各个数据库流量大小等,识别出负载高的探测器。当发现某一个探测器的负载较高时,如果这个探测器审计的各个数据库流量比较小,那么可以修改流
量采集模块的回传配置,将一部分云数据库流量回传到其他空闲的探测器上;如果在这个探测器上,因为某个数据库流量非常大,而导致负载高,可以依据不同数据库访问会话(一组四元组信息确定一个会话:源ip 源端口 目的ip 目的端口)之间的无关性,配置采集模块,将这个数据库上的流量,以会话维度回传到多个空闲的数据库审计系统探测器上,使得数据库审计系统的各个探测器负载处于一个相对平衡的状态,并通过审计管理中心统一展示数据库审计日志,实现对云数据库流量的负载均衡审计。
47.具体地,所述审计管理中心包括:负载状态监测模块和回传路径配置模块,所述负载状态监测模块用于实时获取探测器集群中各个探测器的负载状态;所述回传路径配置模块用于当一探测器处于高负载状态时,根据该探测器上的数据库流量,对流量采集模块的回传路径进行配置。
48.所述负载状态监测模块包括:
49.信息获取单元,用于实时获取探测器集群中各探测器的cpu信息、内存信息或磁盘信息;
50.状态确定单元,用于当所述cpu信息、内存信息或磁盘信息中的一个或多个大于第一预设阈值时,确定该探测器处于高负载状态;当所述cpu信息、内存信息或磁盘信息中的一个或多个小于第二预设阈值时,确定该探测器处于空闲状态。
51.所述回传路径配置模块包括:
52.计算单元,用于根据历史数据获取各探测器上每个数据库的流量,并计算所有数据库流量的平均信息;
53.判断单元,用于判断处于高负载状态的探测器上的数据库流量是否大于所述平均信息;
54.配置单元,用于当处于高负载状态的探测器上的数据库流量小于所述平均信息时,将流量采集模块的回传路径配置为按照数据库维度进行回传;当处于高负载状态的探测器上的数据库流量大于或等于所述平均信息时,将流量采集模块的回传路径配置为按照会话维度进行回传。
55.所述审计管理中心还可以包括:web前端和java后端,所述web前端用于接收用户的输入指令,并将输出结果进行显示;所述java后端负责提供web接口、对于探测器进行管控及日志分析处理等。
56.所述web前端的功能包括:系统管理、三层关联、探测器管理、租户管理、策略管理、日志概览、审计日志、会话分析、报表管理、告警管理、转发日志等。
57.所述java后端的功能包括:系统管理、三层关联、探测器管理、租户管理、策略管理、日志概览、审计日志、会话分析、报表管理、告警管理、转发日志接口提供、策略下发、日志入库、日志分析、生成报表、告警推送、系统负载监测等。
58.探测器集群负责流量解析、协议解析、规则匹配、日志格式化吐出等;探测器端的功能包括:流量解析、数据库协议解析、数据库发现、规则匹配、敏感数据掩码、日志转发等。
59.探测器上报自身状态信息的json格式样例如下:
60.{"type":1012,"probeid":1,"cpu":60,"memory":40,"disk":20,"dbflow":[{"dbi d":1,"flow":1234},{"dbid":2,"flow":10982}]}。
[0061]
所述的流量采集模块负责采集流量并在云环境下、解析负载配置以及流量回传到
探测器集群。
[0062]
流量采集模块回传配置的json格式样例如下:
[0063]
{"type":1013,"probeid":1,"dragentid":12,"probelist":["172.12.0.12","172.16.0.13"]}。
[0064]
在具体应用中,流量采集模块可根据收到的probelist中ip的个数,决定回传全部流量到一个探测器,还是将流量以会话维度区分后回传给不同的探测器。当以会话维度流量回传时,可以通过对四元组信息(源ip 源端口 目的ip 目的端口)计算哈希值,从而保证将同一个会话的流量,一定会回传给同一个探测器。
[0065]
数据库审计系统以b/s的形式存在,探测器分布式部署,审计管理中心统一管控。探测器与审计管理中心通过redis(remote dictionary server,即远程字典服务)生产者/消费者模式进行通信,审计日志等通过kafka转发。整套工具基于c 、java、javascript、html等语言进行开发。通过服务器之间的隔离,达到低耦合的设计效果,降低复杂度。
[0066]
实施例二
[0067]
本发明还提供一种数据库流量负载均衡方法,所述方法包括:获取探测器集群中的各探测器的负载状态;当一探测器处于高负载状态时,根据该探测器上的数据库流量,对流量采集模块的回传路径进行配置;基于配置的回传路径,由所述流量采集模块对数据库流量进行封包并将流量封包回传至其他一个或多个探测器上。
[0068]
本实施例中,所述获取探测器集群中的各探测器的负载状态的步骤包括:实时获取探测器集群中各探测器的cpu信息、内存信息或磁盘信息;当所述cpu信息、内存信息或磁盘信息中的一个或多个大于第一预设阈值时,确定该探测器处于高负载状态;当所述cpu信息、内存信息或磁盘信息中的一个或多个小于第二预设阈值时,确定该探测器处于空闲状态。
[0069]
本实施例中,所述当一探测器处于高负载状态时,根据该探测器上的数据库流量,对流量采集模块的回传路径进行配置的步骤包括:
[0070]
根据历史数据获取各探测器上每个数据库的流量,并计算所有数据库流量的平均信息;
[0071]
判断处于高负载状态的探测器上的数据库流量是否大于所述平均信息;
[0072]
当处于高负载状态的探测器上的数据库流量小于所述平均信息时,将流量采集模块的回传路径配置为按照数据库维度进行回传;
[0073]
当处于高负载状态的探测器上的数据库流量大于或等于所述平均信息时,将流量采集模块的回传路径配置为按照会话维度进行回传。
[0074]
所述将流量采集模块的回传路径配置为按照会话维度进行回传的步骤包括:
[0075]
根据四元组信息对访问数据库的会话进行区分,所述四元组信息包括:源ip、源端口、目的ip、目的端口;
[0076]
分别获取各个会话的哈希值;
[0077]
根据各个会话的哈希值分别确定各流量采集模块的回传路径。
[0078]
下面结合图2对本实施例的数据库流量负载均衡方法做进一步详细说明。如图2所示,一种数据库流量负载均衡方法,包括以下步骤:
[0079]
1、审计管理中心发现负载高的探测器
[0080]
对于每个探测器,用户自定义系统性能、空闲阈值,包括cpu、内存、磁盘、流量等,审计管理中心实时解析各个探测器上报的json格式状态信息,获取探测器的实时cpu和内存使用状态,如果发现某个探测器的使用状态比设置的阈值高,则认定这个探测器处于高负载运行状态。
[0081]
例如:用户配置探测器1、探测器2:性能阈值为cpu使用率阈值90%、内存使用阈值90%,空闲阈值为cpu使用率50%、内存使用率50%。
[0082]
审计管理中心收到探测器1上报的json格式状态信息的内容如下:
[0083]
{“type”:1012,”probeid”:1,”cpu”:95,”memory”:98,”disk”:40,”dbflow”:[{“dbid”:1,”flow”:23}]};
[0084]
读取探测器1上报的json格式数据,发现cpu当前使用率95%(>90%)、内存当前使用率98%(>90%),都超过了用户配置的性能阈值,因此认定探测器1处于高负载状态。
[0085]
审计管理中心收到探测器2上报的json格式状态信息的内容如下:
[0086]
{“type”:1012,”probeid”:2,”cpu”:30,”memory”:20,”disk”:40,”dbflow”:[{“dbid”:2,”flow”:11}]};
[0087]
读取探测器2上报的json格式数据,发现cpu当前使用率30%(<50%)、内存当前使用率20%(<50%),均低于用户配置的空闲阈值,可以认定探测器2处于空闲状态。
[0088]
2、流量回传
[0089]
审计管理中心通过探测器上报的各个实时数据库流量信息,结合历史数据,计算出整个探测器集群审计的每个数据库的流量大小,以及所有数据库流量平均值。如果数据库流量低于平均值,认为是小流量数据库,反之则是大流量数据库。当发现某个探测器负载较高时,根据审计的数据库流量大小,选择数据库维度或者会话维度对流量进行均衡审计。
[0090]
例如,如图3所示,基于步骤1中的样例,审计管理中心发现探测器1处于高负载状态,而探测器2处于空闲状态,其中探测器1的ip地址为172.16.0.111,审计的数据库列表id为[1,2,3,4],探测器2的ip为172.16.0.112,审计的数据库列表id为[](为空),探测器3的ip为172.16.0.113,审计的数据库列表为[](为空)。
[0091]
2.1、数据库维度流量均衡
[0092]
探测器1的审计数据库列表为[1,2,3,4],审计管理中心结合历史数据,已经计算出每个数据库对应的平均流量值为[11,12,13,100]。探测器2没有关联审计数据库,所有数据库流量的平均大小为(11 12 13 100)/4=34。发现探测器1的大部分数据库流量都低于平均值,可以将探测器1的数据库1流量转给空闲的探测器2。json格式状态信息的内容如下:
[0093]
{“type”:1013,”probeid”:1,”dragentid”:1,”probelist”:[“172.16.0.112”]};
[0094]
流量采集模块收到json配置后,发现probelist中没有当前连接的探测器1的ip地址,会断开当前连接,改为连接探测器2的ip:172.16.0.112,从而将数据库1的流量回传给探测器2,现在探测器1的审计数据库列表变成[2,3,4],探测器2审计的数据库列表为[1],重复上面的步骤,直到探测器1处于正常负载。
[0095]
2.2、会话维度流量均衡
[0096]
结合步骤1、步骤2.1的相关内容,假定现在探测器1审计数据库列表为[4],探测器2审计数据库列表为空[1,2,3],探测器3审计数据库列表为[](为空),且探测器1处于高负
载状态,探测器2处于正常负载状态,探测器3是空闲状态。当前的流量平均值仍然是(11 12 13 100)/4=34,探测器1审计的数据库4是一个大流量数据库,可以将数据库4的流量按照会话维度做拆分,回传部分流量给探测器3。json格式状态信息的内容如下:
[0097]
{“type”:1013,”probeid”:1,”dragentid”:4,”probelist”:[“172.16.0.111”,”172.16.0.113”]};
[0098]
流量采集模块收到json配置后,发现probelist中有多个探测器ip地址,会分别同探测器1和探测器3建立连接,以备后面回传会话流量。可以通过四元组(源ip 源端口 目的ip 目的端口)来区分不同会话。对会话计算哈希值,然后把哈希值对回传探测器个数取余数,得到的结果就是回传探测器在probelist中的下标,会话字符串拼接方式只要可以保证一个会话的流量回传给同一个探测器即可。
[0099]
例如,有两个访问源分别是172.16.0.44:34216和172.16.0.134:45120,目的ip:port是172.16.0.215:3306,那么第一个会话字符串”172.16.0.44_34216_172.16.0.215_3306”,第二个会话字符串是”172.16.0.134_45120_172.16.0.215_3306”,分别对这两个字符串计算哈希值,假设得到21,30,然后对回传探测器个数取余数,得到21%2=1,30%2=0,probelist[0]=172.16.0.111,probelist[1]=172.16.0.113,即源访问172.16.0.44:34216的流量会回传给探测器3,源访问172.16.0.134:45120的流量会回传给探测器1。
[0100]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献