一种负载均衡设备中Linux系统源端口分配方法与流程
未命名
07-13
阅读:104
评论:0
一种负载均衡设备中linux系统源端口分配方法
技术领域
1.本发明涉及网络端口分配技术领域,特别是涉及一种负载均衡设备中linux系统源端口分配方法。
背景技术:
2.健康检查和snat(源地址转换)是负载均衡器设备必备的功能,并且在负载均衡器设备工作时,健康检查模块是必须启用的功能。健康检查模块指的是负载均衡器会定期向后端服务器发送请求以测试其运行状态,来判断后端服务器是否可用。snat指的是负载均衡器向后端服务器转发报文时改变报文的源ip和源端口的一种技术。健康检查模块报文的源ip和snat报文的源ip均可以使用业务接口的ip地址,因此这两种报文的源ip地址可能相同。当后端服务器的业务端口和健康检查模块检测端口相同时(报文的目的地址和目的端口相同),如果这两种报文的源端口相同时,就会导致报文冲突。报文冲突指的是报文的五元组相同(源ip、源端口、协议类型、目的ip、目的端口)。
3.负载均衡设备通常是基于linux系统的,其中健康检查模块功能的收发包也是基于linux系统的,即报文的源端口是linux系统决定的,但是snat报文的源端口却不是由linux系统决定的,而是由转发系统(linux系统上的一个进程,由编程实现)决定的。linux系统下可以通过修改其系统参数/proc/sys/net/ipv4/ip_local_port_range来指定其可以使用的源端口的范围,而转发系统中snat模块可以使用的源端口的范围是通过程序实现的。当负载均衡设备同时使能健康检查模块和snat,为了避免出现冲突报文,就需要将两者能够使用的源端口范围进行合理规划,避免冲突。
4.现有的tcp/ip技术中的端口范围一般设置为《1,65534》(即表示从1到65534),其中《1,1024》为系统保留端口,实际可用端口为《1025,65534》。在没有配置snat模块的场景下,健康检查模块可用的源端口范围即为《1025,65534》,这样可以保证健康检查模块的最大数量。当snat模块配置后,重新规划源端口的使用范围。snat模块使用的范围为《1025,x》,健康检查模块使用的源端口的范围则变为《x+1,65534》,其中,x为事先规划好的某个值,各厂家可能不同。
5.在没有配置snat模块的情况下,健康检查模块可以使用全部的可用端口,假定已经是使用了其中的某些端口{p1,p2...pn}。如果端口{p1,p2...pn}中的某些在《x+1,65534》,那么当配置snat模块后,snat模块也可能使用这些端口,就会出现报文冲突的情况,导致负载均衡设备转发业务异常和健康检查模块结果震荡。
技术实现要素:
6.为解决现有技术存在的上述问题,本发明提供了一种负载均衡设备中linux系统源端口分配方法。
7.为实现上述目的,本发明提供了如下方案:
8.一种负载均衡设备中linux系统源端口分配方法,包括:
9.基于健康检查模块的规格设置初值;
10.基于所述初值设置第一源端口范围;所述第一源端口范围为健康检查模块能够使用的源端口范围;
11.基于所述第一源端口范围判断剩余的源端口是否满足sant模块的源端口数量需求;
12.当剩余的源端口满足sant模块的源端口数量需求时,则基于所述初值确定linux系统的源端口范围;
13.当剩余的源端口不满足sant模块的源端口数量需求时,则调整所述初值,并返回执行“基于所述初值设置第一源端口范围”。
14.优选地,通过调整健康检查模块的规格或sant模块规格,进而调整所述初值。
15.优选地,通过调整健康检查模块的规格和sant模块规格,进而调整所述初值。
16.优选地,所述初值为x:
17.x=30000,或x=40000。
18.优选地,所述第一源端口范围为《1025,x》。
19.优选地,所述sant模块的源端口范围为《x+1,65534》。
20.根据本发明提供的具体实施例,本发明公开了以下技术效果:
21.本发明提供的负载均衡设备中linux系统源端口分配方法,通过对源端口的分配调控,使得负载均衡设备的健康检查模块和snat(源地址转换)模块的报文五元组(包括源ip、源端口、协议类型、目的ip、目的端口)不会完全相同,从而有效解决上述两个模块发生报文冲突的问题,进而能够避免负载均衡设备转发业务异常和健康检查模块结果震荡的问题出现。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1为本发明提供的负载均衡设备中linux系统源端口分配方法的流程图。
具体实施方式
24.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
25.本发明的目的是提供一种负载均衡设备中linux系统源端口分配方法,能够有效解决上述两个模块发生报文冲突的问题,进而能够避免负载均衡设备转发业务异常和健康检查模块结果震荡的问题出现。
26.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
27.实施例一
28.如图1所示,本发明提供的负载均衡设备中linux系统源端口分配方法,包括:
29.步骤100:基于健康检查模块的规格设置初值。
30.步骤101:基于初值设置第一源端口范围。第一源端口范围为健康检查模块能够使用的源端口范围。
31.步骤102:基于第一源端口范围判断剩余的源端口是否满足sant模块的源端口数量需求。
32.步骤103:当剩余的源端口满足sant模块的源端口数量需求时,则基于初值确定linux系统的源端口范围。
33.该步骤中,主要是通过设置程序代码实现,例如,当程序启动时通过系统调用以下代码设置linux系统的可用源端口范围后,修改snat程序代码设置其可用的端口范围为《x+1,65534》。
34.程序代码为:“echo“1025x”》
35./proc/sys/net/ipv4/ip_local_port_range”36.步骤104:当剩余的源端口不满足sant模块的源端口数量需求时,则调整初值,并返回执行“基于初值设置第一源端口范围”。在本发明中可以通过调整健康检查模块的规格和sant模块规格中的一个或全部,以实现调整初值的目的。
37.实施例二
38.该实施例中,提前设置健康检查模块使用的源端口范围为《1025,x》,snat模块使用的源端口范围为《x+1,65534》,根据snat模块和健康检查模块对源端口的需求规格确定初值x。
39.基于此,该实施例的一种提供的负载均衡设备中linux系统源端口分配方法过程为:
40.步骤200:确定健康检查模块的规格,即每个接口ip地址(源ip)需要支持的最大健康检查数量(一个ip地址同时探测多少台后端服务器),健康检查的规格假定为m,则x=1024+m。
41.步骤201:健康检查模块可以使用的源端口范围暂定为《1025,x》,在此基础上确认剩余的源端口数量为《x+1,65534》,并确定这一剩余的源端口数量是否能够满足snat模块的源端口数量需求w。
42.步骤202:如果《x+1,65534》满足snat模块的源端口数量需求,即(65534-x)≥w,则依次执行步骤204和步骤205。
43.步骤203:如果《x+1,65534》不满足snat模块需求,则需要根据产品需求调整snat或健康检查对源端口需求数量的规格,进而调整初值x。
44.步骤204:确定初值x以后,设置程序代码,当程序启动时通过系统调用“echo“1025x”》/proc/sys/net/ipv4/ip_local_port_range”设置linux系统的可用源端口范围。
45.步骤205:修改snat程序代码设置其可用的端口范围为《x+1,65534》。
46.经过以上步骤,健康检查模块和snat模块将不会产生冲突报文,进而有效避免健康检查结果震荡和转发业务的异常。
47.实施例三
48.该实施例提供了一种应用有上述实施例一提供的负载均衡设备中linux系统源端口分配方法的负载均衡设备。该负载均衡设备中,健康检查的规格为10000,其snat模块的规格需求为10000。根据该健康检查的规格,设定x为11024,确定健康检查可以使用的源端口范围为《1025,11024》。确认剩余的源端口《11025,65534》能够满足snat模块的规格需求。设置程序代码,当程序启动时通过系统调用“echo“102511024”》/proc/sys/net/ipv4/ip_local_port_range”设置linux系统的可用源端口范围,修改snat,程序代码设置其可用的端口范围为《11025,65534》。
49.经过以上步骤,健康检查和snat模块将不会产生冲突报文,进而有效避免健康检查结果震荡和转发业务的异常。
50.实施例四
51.该实施例提供了另一种应用有上述实施例一提供的负载均衡设备中linux系统源端口分配方法的负载均衡设备。该负载均衡设备中,健康检查的规格为31476,snat模块的规格需求为34000。根据该健康检查的规格,设定x为32500,确定健康检查可以使用的源端口范围为《1025,32500》。然而,剩余的源端口《32501,65534》不能满足snat模块的规格需求。根据产品需求调整健康检查规格为30001,snat规格为30002,进而调整x为31025。设置程序代码,当程序启动时通过系统调用“echo“102531025”》/proc/sys/net/ipv4/ip_local_port_range”设置linux系统的可用源端口范围,修改snat程序代码设置其可用的端口范围为《31026,65534》。
52.经过以上步骤,健康检查和snat模块将不会产生冲突报文。
53.此外,在本发明中,出上述给出的初值x外,还可以将初值x设置为3000或4000,但不限于此,在实际应用过程中,根据snat规格和健康检查的规格确定初值x。
54.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
55.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
技术特征:
1.一种负载均衡设备中linux系统源端口分配方法,其特征在于,包括:基于健康检查模块的规格设置初值;基于所述初值设置第一源端口范围;所述第一源端口范围为健康检查模块能够使用的源端口范围;基于所述第一源端口范围判断剩余的源端口是否满足sant模块的源端口数量需求;当剩余的源端口满足sant模块的源端口数量需求时,则基于所述初值确定linux系统的源端口范围;当剩余的源端口不满足sant模块的源端口数量需求时,则调整所述初值,并返回执行“基于所述初值设置第一源端口范围”。2.根据权利要求1所述的负载均衡设备中linux系统源端口分配方法,其特征在于,通过调整健康检查模块的规格或sant模块规格,进而调整所述初值。3.根据权利要求1所述的负载均衡设备中linux系统源端口分配方法,其特征在于,通过调整健康检查模块的规格和sant模块规格,进而调整所述初值。4.根据权利要求1所述的负载均衡设备中linux系统源端口分配方法,其特征在于,所述初值为x:x=30000,或x=40000。5.根据权利要求4所述的负载均衡设备中linux系统源端口分配方法,其特征在于,所述第一源端口范围为<1025,x>。6.根据权利要求4所述的负载均衡设备中linux系统源端口分配方法,其特征在于,所述sant模块的源端口范围为<x+1,65534>。
技术总结
本发明公开一种负载均衡设备中Linux系统源端口分配方法,涉及网络端口分配技术领域。本发明通过对源端口的分配调控,使得负载均衡设备的健康检查模块和SNAT(源地址转换)模块的报文五元组(包括源IP、源端口、协议类型、目的IP、目的端口)不会完全相同,从而有效解决上述两个模块发生报文冲突的问题,进而能够避免负载均衡设备转发业务异常和健康检查模块结果震荡的问题出现。果震荡的问题出现。果震荡的问题出现。
技术研发人员:李文化
受保护的技术使用者:上海弘积信息科技有限公司
技术研发日:2023.02.10
技术公布日:2023/7/12
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
