一种实现负载均衡的方法和系统
技术领域
本发明涉及网络通信技术,特别是涉及一种实现负载均衡的方法和系统。
背景技术
伴随着互联网(Internet)技术的不断发展,网络应用的种类层出不穷。在很多情况下,互联网中大量的服务器都承担着相同或者类似的网络应用服务。比如对于网络在线游戏联众,很多服务器都支持该网络在线游戏联众的服务。在此种情况下,对于互联网中服务器的负载均衡技术应运而生。负载均衡技术就是在服务器侧设置一个负载均衡设备,由该负载均衡设备根据各服务器的负载情况将相关的连接分配到相应的服务器上,避免一个服务器的负载过多而其它服务器负载过少的情况发生,也即实现负载均衡。
图1是在现有技术中实现负载均衡的流程图。参见图1,在现有技术中,实现负载均衡的过程包括以下步骤:
步骤101:用户终端将连接首包发送至负载均衡设备。
步骤102:负载均衡设备从各个服务器中选择一个服务器。
在本步骤中,负载均衡设备可以根据特定的分配算法,比如轮询、最小连接及地址哈希等算法,选择出所述的服务器。
步骤103:负载均衡设备将所选服务器的IP地址和端口信息发送至用户终端。
步骤104:用户终端根据接收到的IP地址和端口信息与负载均衡设备所选的服务器建立连接。
步骤105:用户终端与负载均衡设备所选的服务器通过所建立的连接将业务包直接发送至对方。
由上述图1所示流程可以看出,在现有技术中,要实现用户终端与服务器在互联网中的直接通信,用户终端则必须掌握该服务器的IP地址,这样,则造成了服务器IP地址的泄漏,很可能会导致非法用户通过用户终端窃取服务器的IP地址,从而对服务器进行恶意攻击。另外,要实现用户终端与服务器在互联网中的直接通信,则要求服务器必须具有在互联网中的IP地址,而为每一个可提供业务服务的服务器在互联网中均分配IP地址,则会大大浪费互联网的IP资源。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现负载均衡的方法,本发明的另一目的在于提供一种实现负载均衡的系统,以使用户终端无法获取服务器的IP地址,避免服务器受到恶意攻击。
为了达到上述目的,本发明的技术方案是这样实现的:
一种实现负载均衡的方法,该方法包括:
A、用户终端将连接首包发送至负载均衡设备;
B、负载均衡设备接收到连接首包后从各服务器中选择一个服务器;
C、用户终端与所选服务器中的第一方将业务包发送至负载均衡设备;
D、负载均衡设备将接收到的业务包发送至用户终端与所选服务器中的第二方。
该方法进一步包括:将提供同一种业务应用的各个服务器设置为一个服务器组;
所述连接首包中携带用户终端当前所使用的业务应用的信息;
所述步骤B包括:负载均衡设备接收到连接首包后,根据该连接首包中携带的业务应用信息以及各个服务器组所提供的业务应用,从各个服务器组中确定一个服务器组,并从所确定的服务器组中选择一个服务器。
该方法进一步包括:为每一个服务器组分别设置组标识,并设置服务器组标识与该服务器组中所包括的服务器之间的第一对应关系;设置不同的三元组标识不同的业务应用,并根据每一个三元组所标识的业务应用和每一组服务器所提供的业务应用,建立三元组与服务器组ID之间的第二对应关系,其中,所述的每一个三元组中均包括负载均衡设备的一个IP地址和端口号以及业务应用所采用的协议;
所述连接首包中所携带的业务应用的信息包括:目的IP地址和端口号以及协议信息;
所述步骤B包括:
B1、负载均衡设备接收到连接首包后,将该连接首包中携带的目的IP地址和端口号以及协议信息,与所设置的各个三元组进行匹配,获取所匹配到的三元组;
B2、负载均衡设备从所设置的第二对应关系中查找到与所匹配到三元组对应的服务器组ID;
B3、负载均衡设备从所设置的第一对应关系中获取与所查找到的服务器组ID对应的各个服务器;
B4、负载均衡设备从所获取的各个服务器中选择一个服务器。
在步骤B与步骤C之间进一步包括:负载均衡设备根据接收到的连接首包以及所选服务器的信息,建立用户终端至所选服务器的连接记录;
所述第一方为用户终端,所述第二方为所选服务器;
所述步骤D包括:负载均衡设备接收到业务包后,根据所建立的用户终端至所选服务器的连接记录,将业务包发送至所选服务器。
所述建立用户终端至所选服务器的连接记录的步骤包括:
C001、负载均衡设备从接收到的连接首包中获取包括用户终端的IP地址和端口号、本次连接所使用的负载均衡设备的一个IP地址和端口号、以及本次连接所采用协议信息在内的五元组;
C002、负载均衡设备建立所获取的该五元组与所选服务器的IP地址和端口号之间的第三对应关系;
所述步骤D包括:
D11、负载均衡设备接收到业务包后,从该业务包中提取源IP地址、源端口号、目的IP地址、目的端口号以及协议信息;
D12、负载均衡设备将所提取的源IP地址、源端口号、目的IP地址、目的端口号以及协议信息,与所述五元组进行匹配,获取所匹配到的五元组;
D13、负载均衡设备从所设置的第三对应关系中查找到与所匹配到五元组对应的所选服务器的IP地址和端口号;
D14、负载均衡设备使用所查找到的所选服务器的IP地址和端口号替换业务包中的目的IP地址和目的端口号;
D15、负载均衡设备将业务包发送至所选服务器。
所述业务包为分片包的首包。
所述步骤D11进一步包括:负载均衡设备从分片包的首包中提取分片包标识;
在步骤D13之后进一步包括:
E11、负载均衡设备使用所提取的分片包标识分别替换第三对应关系中所述五元组中的各端口号;
E12、当负载均衡设备接收到后续的分片包时,该负载均衡设备从该后续的分片包中提取一次源IP地址、目的IP地址、以及协议信息,并提取两次分片包标识;
E13、负载均衡设备将所提取出的源IP地址、分片包标识、目的IP地址、分片包标识以及协议信息,与第三对应关系中替换后的五元组进行匹配,获取所匹配到的五元组;
E14、负载均衡设备从所设置的第三对应关系中查找到与所匹配到五元组对应的所选服务器的IP地址;
E15、负载均衡设备使用所查找到的所选服务器的IP地址替换该后续分片包中的目的IP地址;
E16、负载均衡设备将该后续分片包发送至所选服务器。
在步骤B与步骤C之间进一步包括:负载均衡设备根据接收到的连接首包以及所选服务器的信息,建立所选服务器至用户终端的连接记录;
所述第一方为所选服务器,所述第二方为用户终端;
所述步骤D包括:负载均衡设备接收到业务包后,根据所建立的所选服务器至用户终端的连接记录,将业务包发送至用户终端。
所述建立所选服务器至用户终端的连接记录的步骤包括:
C011、负载均衡设备从接收到的连接首包中获取用户终端的IP地址和端口号、本次连接所使用的负载均衡设备的一个IP地址和端口号、以及本次连接所采用的协议信息;
C012、负载均衡设备设置包括所选服务器的IP地址和端口号、用户终端的IP地址和端口号、以及本次连接所采用的协议信息在内的五元组;
C013、负载均衡设备建立所设置的该五元组与从连接首包中获取的负载均衡设备自身的一个IP地址和端口号之间的第四对应关系;
所述步骤D包括:
D21、负载均衡设备接收到业务包后,从该业务包中提取源IP地址、源端口号、目的IP地址、目的端口号以及协议信息;
D22、负载均衡设备将所提取的源IP地址、源端口号、目的IP地址、目的端口号以及协议信息,与所设置的五元组进行匹配,获取所匹配到的五元组;
D23、负载均衡设备从所设置的第四对应关系中查找到与所匹配到五元组对应的负载均衡设备自身的一个IP地址和端口号;
D24、负载均衡设备使用所查找到的IP地址和端口号替换业务包中的源IP地址和源端口号;
D25、负载均衡设备将业务包发送至用户终端。
所述业务包为分片包的首包。
所述步骤D21进一步包括:负载均衡设备从分片包的首包中提取分片包标识;
在步骤D23之后进一步包括:
E21、负载均衡设备使用所提取的分片包标识分别替换第四对应关系中所述五元组中的各端口号;
E22、当负载均衡设备接收到后续的分片包时,该负载均衡设备从该后续的分片包中提取一次源IP地址、目的IP地址、以及协议信息,并提取两次分片包标识;
E23、负载均衡设备将所提取的源IP地址、分片包标识、目的IP地址、分片包标识、以及协议信息,与第四对应关系中替换后的五元组进行匹配,获取所匹配到的五元组;
E24、负载均衡设备从所设置的第四对应关系中查找到与所匹配到五元组对应的负载均衡设备自身的一个IP地址;
E25、负载均衡设备使用所查找到的IP地址替换该后续业务包中的源IP地址;
E26、负载均衡设备将该后续分片包发送至用户终端。
一种实现负载均衡的方法,将提供同一种业务应用的各个服务器设置为一个服务器组,并分别建立每一个服务组与可标识业务应用的三元组之间的对应关系,该方法还包括:
a、用户终端将连接首包发送至负载均衡设备;
b、负载均衡设备根据连接首包中携带的业务应用信息获取三元组,并从与所获取三元组对应的服务器组中选择一个服务器;
c、用户终端与所选服务器通过负载均衡设备传输业务包。
所述三元组为负载均衡设备的一个IP地址和端口号以及业务应用所采用的协议;
在步骤b中,所述连接首包中携带的业务应用信息为目的IP地址和端口号以及协议信息。
一种实现负载均衡的系统,该系统包括:用户终端,负载均衡设备和多于一个的服务器,其中,
用户终端,用于将连接首包发送至负载均衡设备,并将自身的业务包发送至负载均衡设备或接收负载均衡设备发来的业务包;
负载均衡设备,用于在接收到连接首包后,从各服务器中选择一个服务器,并在接收到用户终端发来的业务包时将该业务包发送至所选服务器,或,在接收到所选服务器发来的业务包时将该业务包发送至用户终端;
所选服务器,用于接收负载均衡设备发来的业务包,或,将自身的业务包发送至负载均衡设备。
所述各个服务器组成不同的服务器组,其中,不同的服务器组提供不同的业务应用;
所述负载均衡设备根据连接首包中所携带的业务应用的信息以及每一个服务器所提供的业务应用,确定一个服务器组,并从所确定的服务器组中选择出一个服务器。
由此可见,本发明具有以下的优点:
1、在本发明中,用户终端与负载均衡设备所选的服务器之间必须通过负载均衡设备进行通信,这样,用户终端则无法获取服务器的IP地址,从而使得非法用户无法通过用户终端窃取服务器的IP地址并对服务器进行恶意攻击,大大提高了网络通信的安全性。
2、在本发明中,由于用户终端与负载均衡设备所选的服务器之间通过负载均衡设备进行通信,这样,则无需为服务器分配在互联网中的IP地址,该服务器只需具有在自身所处局域网中的IP地址即可,从而大大节约了网络的IP资源。
另外,本发明使用三元组技术来标识业务应用时,只要三元组中负载均衡设备的端口号不同,三元组则不同,这样,在网络侧则可以为不同的业务应用分配相同的负载均衡设备的IP地址,从而进一步节约了网络的IP资源。
3、在本发明中,可以将提供同一业务应用的各个服务器设置为一个服务器组,这样,则为管理和维护各个服务器提供了极大的方便。
附图说明
图1是在现有技术中实现负载均衡的流程图。
图2是本发明系统的结构示意图。
图3是在本发明实施例中利用三元组技术选择服务器的流程图。
图4A是在本发明实施例中所建立的服务器组的标识(ID)与服务器组中各服务器之间第一对应关系的示意图。
图4B是在本发明实施例中所建立的三元组与服务器组ID之间的第二对应关系的示意图。
图5是在本发明实施例中利用五元组技术实现用户终端与所选服务器之间通信的流程图。
图6A是在本发明实施例中建立的所获取的五元组与所选服务器组的IP地址和端口号之间第三对应关系的示意图。
图6B是在本发明实施例中建立的所设置的五元组与负载均衡设备的IP地址和端口号之间第四对应关系的示意图。
图7是在本发明实施例中对分片包的后续包完成转发的流程图。
具体实施方式
在现有技术中,在各服务器之间实现负载均衡时,用户终端能够获取服务器的IP地址,因此,很可能会导致服务器IP地址的泄漏,使得服务器遭受恶意攻击。为了避免此种情况的发生,在实现负载均衡时,则必须使得用户终端无法获得服务器的IP地址。因此,本发明提出了一种实现负载均衡的方法,其核心思想是:用户终端将连接首包发送至负载均衡设备;负载均衡设备从各个服务器中选择一个服务器;用户终端与所选服务器中的第一方将业务包发送至负载均衡设备;负载均衡设备将接收到的业务包发送至用户终端与所选服务器中的第二方。
在本发明方法中,还可以进一步将提供同一种业务应用的各个服务器设置为一个服务器组,这样,当负载均衡设备接收到用户终端发来的连接首包后,根据该连接首包中携带的业务应用信息以及各个服务器组所提供的业务应用,从各个服务器组中确定一个服务器组,并从所确定的服务器组中选择服务器。在具体实现时,可以利用三元组技术来唯一标识一个具体的业务应用,并实现确定服务器组及选择服务器的过程。
另外,在本发明方法中,负载均衡设备可以根据接收到的连接首包以及所选服务器的信息,建立用户终端与所选服务器之间的连接记录,在后续过程中,负载均衡设备根据所建立的连接记录完成业务包的转发。在具体实现时,负载均衡设备可以利用五元组技术建立用户终端与所选服务器之间的连接记录,从而完成业务包的转发。
图2是本发明系统的结构示意图。参见图2,本发明还提出了一种实现负载均衡的系统,包括:用户终端、负载均衡设备和多于一个的服务器,其中,
用户终端,用于将连接首包发送至负载均衡设备,并将自身的业务包发送至负载均衡设备或接收负载均衡设备发来的业务包;
负载均衡设备,用于在接收到连接首包后,从各服务器中选择一个服务器,并在接收到用户终端发来的业务包时将该业务包发送至所选服务器,或,在接收到所选服务器发来的业务包时将该业务包发送至用户终端;
所选服务器,用于接收负载均衡设备发来的业务包,或,将自身的业务包发送至负载均衡设备。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
图3是在本发明实施例中利用三元组技术选择服务器的流程图。参见图2和图3,利用本发明系统,本发明方法在实现负载均衡的过程中选择为用户终端提供业务应用的服务器的过程,具体包括以下步骤:
步骤301:在网络侧,将提供同一种业务应用的各个服务器设置为一个服务器组,并为每一个服务器组设置组ID。
这里,比如根据实际业务应用情况,网络侧可提供围棋游戏的服务器有5个,可提供桥牌游戏的服务器有3个,那么,则将该可提供围棋游戏的5个服务器设置为一组,并为该服务器组设置组标识,如组1,并且,将该可提供桥牌游戏的3个服务器设置为一组,并为该服务器组设置组标识,如组2。
步骤302:在网络侧,建立每一个服务器组ID与该服务器组中所包括服务器之间的第一对应关系。
这里,比如,服务器组1中包括可提供围棋游戏的服务器1至服务器5,服务器组2中包括可提供桥牌游戏的服务器6至服务器8,那么,在本步骤中,可以将所述的第一对应关系建立为图4A所示的形式。
步骤303:在网络侧,设置不同的三元组来标识不同的业务应用。
这里,所设置的三元组包括负载均衡设备的一个IP地址和端口号、以及业务应用所使用协议的信息。由于负载均衡设备在用户终端与服务器的通信过程中只起到转发业务包的作用,而并非真实的源端和目的端,因此,将负载均衡设备的IP地址记为虚拟IP(VIP),将负载均衡设备的端口记为虚拟端口(VPORT),也就是说,所述的三元组可记为“VIP+VPORT+协议”。
可见,三元组“VIP+VPORT+协议”中的任意一个元素发生变化时均可标识不同的业务应用。比如,三元组“VIP为11.12.13.14+VPORT为567+协议为TCP”可标识业务应用围棋,当该三元组中的元素VPORT发生变化,其它元素未变化时,比如,该三元组变为“VIP为11.12.13.14+VPORT为568+协议为TCP”,该变化后的三元组则可标识另一个业务应用桥牌。
步骤304:根据每一个三元组所标识的业务应用,以及每一组服务器可提供的业务应用,建立三元组与服务器组ID之间的第二对应关系。
这里,比如,三元组1“VIP1+VPORT1+协议1”可标识业务应用围棋,三元组2“VIP1+VPORT2+协议1”可标识业务应用桥牌,并且,服务器组1所提供的业务应用为围棋,服务器组2所提供的业务应用为桥牌,那么,在本步骤中,可以将所述的第二对应关系建立为图4B所示的形式。
步骤305:当用户终端需要在互联网上使用一种业务应用时,用户终端将携带协议信息、自身IP地址和端口号、以及目的IP地址和目的端口号的连接首包发送至负载均衡设备。
这里,由于用户终端所发送连接首包的目的端为负载均衡设备,所以连接首包中的目的IP地址和目的端口号为负载均衡设备的一个IP地址和端口号。
步骤306:负载均衡设备从所接收到的连接首包中获取目的IP地址、目的端口号、以及所使用的协议信息,然后将所获取的目的IP地址、目的端口号、以及所使用的协议信息与所设置的各个三元组进行匹配。
步骤307:负载均衡设备从所建立的第二对应关系中,查找到与所匹配到的三元组相对应的服务器组ID。
步骤308:负载均衡设备从所建立的第一对应关系中,获取与所查找到服务器组ID对应的各个服务器。
步骤309:负载均衡设备从所获取的各个服务器中选择一个服务器。
这里,负载均衡设备可以根据特定的分配算法,比如轮询,最小连接,地址哈希等算法选择出服务器。
图5是在本发明实施例中利用五元组技术实现用户终端与所选服务器之间通信的流程图。参见图5,在根据上述图3所示流程选择服务器之后,本发明方利用五元组技术最终实现用户终端与所选服务器之间通信的过程,具体包括以下步骤:
步骤501:负载均衡设备从接收到的连接首包中获取包括用户终端的IP地址和端口号、本次连接所使用的负载均衡设备的一个IP地址和端口号、以及本次连接所采用协议信息在内的五元组。
这里,为便于描述,以下将用户终端的IP地址和端口号分别记为SIP和SPORT,将负载均衡设备的IP地址和端口号分别记为VIP和VPORT,将所选服务器的IP地址和端口号分别记为RIP和RPORT。这样,在本步骤中,所获取的五元组为“SIP+SPORT+VIP+VPORT+协议”。
步骤502:负载均衡设备建立所获取的该五元组与所选服务器的IP地址和端口号之间的第三对应关系。
这里,所建立的第三对应关系可参见图6A所示。
步骤503:用户终端将携带自身的IP地址和端口号、目的IP地址、目的端口号以及协议信息的业务包发送至负载均衡设备。
步骤504:负载均衡设备接收到该业务包后,从该业务包中提取源IP地址、源端口号、目的IP地址、目的端口号以及协议信息。
步骤505:负载均衡设备将所提取的源IP地址、源端口号、目的IP地址、目的端口号以及协议信息,与所述五元组进行匹配,获取所匹配到的五元组。
步骤506:负载均衡设备从所设置的第三对应关系中查找到与所匹配到五元组对应的所选服务器的IP地址和端口号。
步骤507:负载均衡设备使用所查找到的所选服务器的IP地址和端口号替换业务包中的目的IP地址和目的端口号,然后将业务包发送至所选服务器。
这里,由于对于用户终端而言,其业务包的目的端为负载均衡设备,所以在负载均衡设备所接收到的业务包中,目的IP地址和端口号均为负载均衡设备的IP地址和端口号。然而,由于负载均衡设备为虚拟的目的端,所选的服务器为真正的目的端,因此,在本步骤中,使用所查找到的所选服务器的IP地址和端口号替换业务包中的目的IP地址和目的端口号,从而使得该负载均衡设备能够正确地将该业务包转发给所选服务器,并使得所选服务器接收到该业务包后,能够识别该业务包。
步骤508:负载均衡设备设置包括所选服务器的IP地址和端口号、用户终端的IP地址和端口号、以及本次连接所采用的协议信息在内的五元组。
在本步骤中,所设置的五元组为“RIP+RPORT+SIP+SPORT+协议”。
步骤509:负载均衡设备建立所设置的该五元组与从连接首包中获取的负载均衡设备自身的一个IP地址和端口号之间的第四对应关系。
这里,所建立的第四对应关系可参见图6B所示。
步骤510:所选服务器将携带自身IP地址和端口号,目的IP地址和端口号以及协议信息的业务包发送至负载均衡设备。
步骤511:负载均衡设备接收到业务包后,从该业务包中提取源IP地址、源端口号、目的IP地址、目的端口号以及协议信息,并将所提取的源IP地址、源端口号、目的IP地址、目的端口号以及协议信息与所设置的五元组进行匹配,获取所匹配到的五元组。
步骤512:负载均衡设备从所设置的第四对应关系中查找到与所匹配到五元组对应的负载均衡设备自身的一个IP地址和端口号。
步骤513:负载均衡设备使用所查找到的IP地址和端口号替换业务包中的源IP地址和源端口号,并将该业务包发送至用户终端。
这里,由于在负载均衡设备所接收到的业务包中,源IP地址和源端口号均为所选服务器的IP地址和端口号,而为了避免用户终端获取所选服务器的IP地址和端口号,并使得用户终端将负载均衡设备作为发送该业务包的源端,在本步骤中,负载均衡设备则必须使用所查找到的自身的一个IP地址和端口号替换业务包中的源IP地址和源端口号。
需要说明的是,上述步骤501至步骤507与步骤508至步骤513之间并无固定的执行上的先后顺序。
至此,通过上述图3和图5所示的过程,本发明则完成了在服务器之间负载均衡的过程,并实现了避免用户终端获取服务器的IP地址和端口号的目的,从而避免了服务器受到恶意的攻击。
在上述图3和图5所示的过程中,所述连接首包可以为一个完整业务包的连接首包,相应的,所述业务包为完整的业务包。
还需要说明的是,在上述图3和图5所示的过程中,所述的连接首包也可以为一个分片包的连接首包,由于分片包的首包中携带有源端口号和目的端口号,因此,所述的业务包可以为分片包的首包。而对于后续的分片包,由于其中只携带分片ID而不携带源端口号和目的端口号,因此,仅通过上述图3和图5所示的过程,负载均衡设备无法转发,这样,则应该使用所有分片包中均携带的分片ID来代替五元组中的端口号,从而完成后续分片包的转发。参见图7,针对此种情况,在对分片包的首包完成转发,也即负载均衡设备将分片包的首包发送至用户终端或所选服务器之后,本发明方法还进一步包括以下步骤:
步骤701:负载均衡设备从分片包的首包中提取分片包标识。
步骤702:负载均衡设备使用所提取的分片包标识分别替换第三对应关系和第四对应关系中五元组中的各端口号。
步骤703:当负载均衡设备接收到用户终端发来的后续的分片包时,该负载均衡设备从该后续的分片包中提取一次源IP地址、目的IP地址、以及协议信息,并提取两次分片包标识。
步骤704:负载均衡设备将所提取出的源IP地址、分片包标识、目的IP地址、分片包标识以及协议信息,与第三对应关系中替换后的五元组进行匹配,获取所匹配到的五元组。
步骤705:负载均衡设备从所设置的第三对应关系中查找到与所匹配到五元组对应的所选服务器的IP地址,并使用所查找到的所选服务器的IP地址替换该后续分片包中的目的IP地址。
步骤706:负载均衡设备将该后续分片包发送至所选服务器。
步骤707:当负载均衡设备接收到所选服务器发来的后续的分片包时,该负载均衡设备从该后续的分片包中提取一次源IP地址、目的IP地址、以及协议信息,并提取两次分片包标识。
步骤708:负载均衡设备将所提取的源IP地址、分片包标识、目的IP地址、分片包标识、以及协议信息,与第四对应关系中替换后的五元组进行匹配,获取所匹配到的五元组。
步骤709:负载均衡设备从所设置的第四对应关系中查找到与所匹配到五元组对应的负载均衡设备自身的一个IP地址,并使用所查找到的IP地址替换该后续业务包中的源IP地址。
步骤710:负载均衡设备将该后续分片包发送至用户终端。
这样,通过上述图3、图5和图7的过程,负载均衡设备则可以实现对所有的分片包的转发。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。