一种负载均衡器的透明代理方法及负载均衡系统与流程

文档序号:12132788阅读:634来源:国知局
一种负载均衡器的透明代理方法及负载均衡系统与流程

本发明涉及负载均衡技术,尤其涉及一种负载均衡器的透明代理方法及负载均衡系统。



背景技术:

为了横向扩展后端服务的能力,一般会将负载均衡器放置于多个后端服务器的前面,起到负载均衡的作用。但负载均衡一般为代理(proxy)的工作模式,使得后端服务获取的请求来源IP都是负载均衡器的IP,并不是真实的客户端IP。客户端IP是用户请求中的重要信息,例如在分析用户行为等业务中非常重要,所以需要提供透明代理功能,使得后端主机不做任何修改,即可获取客户端IP。

为了解决这个需求,目前有几种主流的解决手段:

1,NAT(Network Address Translation,网络地址转换)模式,通过负载均衡器做地址转换。这种模式的缺陷是,部署受到网络拓扑的限制,不能横向扩展,并且所有后端请求都要经过负载均衡器,使得后端服务器的性能受到限制。

2.DR(Direct Routing,直接路由)模式,通过更改目的MAC地址来实现地址转化。这种模式的缺陷是,负载均衡器需要和后端服务器在同一个二层网络上,同时后端服务器需要绑定虚拟IP(VIP),配置和部署十分不灵活。

3.FULL NAT(Full Network Address Translation,完全网络地址转换)模式,这种方式需要修改后端主机的Linux内核,将真实地址存放在socket中,并通过修改kernel函数来实现获取真实IP的目的。这种模式的缺陷是需要修改后端服务器的内核,使用范围受极大限制。



技术实现要素:

本发明解决的技术问题是针对现有技术的不足,提供一种负载均衡器的透明代理方法及负载均衡系统。

本发明解决上述技术问题的技术方案如下:一种基于软件定义网络的负载均衡器透明代理方法,包括:

步骤1、用软件定义的方式创建虚拟负载均衡器和虚拟路由器,并在客户端、虚拟负载均衡器、虚拟路由器和服务器之间构建通路;

步骤2、所述虚拟负载均衡器接收到客户端发送的请求数据包时,按照预设的负载均衡规则得到服务器的IP地址和端口,对所述请求数据包进行目的地址转换,将所述请求数据包发送到所述虚拟路由器;

步骤3、所述虚拟路由器对所述请求数据包进行目的地址转换,并对所述虚拟负载均衡器发起的连接做标记,将所述请求数据包发送到所述服务器;

步骤4、所述服务器对所述请求数据包进行处理并生成响应数据包,将所述响应数据包发送至所述虚拟路由器;

步骤5、所述虚拟路由器根据所述服务器发起的连接查找标记,根据所述标记对应的路由规则得到所述虚拟负载均衡器的IP地址和端口,对所述响应数据包进行源地址转换,将所述响应数据包发送至所述虚拟负载均衡器;

步骤6、所述虚拟负载均衡器对所述响应数据包进行源地址转换,将所述响应数据包发送至所述客户端。

本发明的有益效果是:

1、不需要修改服务器,用户可根据需要为服务器选用操作系统,使用方便;

2、基于软件定义网络(Software Defined Network,SDN)技术,用户能够随时创建虚拟负载均衡器,无需增加硬件,从而降低硬件成本;

3、虚拟负载均衡器不在服务器的默认路由线路上,能够减少网络数据的传输,同时可通过集群部署来水平拓展负载能力。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,步骤3中所述虚拟路由器对所述虚拟负载均衡器发起的连接做标记的具体方法为:所述虚拟路由器解析所述负载均衡器发送的请求数据包获取第一五元组,并对所述第一五元组进行标记,其中,所述第一五元组包括客户端IP地址、客户端端口、服务器IP地址、服务器端口和协议。

进一步,所述虚拟路由器根据所述服务器发起的连接查找标记的具体方法为:所述虚拟路由器解析所述服务器发送的响应数据包获取第二五元组,根据所述第二五元组查找满足预设条件的第一五元组,获取所述第一五元组的标记。

进一步,所述预设条件为所述第一五元组的源IP地址和源端口与所述第二五元组的目的IP地址和目的端口相同,第一五元组的目的IP地址和目的端口与第二五元组的源IP地址和源端口相同,以及第一五元组的协议类型与第二五元组的协议相同。

进一步,步骤5中所述路由规则为:当响应数据包的源IP地址是所述标记对应的服务器的IP地址时,将所述响应数据包发送至所述标记对应的负载均衡器。

本发明解决上述技术问题的另一种技术方案如下:一种负载均衡系统,包括虚拟负载均衡器和虚拟路由器;

虚拟负载均衡器,用于在接收到客户端发送的请求数据包时,按照预设的负载均衡规则得到服务器的IP地址和端口,对所述请求数据包进行目的地址转换,将所述请求数据包发送到虚拟路由器,还用于在接收到虚拟路由器发送的响应数据包时,对所述响应数据包进行源地址转换,将所述响应数据包发送至所述客户端;

虚拟路由器,用于对所述请求数据包进行目的地址转换,并对所述虚拟负载均衡器发起的连接做标记,将所述请求数据包发送到所述服务器,还用于根据服务器发起的连接查找标记,并根据所述标记对应的路由规则得到所述虚拟负载均衡器的IP地址和端口,对所述服务器发送的响应数据包进行源地址转换,将所述响应数据包发送至所述虚拟负载均衡器。

本发明的有益效果是:

1、不需要修改服务器,用户可根据需要为服务器选用操作系统,使用方便;

2、基于软件定义网络(Software Defined Network,SDN)技术,用户能够随时创建虚拟负载均衡器,无需增加硬件,从而降低硬件成本;

3、虚拟负载均衡器不在服务器的默认路由线路上,能够减少网络数据的传输,同时可通过集群部署来水平拓展负载能力。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,所述虚拟路由器用于解析所述负载均衡器发送的请求数据包获取第一五元组,并对所述第一五元组进行标记,其中,所述第一五元组包括客户端IP地址、客户端端口、服务器IP地址、服务器端口和协议。

进一步,所述虚拟路由器用于解析所述服务器发送的响应数据包获取第二五元组,根据所述第二五元组查找满足预设条件的第一五元组,获取所述第一五元组的标记。

进一步,所述预设条件为所述第一五元组的源IP地址和源端口与所述第二五元组的目的IP地址和目的端口相同,第一五元组的目的IP地址和目的端口与第二五元组的源IP地址和源端口相同,以及第一五元组的协议类型与第二五元组的协议相同。

进一步,所述路由规则为:当响应数据包的源IP地址是所述标记对应的服务器的IP地址时,将所述响应数据包发送至所述标记对应的负载均衡器。

附图说明

图1为本发明实施例提供的一种负载均衡器的透明代理方法的流程图;

图2为本发明实施例提供的负载均衡器的透明代理方法的应用示意图;

图3为本发明实施例提供的一种负载均衡系统的结构示意图;

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

图1为本发明实施例提供的一种负载均衡器的透明代理方法的流程图,该方法包括以下步骤:

步骤1、用软件定义的方式创建虚拟负载均衡器和虚拟路由器,并在客户端、虚拟负载均衡器、虚拟路由器和服务器之间构建通路;

步骤2、所述虚拟负载均衡器接收到客户端发送的请求数据包时,按照预设的负载均衡规则得到服务器的IP地址和端口,对所述请求数据包进行目的地址转换,将所述请求数据包发送到所述虚拟路由器;

步骤3、所述虚拟路由器对所述请求数据包进行目的地址转换,并对所述虚拟负载均衡器发起的连接做标记,将所述请求数据包发送到所述服务器;

步骤4、所述服务器对所述请求数据包进行处理并生成响应数据包,将所述响应数据包发送至所述虚拟路由器;

步骤5、所述虚拟路由器根据所述服务器发起的连接查找标记,根据所述标记对应的路由规则得到所述虚拟负载均衡器的IP地址和端口,对所述响应数据包进行源地址转换,将所述响应数据包发送至所述虚拟负载均衡器;

步骤6、所述虚拟负载均衡器对所述响应数据包进行源地址转换,将所述响应数据包发送至所述客户端。

下面结合图2对该实施例做进一步详细说明,图2为本发明实施例提供的负载均衡器的透明代理方法的应用示意图,步骤1是用软件定义的方式创建虚拟负载均衡器和虚拟路由器,并在客户端、虚拟负载均衡器、虚拟路由器和服务器之间构建通路,则虚拟负载均衡器和客户端之间通过公网进行数据交互,虚拟负载均衡器和虚拟路由器之间通过虚拟网络进行数据交互,虚拟路由器和服务器之间通过私网进行数据交互。假设客户端的IP为1.2.3.4,端口为12345,虚拟负载均衡器的公网IP为5.6.7.8,VIP(Virtual IP,虚拟IP)为10.1.1.2,端口为56789,虚拟路由器的虚拟IP为10.1.1.1,私网IP为192.168.100.1,端口为23456,服务器1的私网IP为192.168.100.2,服务器2的私网IP为192.168.100.3。

步骤2中虚拟负载均衡器接收的请求数据包的源IP地址和端口是客户端的IP地址1.2.3.4和端口12345,目的IP地址和目的端口是虚拟负载均衡器的公网IP地址5.6.7.8和端口56789。假设虚拟负载均衡器根据负载均衡规则选择的服务器为服务器1,虚拟负载均衡器对请求数据包进行目的地址转换后,请求数据包的目的IP地址和目的端口被修改为虚拟路由器的虚拟IP地址10.1.1.1和端口23456。

步骤3中虚拟路由器对虚拟负载均衡器每次发起的连接均做不同的标记,这样,虚拟负载均衡器可通过设置多个虚拟IP地址的方式来实现集群部署,虚拟路由器对请求数据包进行目的地址转换后,请求数据包的目的IP地址和目的端口被修改为服务器的私网IP地址192.168.100.2和端口34567。

步骤4中服务器1生成的响应数据包的源IP地址和源端口成为服务器1的私网IP地址192.168.100.2和端口34567,目的IP地址和目的端口为客户端的IP地址1.2.3.4和端口12345。

步骤5中,由于虚拟路由器已对请求数据包做了标记,因此虚拟路由器根据服务器发起的连接查找标记,根据标记对应的路由规则得到虚拟负载均衡器的公网IP地址5.6.7.8和端口56789。虚拟路由器对响应数据包进行源地址转换后,响应数据包的源IP地址和源端口被修改为虚拟路由器的虚拟IP地址10.1.1.1和端口23456,然后将响应数据包发送到得到的虚拟负载均衡器的虚拟IP地址10.1.1.2。

步骤6中,虚拟负载均衡器对响应数据包进行源地址转换后,响应数据包的源IP地址和源端口被修改为虚拟负载均衡器的公网IP地址5.6.7.8和端口56789。

可选地,在该实施例中,步骤3中所述虚拟路由器对所述虚拟负载均衡器发起的连接做标记的具体方法为:所述虚拟路由器解析所述负载均衡器发送的请求数据包获取第一五元组,并对所述第一五元组进行标记,其中,所述第一五元组包括客户端IP地址、客户端端口、服务器IP地址、服务器端口和协议。

具体的,结合图2,第一五元组的源IP地址为客户端IP地址1.2.3.4,源端口为客户端端口12345,目的IP地址为服务器1的私网IP地址192.168.100.2,目的端口为服务器1的端口34567,协议为tcp协议,标记的具体格式为:#mark=123:src 1.2.3.4:12345→dst 192.168.100.2:34567,protocol=tcp。

可选地,在该实施例中,所述虚拟路由器根据所述服务器发起的连接查找标记的具体方法为:所述虚拟路由器解析所述服务器发送的响应数据包获取第二五元组,根据所述第二五元组查找满足预设条件的第一五元组,获取所述第一五元组的标记。

可选地,在该实施例中,所述预设条件为所述第一五元组的源IP地址和源端口与所述第二五元组的目的IP地址和目的端口相同,第一五元组的目的IP地址和目的端口与第二五元组的源IP地址和源端口相同,以及第一五元组的协议类型与第二五元组的协议相同。

可选地,在该实施例中,步骤5中所述路由规则为:当响应数据包的源IP地址是所述标记对应的服务器的IP地址时,将所述响应数据包发送至所述标记对应的负载均衡器。

具体的,结合图2,虚拟路由器查找到标记后,因为标记与第一五元组相对应,而第一五元组中包括了服务器1的私网IP地址192.168.100.2,如果响应数据包的源IP地址是标记对应的服务器1的私网IP地址,则将响应数据包发送到标记对应的虚拟负载均衡器。

图3为本发明实施例提供的一种负载均衡系统的结构示意图,本实施例提供的系统用于实现图1所示的方法。如图3所示,该负载均衡系统包括虚拟负载均衡器和虚拟路由器;

虚拟负载均衡器,用于在接收到客户端发送的请求数据包时,按照预设的负载均衡规则得到服务器的IP地址和端口,对所述请求数据包进行目的地址转换,将所述请求数据包发送到虚拟路由器,还用于在接收到虚拟路由器发送的响应数据包时,对所述响应数据包进行源地址转换,将所述响应数据包发送至所述客户端;

虚拟路由器,用于对所述虚拟负载均衡器发起的连接做标记,并对所述请求数据包进行目的地址转换,将所述请求数据包发送到服务器,还用于根据服务器发起的连接查找标记,根据所述标记对应的路由规则得到所述虚拟负载均衡器的IP地址和端口,对所述响应数据包进行源地址转换,将所述响应数据包发送至所述虚拟负载均衡器

可选地,在该实施例中,所述虚拟路由器用于解析所述负载均衡器发送的请求数据包获取第一五元组,并对所述第一五元组进行标记,其中,所述第一五元组包括客户端IP地址、客户端端口、服务器IP地址、服务器端口和协议。

可选地,在该实施例中,所述虚拟路由器用于解析所述服务器发送的响应数据包获取第二五元组,根据所述第二五元组查找满足预设条件的第一五元组,获取所述第一五元组的标记。

可选地,在该实施例中,所述预设条件为所述第一五元组的源IP地址和源端口与所述第二五元组的目的IP地址和目的端口相同,第一五元组的目的IP地址和目的端口与第二五元组的源IP地址和源端口相同,以及第一五元组的协议类型与第二五元组的协议相同。

可选地,在该实施例中,所述路由规则为:当响应数据包的源IP地址是所述标记对应的服务器的IP地址时,将所述响应数据包发送至所述标记对应的负载均衡器。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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