CN116781571A - 负载均衡设备的健康检测方法及装置 - Google Patents
负载均衡设备的健康检测方法及装置 Download PDFInfo
- Publication number
- CN116781571A CN116781571A CN202310776414.2A CN202310776414A CN116781571A CN 116781571 A CN116781571 A CN 116781571A CN 202310776414 A CN202310776414 A CN 202310776414A CN 116781571 A CN116781571 A CN 116781571A
- Authority
- CN
- China
- Prior art keywords
- port
- health detection
- kernel
- range
- connection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000036541 health Effects 0.000 title claims abstract description 124
- 238000001514 detection method Methods 0.000 title claims abstract description 101
- 238000000034 method Methods 0.000 claims abstract description 194
- 230000008569 process Effects 0.000 claims abstract description 151
- 238000011084 recovery Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 60
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及一种负载均衡设备的健康检测方法及装置。该方法包括:康检测进程调用连接函数,所述连接函数用于连接后端服务器;根据所述连接函数获取当前进程名称;将所述当前进程名称和预设内核配置进行匹配;在匹配成功时,获取匹配成功的进程名称对应的端口范围;基于所述端口范围和后端服务器建立连接以进行健康检测。本申请涉及的负载均衡设备的健康检测方法及装置,能够满足不同进程的需要,为不同的进程提供不同的健康检测端口范围,从而避免服务调度选择的源端口冲突问题,提升负载均衡设备健康检测的准确度。
Description
技术领域
本申请涉及计算机信息处理领域,具体而言,涉及一种负载均衡设备的健康检测方法及装置。
背景技术
随着网络技术的不断发展,网络流量越来越大,单一服务器无法满足用户对高并发、高新建和高处理速度的需求,同时,服务器硬件升级性价比太低,为了增加业务处理能力和业务处理速度,服务器负载均衡技术应运而生。
服务器负载均衡设备具有探测真后端服务器运行状态,并根据服务器运行状态将客户端流量合理调度至一到多台真后端服务器的功能;因此,精确判断服务器的运行状态对于负载均衡设备流量调度存在重要意义。
目前检测服务器运行状态技术方案实现一般有两种:
一种是通过ICMP协议定时去ping服务器,从而检测网络信息是否可达负载均衡设备,这种方法的缺陷是如果网络没有问题,但是负载均衡设备内部的业务有问题的话,则无法检测到;
另外一种是通过周期性的访问服务器应用从而对负载均衡设备进行监控检测。可例如一个基于HTTP协议的应用位于服务器中,可以通过建立TCP与其建立连接从而健康检查,也可以发送HTTP请求给web服务器,通过检测访问请求是否正常,以探测服务或者服务器的可用性。在这个方案中,如果服务器没有响应探测请求,则认为当前该服务器存在异常,处于不可用的状态,则负载均衡器将会把这个服务器从健康列表里删除,后续客户端发送的服务请求将不会再发给这个不可用的服务器。如果健康检查系统探测到以前不可用的服务器已经恢复服务响应,则这个服务器将会被加回服务器健康列表,并且后续的客户端请求将会继续发给这个服务器处理。
在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本申请提供一种负载均衡设备的健康检测方法及装置,能够满足不同进程的需要,为不同的进程提供不同的健康检测端口范围,从而避免服务调度选择的源端口冲突问题,提升负载均衡设备健康检测的准确度。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请的一方面,提出一种负载均衡设备的健康检测方法,该方法包括:康检测进程调用连接函数,所述连接函数用于连接后端服务器;根据所述连接函数获取当前进程名称;将所述当前进程名称和预设内核配置进行匹配;在匹配成功时,获取匹配成功的进程名称对应的端口范围;基于所述端口范围和后端服务器建立连接以进行健康检测。
在本申请的一种示例性实施例中,还包括:根据用户设置的多个进程名称和端口范围的对应关系生成所述预设内核配置。
在本申请的一种示例性实施例中,根据用户设置的多个进程名称和端口范围的对应关系生成所述预设内核配置,包括:获取多个进程名称和端口范围的对应关系;通过所述多个进程名称和端口范围的对应关系生成内核配置数据;将所述内核配置数据发送到内核;内核解析所述内核配置数据生成所述预设内核配置。
在本申请的一种示例性实施例中,将所述内核配置数据发送到内核,包括:通过proc文件系统将所述预设内核配置下发到内核。
在本申请的一种示例性实施例中,内核解析所述内核配置数据生成所述预设内核配置,包括:内核在命令回调函数中解析所述内核配置数据;获取进程名称和端口范围的对应关系;对所述进程名称和端口范围的对应关系进行合法性校验;在合法性校验通过后,生成所述预设内核配置。
在本申请的一种示例性实施例中,生成所述预设内核配置,还包括:将所述预设内核配置储存到结构体变量中。
在本申请的一种示例性实施例中,健康检测进程调用连接函数,包括:健康检测进程创建套接字连接;基于所述套接字连接调用所述连接函数。
在本申请的一种示例性实施例中,根据所述连接函数获取当前进程名称,包括:通过所述连接函数调用内核的inet_get_local_port_range函数;通过所述inet_get_local_port_range函数获取所述当前进程名称。
在本申请的一种示例性实施例中,基于所述端口范围和后端服务器建立连接以进行健康检测,包括:将所述端口范围返回给所述健康检测进程;所述健康检测进程根据所述端口范围和所述后端服务器建立连接以进行健康检测。
根据本申请的一方面,提出一种负载均衡设备的健康检测装置,该装置包括:调用模块,用于健康检测进程调用连接函数,所述连接函数用于连接后端服务器;名称模块,用于根据所述连接函数获取当前进程名称;匹配模块,用于将所述当前进程名称和预设内核配置进行匹配;范围模块,用于在匹配成功时,获取匹配成功的进程名称对应的端口范围;检测模块,用于基于所述端口范围和后端服务器建立连接以进行健康检测。
根据本申请的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本申请的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本申请的负载均衡设备的健康检测方法及装置,通过康检测进程调用连接函数,所述连接函数用于连接后端服务器;根据所述连接函数获取当前进程名称;将所述当前进程名称和预设内核配置进行匹配;在匹配成功时,获取匹配成功的进程名称对应的端口范围;基于所述端口范围和后端服务器建立连接以进行健康检测的方式,能够满足不同进程的需要,为不同的进程提供不同的健康检测端口范围,从而避免服务调度选择的源端口冲突问题,提升负载均衡设备健康检测的准确度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种负载均衡设备的健康检测方法及装置的系统框图。
图2是根据一示例性实施例示出的一种负载均衡设备的健康检测方法的流程图。
图3是根据另一示例性实施例示出的一种负载均衡设备的健康检测方法的流程图。
图4是根据另一示例性实施例示出的一种负载均衡设备的健康检测方法的流程图。
图5是根据一示例性实施例示出的一种负载均衡设备的健康检测装置的框图。
图6是根据一示例性实施例示出的一种电子设备的框图。
图7是根据一示例性实施例示出的一种计算机可读介质的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
本申请涉及的技术缩略语解释如下:
负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。服务器负载均衡根据LB设备处理到的报文层次,分为四层服务器负载均衡和七层负载均衡,四层服务器负载均衡能够处理IP包的IP头,但不解析报文四层以上载荷(L4server LB);七层服务器负载均衡能够处理到报文载荷部分,比如HTTP,RTSP,SIP报文头,有时也包括报文内容部分(L7 server LB)。
健康检查,负载均衡通过健康检查来判断服务器的业务可用性。健康检查机制提高了业务整体可用性,避免了服务器异常对总体服务的影响。开启健康检查功能后,当某台服务器被健康检查出现异常时,负载均衡会自动将新的请求分发到其它健康检查正常的服务器上;而当该服务器恢复正常运行时,负载均衡会将其自动恢复到负载均衡服务中。
本案申请他人对现有技术进行了研究之后发现,为了更准确的感知服务器的实时状态,现有技术中,负载均衡器一般采用周期性的访问服务器应用的方式对负载均衡设备进行健康检测。在进行健康检测时,负载均衡器和服务器建立连接,连接服务器的源端口有三种方案可以选择:
方案1是随机的,操作系统自己选择空闲的端口给进程使用;
方案2是由用户设置一个端口范围,所有进程共用这个端口范围;
方案3是健康检查进程绑定源端口,如果绑定失败,那么换其他源端口。
其中,方案1存在系统选择的源端口可能和四层或七层虚服务调度选择的源端口相同,健康检查与负载调度冲突,从而导致负载调度和健康检查失败;方案2存在系统其他进程也只能使用这个端口范围的端口的限制,其他进程也被迫选择这个端口范围,其不能满足不同进程的个性化需要的限制;方案3一方面存在绑定端口失败,需要用其他源端口多次绑定,直到找到可用的源端口,其一方面找可用源端口的过程比较消耗性能,另外对于一些应用,如mysql、oracle等健康检查,其选择源端口要么在其源代码里面,不好修改;要么是闭源的,无法控制选择源端口。
有鉴于现有技术中的技术缺陷,本申请提出一种负载均衡设备的健康检测方法,能够在健康检查过程中,根据不同的进程选择连接不同的服务器源端口的方案,能够解决了方案2和方案3的问题。
本申请的方案中,在对后端服务器进行健康检查时,连接的源端口不会与四层或七层虚服务调度选择的源端口相同,不影响负载调度及健康检查;同时不影响操作系统其他进程选择源端口范围,操作系统其他进程仍然可以在1~65535范围内选择端口。
在一些应用,比如mysql、oracle等的健康检查中,其选择源端口要么在其源代码里面,不好修改;要么是闭源的,无法控制选择源端口的问题。本申请的方案满足了不同进程、不同场景的需要,同时也满足了一些应用,如mysql、oracle等健康检查中的特殊需求。
下面借助于具体的实施例,对本申请的内容进行详细描述。
图1是根据一示例性实施例示出的一种负载均衡设备的健康检测方法及装置的系统框图。
如图1所示,系统架构10可以包括健康检测设备101,负载均衡设备102、网络103,后端服务器104、105、106。网络103用以在健康检测设备101和负载均衡设备102之间、负载均衡设备102和后端服务器104、105、106之间提供通信链路的介质。网络103可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用健康检测设备101通过网络103与负载均衡设备102交互,以接收或发送数据等。负载均衡设备102上可以安装有各种通讯客户端应用,例如TCP类应用、HTTPS应用、SQL应用等。
后端服务器104、105、106可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
负载均衡设备102中健康检测进程可例如调用连接函数,所述连接函数用于连接后端服务器104、105、106;负载均衡设备102可例如根据所述连接函数获取当前进程名称;负载均衡设备102可例如将所述当前进程名称和预设内核配置进行匹配;负载均衡设备102可例如在匹配成功时,获取匹配成功的进程名称对应的端口范围;负载均衡设备102可例如基于所述端口范围和后端服务器104、105、106建立连接以进行健康检测。
在健康检测通过后,负载均衡设备102将访问请求转发到后端服务器104、105、106进行处理。
负载均衡设备102可以是一个实体的服务器,还可例如为多个服务器组成,需要说明的是,本申请实施例所提供的负载均衡设备的健康检测方法可以由负载均衡设备102执行,相应地,负载均衡设备的健康检测装置可以设置于负载均衡设备102中。
图2是根据一示例性实施例示出的一种负载均衡设备的健康检测方法的流程图。负载均衡设备的健康检测方法20至少包括步骤S202至S210。
如图2所示,在S202中,健康检测进程调用连接函数,所述连接函数用于连接后端服务器。健康检测进程可例如创建套接字连接;基于所述套接字连接调用所述连接函数。
Socket(套接字连接)是计算机网络中的一种通信机制,它允许两个程序在不同计算机上通过网络进行通信。在使用套接字进行通信时,一个程序作为客户端,另一个程序作为服务器端,它们通过创建和使用套接字进行数据传输。可以将套接字理解为网络通信的接口,它提供了一种标准的通信方式,使得不同的程序能够在网络上进行数据交换。
在Socket连接中,健康检测进程会向负载均衡端的指定端口发送一个连接请求,负载均衡端会接受这个连接请求,然后通过套接字与健康检测进程进行通信。
在S204中,根据所述连接函数获取当前进程名称。可通过所述连接函数调用内核的inet_get_local_port_range函数;还可通过所述inet_get_local_port_range函数获取所述当前进程名称。
更具体的,以建立tcp为例,在用户态调用connect接口连接实服务器时,程序最终会陷入内核,之后调用内核inet_stream_connect处理函数,然后调用tcp_v4_connect函数,最终会调用到inet_get_local_port_range函数获取当前进程名称。
因此,健康检查进程调用流程在健康检查进程创建socket,以tcp为例,在用户态调用connect接口连接实服务器时,程序最终会陷入内核,调用内核inet_stream_connect处理函数,然后调用tcp_v4_connect函数,最终会调用到inet_get_local_port_range函数,在此函数中选择程序可以使用的源端口范围。在此函数中增加处理流程,如果用户配置了基于进程的源端口范围配置,那么首先获取当前进程名称,如果此程序名称和用户配置的进程名称相同,那么就将用户配置的端口范围返回,如果不是,那么按照以前流程处理。从而实现了基于用户配置的进程名称来选择源端口范围的功能。
在S206中,将所述当前进程名称和预设内核配置进行匹配。
在一个实施例中,还包括:根据用户设置的多个进程名称和端口范围的对应关系生成所述预设内核配置。
在S208中,在匹配成功时,获取匹配成功的进程名称对应的端口范围。
更具体的,如果用户配置了基于某个进程的源端口范围配置,那么首先获取当前进程名称,如果此程序名称和用户配置的进程名称相同,那么就将用户配置的端口范围返回。从而实现了基于用户配置的进程名称来选择源端口范围的功能。
在一个实施例只用,如果未匹配到程序名称,那么可按照用户设置的默认流程确定端口范围。
在S210中,基于所述端口范围和后端服务器建立连接以进行健康检测。可例如,将所述端口范围返回给所述健康检测进程;所述健康检测进程根据所述端口范围和所述后端服务器建立连接以进行健康检测。
根据本申请的负载均衡设备的健康检测方法,通过康检测进程调用连接函数,所述连接函数用于连接后端服务器;根据所述连接函数获取当前进程名称;将所述当前进程名称和预设内核配置进行匹配;在匹配成功时,获取匹配成功的进程名称对应的端口范围;基于所述端口范围和后端服务器建立连接以进行健康检测的方式,能够满足不同进程的需要,为不同的进程提供不同的健康检测端口范围,从而避免服务调度选择的源端口冲突问题,提升负载均衡设备健康检测的准确度。
应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请的原理不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
图3是根据另一示例性实施例示出的一种负载均衡设备的健康检测方法的流程图。图3所示的流程30是对图2所示的流程中的补充描述。
如图3所示,在S302中,获取多个进程名称和端口范围的对应关系。
在S304中,通过所述多个进程名称和端口范围的对应关系生成内核配置数据。
在S306中,将所述内核配置数据发送到内核。可通过proc文件系统将所述预设内核配置下发到内核。在本申请中,proc文件系统是一种特殊的,由软件创建的文件系统,proc文件系统是一种linux用户态与内核态通信的方式之一,借助于proc文件系统,一方面可以从内核读数据,另一方面也可以向内核写数据。
在S308中,内核解析所述内核配置数据生成所述预设内核配置。可例如,内核在命令回调函数中解析所述内核配置数据;获取进程名称和端口范围的对应关系;对所述进程名称和端口范围的对应关系进行合法性校验;在合法性校验通过后,生成所述预设内核配置。
在一个实施例中,还包括:将所述预设内核配置储存到结构体变量中。
其中,可具体为增加net.ipv4.ip_local_port_range_by_process配置;
其配置格式为net.ipv4.ip_local_port_range_by_process=进程名称起始端口结束端口;
其中,进程名称为应用程序进程名称,起始端口和结束端口为应用程序连接服务器时,其源端口在起始端口到结束端口这个范围内。
当执行:
sysctl w net.ipv4.ip_local_port_range_by_process=“进程名称起始端口结束端口”命令时,可通过proc文件系统将配置下发到内核。
对应的,可在内核中增加命令解析模块回调函数:
“sysctl w net.ipv4.ip_local_port_range_by_process”;
在内核定义process_port_range结构体,其包括进程名称、起始端口、结束端口3个字段,当接收到用户态配置时,在此命令回调函数里面解析配置,首先对用户配置进行合法性校验,如起始端口及结束端口都是数字,且范围在1~65535,校验通过后,将配置保存到process_port_range结构体变量中。
因此,用户态配置模块在配置方面采用proc文件系统与内核通信,proc文件系统是一种特殊的,由软件创建的文件系统,其是一种linux用户态与内核态通信的方式之一,可以从内核读数据,也可以向内核写数据。具体为增加net.ipv4.ip_local_port_range_by_process配置,其配置格式为net.ipv4.ip_local_port_range_by_process=进程名称起始端口结束端口,其中进程名称为应用程序进程名称,起始端口和结束端口为应用程序连接服务器时,其源端口在起始端口到结束端口这个范围内。当执行sysctl wnet.ipv4.ip_local_port_range_by_process=“进程名称起始端口结束端口”命令时,通过proc文件系统将配置下发到内核。
内核解析配置模块在内核增加“sysctl w net.ipv4.ip_local_port_range_by_process”命令解析模块回调函数,在内核定义process_port_range结构体,其包括进程名称、起始端口、结束端口3个字段,当接收到用户态配置时,在此命令回调函数里面解析配置,首先对用户配置进行合法性校验,如起始端口及结束端口都是数字,且范围在1~65535,校验通过后,将配置保存到process_port_range结构体变量中。
图4是根据另一示例性实施例示出的一种负载均衡设备的健康检测方法的流程图。图4所示的流程40是对图2所示的流程中S210“基于所述端口范围和后端服务器建立连接以进行健康检测”的详细描述。
如图4所示,在S402中,将所述端口范围返回给所述健康检测进程。
在S404中,所述健康检测进程由所述端口范围内确定目标端口。
在S406中,所述健康检测进程定期基于所述目标端口和后端服务器建立连接。可通过定时周期性的去访问服务器应用,更具体的,如服务器应用基于HTTP协议的应用,所述健康检测进程可以通过建立TCP连接进行健康检查,也可以发送HTTP请求给web服务器,通过检测访问是否正常,以探测服务或者服务器的可用性。
在S408中,基于所述连接所述健康检测进行发送探测访问请求。
在S410中,根据探测访问请求的响应数据确定所述后端服务器的健康状态。如果服务器没有响应探测请求,负载均衡器可将这个后端服务器暂时从健康列表里删除,后续客户端发送的服务请求将不会再发给这个不可用的服务器。如果健康检查系统探测到以前不可用的服务器已经恢复服务,这个服务器将会被加回服务器健康列表,并且后续的客户端请求将会发给这个服务器。
根据本申请的负载均衡设备的健康检测方法,可基于进程名称来配置源端口范围接口,配置不限于proc文件系统。在内核选择连接的源端口时,可优先根据用户基于进程名称来选择选择源端口范围。
通过本申请的基于进程的预先设置选择连接服务器源端口的方案,使得在健康检测时,连接的端口不会与四层或七层虚服务调度选择的源端口相同,这种端口不冲突的方式,既不会影响负载调度及健康检查;也不会影响系统其他进程选择源端口范围,系统其他进程仍然可以在1~65535范围内选择端口,满足不同进程的需要。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本申请提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图5是根据一示例性实施例示出的一种负载均衡设备的健康检测装置的框图。如图5所示,负载均衡设备的健康检测装置50包括:调用模块502,名称模块504,匹配模块506,范围模块508,检测模块510,负载均衡设备的健康检测装置50还可包括:初始模块512。
调用模块502用于健康检测进程调用连接函数,所述连接函数用于连接后端服务器;调用模块502还用于健康检测进程创建套接字连接;基于所述套接字连接调用所述连接函数。
名称模块504用于根据所述连接函数获取当前进程名称;名称模块504还用于通过所述连接函数调用内核的inet_get_local_port_range函数;通过所述inet_get_local_port_range函数获取所述当前进程名称。
匹配模块506用于将所述当前进程名称和预设内核配置进行匹配;
范围模块508用于在匹配成功时,获取匹配成功的进程名称对应的端口范围;
检测模块510用于基于所述端口范围和后端服务器建立连接以进行健康检测。检测模块510还用于将所述端口范围返回给所述健康检测进程;所述健康检测进程根据所述端口范围和所述后端服务器建立连接以进行健康检测。
初始模块512用于根据用户设置的多个进程名称和端口范围的对应关系生成所述预设内核配置。初始模块512还用于获取多个进程名称和端口范围的对应关系;通过所述多个进程名称和端口范围的对应关系生成内核配置数据;将所述内核配置数据发送到内核;内核解析所述内核配置数据生成所述预设内核配置。
根据本申请的负载均衡设备的健康检测装置,通过康检测进程调用连接函数,所述连接函数用于连接后端服务器;根据所述连接函数获取当前进程名称;将所述当前进程名称和预设内核配置进行匹配;在匹配成功时,获取匹配成功的进程名称对应的端口范围;基于所述端口范围和后端服务器建立连接以进行健康检测的方式,能够满足不同进程的需要,为不同的进程提供不同的健康检测端口范围,从而避免服务调度选择的源端口冲突问题,提升负载均衡设备健康检测的准确度。
图6是根据一示例性实施例示出的一种电子设备的框图。
下面参照图6来描述根据本申请的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书中描述的根据本申请各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图2,图3,图4中所示的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备600’(例如键盘、指向设备、蓝牙设备等)通信,使得用户能与该电子设备600交互的设备通信,和/或该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图7所示,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本申请实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:康检测进程调用连接函数,所述连接函数用于连接后端服务器;根据所述连接函数获取当前进程名称;将所述当前进程名称和预设内核配置进行匹配;在匹配成功时,获取匹配成功的进程名称对应的端口范围;基于所述端口范围和后端服务器建立连接以进行健康检测。
该计算机可读介质还可实现如下功能:根据用户设置的多个进程名称和端口范围的对应关系生成所述预设内核配置。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施例的方法。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (10)
1.一种负载均衡设备的健康检测方法,其特征在于,包括:
健康检测进程调用连接函数,所述连接函数用于连接后端服务器;
根据所述连接函数获取当前进程名称;
将所述当前进程名称和预设内核配置进行匹配;
在匹配成功时,获取匹配成功的进程名称对应的端口范围;
基于所述端口范围和后端服务器建立连接以进行健康检测。
2.如权利要求1所述的方法,其特征在于,还包括:
根据用户设置的多个进程名称和端口范围的对应关系生成所述预设内核配置。
3.如权利要求2所述的方法,其特征在于,根据用户设置的多个进程名称和端口范围的对应关系生成所述预设内核配置,包括:
获取多个进程名称和端口范围的对应关系;
通过所述多个进程名称和端口范围的对应关系生成内核配置数据;
将所述内核配置数据发送到内核;
内核解析所述内核配置数据生成所述预设内核配置。
4.如权利要求3所述的方法,其特征在于,将所述内核配置数据发送到内核,包括:
通过proc文件系统将所述预设内核配置下发到内核。
5.如权利要求3所述的方法,其特征在于,内核解析所述内核配置数据生成所述预设内核配置,包括:
内核在命令回调函数中解析所述内核配置数据;
获取进程名称和端口范围的对应关系;
对所述进程名称和端口范围的对应关系进行合法性校验;
在合法性校验通过后,生成所述预设内核配置。
6.如权利要求5所述的方法,其特征在于,生成所述预设内核配置,还包括:
将所述预设内核配置储存到结构体变量中。
7.如权利要求1所述的方法,其特征在于,健康检测进程调用连接函数,包括:
健康检测进程创建套接字连接;
基于所述套接字连接调用所述连接函数。
8.如权利要求1所述的方法,其特征在于,根据所述连接函数获取当前进程名称,包括:
通过所述连接函数调用内核的inet_get_local_port_range函数;
通过所述inet_get_local_port_range函数获取所述当前进程名称。
9.如权利要求1所述的方法,其特征在于,基于所述端口范围和后端服务器建立连接以进行健康检测,包括:
将所述端口范围返回给所述健康检测进程;
所述健康检测进程根据所述端口范围和所述后端服务器建立连接以进行健康检测。
10.一种负载均衡设备的健康检测装置,其特征在于,包括:
调用模块,用于健康检测进程调用连接函数,所述连接函数用于连接后端服务器;
名称模块,用于根据所述连接函数获取当前进程名称;
匹配模块,用于将所述当前进程名称和预设内核配置进行匹配;
范围模块,用于在匹配成功时,获取匹配成功的进程名称对应的端口范围;
检测模块,用于基于所述端口范围和后端服务器建立连接以进行健康检测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310776414.2A CN116781571A (zh) | 2023-06-28 | 2023-06-28 | 负载均衡设备的健康检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310776414.2A CN116781571A (zh) | 2023-06-28 | 2023-06-28 | 负载均衡设备的健康检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116781571A true CN116781571A (zh) | 2023-09-19 |
Family
ID=88011319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310776414.2A Pending CN116781571A (zh) | 2023-06-28 | 2023-06-28 | 负载均衡设备的健康检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116781571A (zh) |
-
2023
- 2023-06-28 CN CN202310776414.2A patent/CN116781571A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107277153B (zh) | 用于提供语音服务的方法、装置和服务器 | |
WO2021259013A1 (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN110069358A (zh) | 调用链跟踪分析方法、装置、电子设备及存储介质 | |
CN107635010B (zh) | 流量调度方法、装置、计算机可读存储介质及电子设备 | |
US20150319221A1 (en) | Tracing business transactions based on application frameworks | |
CN111737022A (zh) | 一种基于微服务的接口调用方法、系统、设备及介质 | |
WO2017180774A1 (en) | Optimal service provider selection | |
US10067862B2 (en) | Tracking asynchronous entry points for an application | |
CN109033814A (zh) | 智能合约触发方法、装置、设备及存储介质 | |
CN114513552B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113709243B (zh) | 设备远程控制方法及装置、电子设备和存储介质 | |
CN114296953A (zh) | 一种多云异构系统及任务处理方法 | |
CN113191889A (zh) | 风控配置方法、配置系统、电子设备及可读存储介质 | |
US11720089B2 (en) | Decoupled load generation architecture | |
WO2024001240A1 (zh) | 多种技术栈的任务集成方法及装置 | |
CN110275701B (zh) | 数据处理方法、装置、介质和计算设备 | |
CN114785861B (zh) | 一种服务请求转发系统、方法、计算机设备和存储介质 | |
CN112929453B (zh) | 一种共享session数据的方法和装置 | |
CN116781571A (zh) | 负载均衡设备的健康检测方法及装置 | |
CN113179317B (zh) | 内容重写设备的测试系统及方法 | |
CN111949862B (zh) | 一种管理业务任务流程的方法、装置和电子设备 | |
WO2021243665A1 (zh) | 编译方法、编译装置、编译系统、存储介质与电子设备 | |
CN114546743A (zh) | 设备接口性能的测试方法及装置 | |
CN112416509B (zh) | 虚拟机控制系统及相关设备 | |
US20150222505A1 (en) | Business transaction resource usage tracking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |