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

连接建立方法、系统、设备和存储介质与流程

2022-03-19 21:33:17 来源:中国专利 TAG:


1.本技术涉及计算机领域,尤其涉及连接建立方法、系统、设备和存储介质。


背景技术:

2.负载均衡slb(server load balancer)是一种对流量进行按需分发的服务,通过将流量分发到不同的后端服务器来扩展应用系统的吞吐能力,并且可以消除系统中的单点故障,提升应用系统的可用性。
3.但是一些场景下对客户端ip地址做了fnat转换,则后端服务器无法直接获取客户端的真实ip。则通过代理协议(proxy protocol)携带源端信息(源ip、目的ip、源端口、目的端口等)添加到tcp数据报文头中,从而使得后端服务器能够获得源端信息。但是有一些负载均衡集群中有的后端服务器不支持代理协议,在客户端和负载均衡器无法区分出哪些后端服务器不支持代理协议的情况下,若将携带有代理协议的数据报文发送给不支持代理协议的后端服务器,则会导致不支持代理协议的后端服务器数据解析失败。因此,需要一种能够满足多种连接建立需求的方案。


技术实现要素:

4.为解决或改善现有技术中存在的问题,本技术各实施例提供了连接建立方法、系统、设备和存储介质。
5.第一方面,在本技术的一个实施例中,提供了一种连接建立方法。该方法包括:
6.接收客户端发送的连接请求信息;其中,所述连接请求信息中携带有代理信息;
7.具有第一内核模块时,忽略所述代理信息,并基于所述连接请求信息向所述客户端反馈连接响应以与所述客户端建立连接;
8.具有第二内核模块时,通过所述第二内核模块获取所述代理信息以参与相应处理,并基于所述连接请求向所述客户端反馈连接响应以与所述客户端建立连接;其中,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
9.第二方面,在本技术的一个实施例中,提供了另一种连接建立方法。该方法包括:
10.构建包含有代理信息连接请求信息;所述连接请求信息中携带有代理信息;
11.发送所述连接请求信息给具有第一内核模块的后端服务器,以便所述后端服务器在忽略所述代理信息的情况下,接收到与所述后端服务器建立连接的反馈信息;
12.发送所述连接请求信息给具有第二内核模块的后端服务器,以便通过所述第二内核模块获取所述代理信息以参与相应处理的情况下,接收到与所述后端服务器建立连接的反馈信息;其中,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
13.第三方面,在本技术的一个实施例中,提供了再一种连接建立方法。该方法包括:
14.接收客户端提供的连接请求信息;其中,所述连接请求信息中包含有代理信息;
15.发送所述连接请求信息给具有第一内核模块或具有第二内核模块的后端服务器;以便具有第一内核模块的后端服务器在忽略所述代理信息的情况下与所述后端服务器建
立连接,或者,具有第二内核模块的后端服务器在获取所述代理信息以参与相应处理的情况下与所述后端服务器建立连接;其中,第一内核模块为未升级代理协议功能的内核模块,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
16.第四方面,在本技术的一个实施例中,提供了一种电子设备,包括存储器及处理器;其中,
17.所述存储器,用于存储程序;
18.所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于实现第一方面所述的一种连接建立方法或第二方面所述的另一种连接建立方法或第三方面所述的再一种连接建立方法。
19.第四方面,在本技术的一个实施例中,提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如第一方面所述的一种连接建立方法或第二方面所述的另一种连接建立方法或第三方面所述的再一种连接建立方法。
20.本发明实施例提供的技术方案,在负载均衡集群中,有的后端服务器支持代理协议,有的则不支持代理协议。在本方案中,通过将代理信息插入到第一次握手报文中的方式发送给后端服务器,并且确保该第一次握手报文中未携带用户数据,则后端服务器将基于关联的代理协议类型,对所述第一次握手报文进行解析;若解析得到所述代理信息和握手数据,则基于所述代理信息,获取所述客户端的源端信息;并基于所述代理信息和握手数据建立与客户端的连接;若未解析到所述代理协议,则基于所述握手数据与所述客户端连接。通过上述方案,也就是在负载均衡集群中可以同时包含有多种不同类型的后端服务器,将协议内容插入到第一次握手报文中,不会对不支持代理协议的后端服务器连接产生负面影响,同时还能够满足与支持代理协议的后端服务器建立连接的需求,能够满足多样化连接需求。
21.此外,虽然在负载均衡集群中可能同时包含有不同版本的内核模块,但是基于上述方案,构建的连接请求信息能够同时满足具有不同版本内核模块的多种后端服务器的连接需求,不支持代理协议的旧版本内核模块忽略代理信息并不会产生错误,支持代理协议的新版本内核能够获取到所需的代理信息。在不对集群中服务停止、不影响用户数据访问请求的情况下,可以实现对负载均衡集群中的各个后端服务器逐个进行升级为支持代理协议的内核版本,更好的提升后端服务器内核版本的平滑升级与灰度发布效果。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1为本技术实施例提供的一种负载均衡集群的结构示意图;
24.图2为本技术实施例提供的一种连接建立方法的流程示意图;
25.图3为本技术实施例提供的基于第一内核模块建立连接的流程示意图;
26.图4为本技术实施例提供的基于第二内核模块建立连接的流程示意图;
27.图5为本技术实施例举例说明的一种基于负载均衡器建立连接的过程示意图;
28.图6为本技术实施例提供的另一种连接建立方法的流程示意图;
29.图7为本技术实施例提供的再一种连接建立方法的流程示意图;
30.图8为本技术实施例提供的一种服务系统的结构示意图;
31.图9为本技术实施例提供的一种连接建立装置的结构示意图;
32.图10为本技术实施例提供的一种电子设备的结构示意图;
33.图11为本技术实施例提供的另一种连接建立装置的结构示意图;
34.图12为本技术实施例提供的另一种电子设备的结构示意图;
35.图13为本技术实施例提供的再一种连接建立装置的结构示意图;
36.图14为本技术实施例提供的另一种电子设备的结构示意图。
具体实施方式
37.如图1为本技术实施例提供的一种负载均衡集群的结构示意图。从图1中可以看到,包括客户端、负载均衡器以及多个后端服务器。在负载均衡集群一些特定的场景下,负载均衡器(server load balancer,slb)挂载经典云服务器(elastic compute service,ecs),负载均衡器采用源和目的地址转换(full net address translation,fnat)方式进行转发。在这种情况下,客户端发送给负载均衡器的报文中源端信息(比如,源地址)会被替换为负载均衡器提供的地址,也就是后端服务器无法看到源地址等真实源端信息。后来,通过对后端服务器的内核进行升级后,完成升级的后端服务器能够获取到所需的客户端的源端信息。容易理解的是,在负载均衡集群当中,包含有多个后端服务器,若要使得后端服务器都具有支持代理协议的内核,则通常需要对集群中所有服务端做停机处理,进而实现整体升级,对用户影响较大。若在建立客户端与后端服务器的连接关系之后,通过第一个数据包发送包含有代理协议的数据,然而,在对后端服务器进行健康检测的时候,可能会出现代理协议被串改的风险。因此,需要一种能够满足客户端与多种不同内核版本的后端服务器建立连接的方案。此外,还需要能够帮助负载聚会集群实现对后端服务器的平滑升级、灰度发布的方案。
38.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
39.在本发明的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
40.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.如图2为本技术实施例提供的一种连接建立方法的流程示意图。该方法可以应用
于后端服务器,需要说明的是,由于在负载均衡集群当中可以同时包含有很多后端服务器,因此,这些后端服务器对应的内核版本可能不完全相同。所述方法具体包括如下步骤:
42.201:接收客户端发送的连接请求信息;其中,所述连接请求信息中携带有代理信息。
43.202:具有第一内核模块时,忽略所述代理信息,并基于所述连接请求信息向所述客户端反馈连接响应以与所述客户端建立连接。
44.203:具有第二内核模块时,通过所述第二内核模块获取所述代理信息以参与相应处理,并基于所述连接请求向所述客户端反馈连接响应以与所述客户端建立连接;其中,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
45.在实际应用中,为了满足客户端的访问需求,使得用户能够获得更好的访问体验,会通过负载均衡器将客户端的访问流量均衡到多个后端服务器上。在一些特殊应用场景中,比如,审计场景、鉴权场景等,需要对客户端真实信息进行识别时,后端服务器需要获取客户端的真实源端信息(源地址等)。为了使得后端服务器能够获得真实源端信息,在客户端与后端服务器建立连接之后,可以采用代理协议(proxy protocol)对数据报文中用户数据头做了插入修改,这就需要接收该携带有代理协议的数据报文的后端服务器能够支持代理协议。具体来说,
46.由于在负载均衡集群中,有很多后端服务器,有的后端服务器采用的是不支持代理协议的旧版本的第一内核模块,有的后端服务器则采用的是支持代理协议的新版本的第二内核模块,其中,第二内核模块可以是基于第一内核模块进行一次或多次(内核)版本升级后得到的。客户端在进行访问的时候,客户端和负载均衡器都不会区分后端服务器是否支持代理协议,因此,为了满足后端服务器获取客户端源端信息需求,通常会发送携带有代理协议的一种类型的信息,也就是,为了完成一项任务,客户端或负载均衡器不会针对不同的后端服务器发送支持不同类型协议的信息。具有第一内核模块的后端服务器无法支持代理协议,换言之,如果在客户端与后端服务器建立连接之后,将插入有代理信息的数据报文发送给具有第一内核模块的后端服务器,将会在后端服务器的健康检查期间,协议栈会对该数据报文进行正常处理,而数据报文中携带的代理信息也会被当做正常的用户数据进行处理,那么就会导致对代理信息进行串改而发生错误。因此,本方案选择将代理信息插入到连接请求信息当中,在建立客户端与后端服务器连接的过程中,协议栈忽略代理信息,并不会把代理信息当做普通用户数据进行处理,该代理信息对用户不可见,也就不会出现错误,同时连接请求信息也能够实现正常的连接操作,执行三次握手并建立客户端与后端服务器的连接。比如,这里所说的连接请求信息可以是第一握手连接信息,通过将代理信息插入到用于携带用户数据的第一次握手报文包(syn报文)中,从而能够有效避免在发送报文中携带代理信息时导致错误发生。后端服务器会向客户端反馈连接相应,以通知客户端连接建立成功。
47.同样的,如果将携带有代理信息的连接请求信息发送给具有第二内核模块的后端服务器,那么,后端服务器将会通过第二内核模块对连接请求信息进行解析,从而能够获取到其中携带的代理信息(包含源端地址等信息)。并基于连接请求信息建立客户端与后端服务器的连接。后端服务器会向客户端反馈连接相应,以通知客户端连接建立成功。
48.通过将代理信息插入到连接请求信息当中,使得客户端在发送携带有代理信息的
连接请求信息给具有旧版本第一内核模块的后端服务器和具有新版本第二内核模块的后端服务器,满足后端服务器获取源端信息需求的同时,而且不需要区分内核版本。
49.当然,在实际应用中,为了不影响用户的使用,可以基于上述方案对具有旧版本第一内核模块的后端服务器逐个升级的方式进行升级操作,从而升级到能够支持代理协议的第二内核模块,在进行升级期间,可以通过发送连接请求信息的方式,实测客户端与后端服务器建立连接,并使得具有第二内核模块的后端服务器能够获取到所需的代理信息,以及使得具有第一内核模块的后端服务器忽略代理信息。从而实现在同时具有新旧版本内核的后端服务器中的旧版本进行升级过程中用户无感知的灰度发布、平滑升级的效果。
50.此外,有些负载均衡器只有在发送第一次握手报文包的时候参与均衡调度工作中,因此,采用本技术方案能够很好的避免建立连接之后第一个数据报文中插入代理信息导致第一内核模块无法成功建立连接的情况发生。
51.如上述步骤202所述,忽略所述代理信息,包括:检测所述连接请求信息中传输控制协议快速打开参数的状态;状态为关闭状态时,忽略所述代理信息。
52.这里所说的传输控制协议快速打开(tcp fast open,tfo)是tcp协议的一种,它允许后端服务器和客户端在连接建立握手阶段交换数据,从而使应用节省了一个rtt的时延。tfo数据是插入到连接请求信息(第一次握手报文包,syn报文)中的用户数据,若tfo参数的状态为打开状态时,则连接请求信息中的用户数据能够被协议栈读取。换言之,若此时在连接请求信息中插入的是代理信息,而且客户端所发送的连接请求信息中还将tfo参数的状态设置为打开状态,若将该请求信息发送给具有第一内核模块的后端服务器,该后端服务器的协议栈将会对代理信息解析错误,导致无法建立连接等相关问题的发生。因此,为了使得插入到连接请求信息中的代理信息仅能够被第二内核模块的后端服务器成功解析,而对于具有第一内核模块的后端服务器来说是不可见,而且也不会对其建立连接产生不利影响,就需要将传输控制协议快速打开参数的状态设置为关闭状态。
53.如图3为本技术实施例提供的基于第一内核模块建立连接的流程示意图。从图3中可以看到,后端服务器具有第一内核模块时,基于所述连接请求信息向所述客户端反馈连接响应以与所述客户端建立连接,具体包括如下步骤:
54.301:具有第一内核模块时,对包含有所述代理信息和握手数据的所述连接请求进行解析。
55.302:若通过所述第一内核模块时未解析到所述代理信息,则基于所述握手数据与所述客户端建立连接。
56.客户端所发送的连接请求信息当中,携带有代理信息以及用于实现客户端与服务端连接建立的握手数据,同时,还需要将其中的tfo参数设置为关闭。由于tfo默认为关闭状态,那就需要保证客户端不会开启该功能就可以。
57.在具有第一内核模块的后端服务器接收到连接请求信息之后,第一内核模块把带代理信息内容的连接请求信息(syn报文)透传到第一内核模块的传输控制协议层,第一内核模块对连接请求信息(syn报文)中带但未开启tfo且未携带tfo相关参数时,连接请求信息中的代理信息会被协议栈忽略。因此,经过解析得到握手数据,但是无法解析到代理信息,使得代理信息对用户不可见,不影响客户端与具有第一内核模块的后端服务器正常tcp建立连接。在对第一内核模块进行升级之前,仍然能够使得负载均衡集群当中具有第二内
核模块的后端服务器准确获得源端信息,且不会对具有第一内核模块的后端服务器产生不利影响。进而,工作人员可以在合适的时间(不需要停止服务、不会对用户使用产生影响的时间)将该后端服务器中的第一内核模块进行升级为第二内核模块。
58.如图4为本技术实施例提供的基于第二内核模块建立连接的流程示意图。从图4中可以看到,后端服务器具有第二内核模块时,基于所述连接请求向所述客户端反馈连接响应以与所述客户端建立连接,包括:
59.401:具有第二内核模块时,对包含有所述代理信息和握手数据的所述连接请求进行解析。
60.402:若通过所述第二内核模块解析到所述代理信息和握手数据,则基于所述代理信息和所述握手数据与客户端建立连接。
61.如前文所述,在负载均衡集群当中,包含有新旧不同版本内核,为了能够满足新版本(具有第二内核模块)后端服务器能够顺利获取到源端信息,同时又不会对旧版本(具有第一内核模块)后端服务器产生不利影响。客户端所发送的连接请求信息当中,携带有代理信息以及用于实现客户端与服务端连接建立的握手数据,同时,还需要将其中的tfo参数设置为关闭。由于tfo默认为关闭状态,那就需要保证客户端不会开启该功能就可以。
62.如步骤402所述,所述具有第二内核模块时,对包含有所述代理信息和握手数据的所述连接请求进行解析,包括:
63.4021:由所述第二内核模块将所述连接请求信息透传到内核传输控制协议层。
64.4022:由所述内核传输控制协议层对所述连接请求信息进行解析。
65.4023:将解析到的所述代理信息保存到内核自定义空间,以便通过自定义接口将所述代理信息提供给用户态。
66.在实际应用中,具有第二内核模块的后端服务器接收到连接请求信息之后,通过升级后的第二内核模块以及上层应用具有处理携带有代理信息的连接请求信息的能力。具体来说,第二内核模块的内核传输控制协议层(tcp协议层)对连接请求信息进行解析得到代理信息和握手数据,第二内核模块会为其分配用于存储代理信息的存储空间(比如保存在session中),以及分配用于与用户态应用进行交互的自定义接口(比如,通过netlink自定义接口),进而可以通过自定义接口将代理信息等相关信息发送给上层应用。例如,假设具有第二内核模块的后端服务器会给用户分发一个sessionid作为标识,并将代理信息中的源端四元组存储到该sessionid对应的session当中。用户通过客户端提交请求都会把这个sessionid包含在报文头中提交给后端服务器,这样后端服务器就能区分当前请求是哪一个客户端的。
67.作为一可选实施例,所述连接请求信息为第一次握手报文。所述接收客户端发送的连接请求信息,包括:接收负载均衡器发送的所述第一次握手报文;其中,所述第一次握手报文是在所述客户端生成并提供给所述负载均衡器后,由所述负载均衡器根据具有所述第一内核模块或所述第二内核模块的后端服务器的负载情况确定并发送的。
68.如图5为本技术实施例举例说明的一种基于负载均衡器建立连接的过程示意图。在实际应用中,如图5所示,有的负载均衡器仅参与第一次握手。从图5中可以看到,客户端发送第一次握手报文(也就是连接请求信息)syn后进入syn_send状态,syn报文包含顺序号码(sequence number)seq:0给负载均衡器nglb,负载均衡器根据后端服务器的负载状态,
选择合适的后端服务器rs(包括具有第一内核模块的后端服务器和具有第二内核模块的后端服务器),负载均衡器将seq:0:128发送给对应的至少一个后端服务器。后端服务器将根据其所具有的内核类型(第一内核模块或者第二内核模块)采用相应的解析方式获得源端四元组(源ip、目的ip、源端口、目的端口),并继续执行后续两次握手以便建立连接。接下来,进行第二次握手和第三次握手,这两次握手均无需负载均衡器参与,具体来说,第二次握手,由后端服务器发送syn ack给客户端,比如seq:0,ack:1,并且其中还可以携带基于代理信息分配的sessionid。第三次握手,由客户端发送ack(比如,seq:1,ack:1)给对应的后端服务器。在顺利完成三次握手后,使得客户端与后端服务器成功建立连接。进而,能够进行正常数据报文传输。在负载均衡集群中有的负载均衡器则参与三次握手以及数据报文传输。第一次握手报文中携带有代理信息的方式以及后端服务器解析方式与图5对应实施例方案相同,这里就不再重复赘述。
69.基于同样的思路,本技术实施例还提供另一种连接建立方法。该方法可以应用于客户端。如图6为本技术实施例提供的另一种连接建立方法的流程示意图。从图6中可以看到具体包括如下步骤:
70.601:构建包含有代理信息连接请求信息;所述连接请求信息中携带有代理信息。
71.602:发送所述连接请求信息给具有第一内核模块的后端服务器,以便所述后端服务器在忽略所述代理信息的情况下,接收到与所述后端服务器建立连接的反馈信息。
72.603:发送所述连接请求信息给具有第二内核模块的后端服务器,以便通过所述第二内核模块获取所述代理信息以参与相应处理的情况下,接收到与所述后端服务器建立连接的反馈信息;其中,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
73.首先获取客户端的四元组信息,包括:源ip、目的ip、源端口、目的端口rn。基于这些源端信息生成代理信息,当然,也可以扩展支持vpcid,privatelink endpoind id等信息。客户端在构建包含有代理信息的连接请求信息的时候,不需要考虑与之连接的后端服务器是否支持proxy protocol协议。因为对于不支持proxy protocol协议的第一内核模块来说,接收到连接请求信息后,会忽略其中携带的代理信息,并通过其中携带的握手数据完成连接建立工作。而对于支持proxy protocol协议的第二内核模块来说,能够成功解析得到源ip、目的ip、源端口、目的端口rn等信息,以及基于其中携带的握手数据完成连接建立工作。
74.需要说明的是,在构建连接请求信息的时候,包含有代理信息且将传输控制协议快速打开参数的状态设置为关闭状态。具体来说,客户端所发送的连接请求信息当中,携带有代理信息以及用于实现客户端与服务端连接建立的握手数据,同时,还需要将其中的tfo参数(也就是传输控制协议快速打开参数)设置为关闭。由于tfo默认为关闭状态,那就需要保证客户端不会开启该功能就可以。因为如果开启的话,第一内核模块将会对代理信息进行错误解析,甚至会导致连接建立失败。更多具体连接建立过程,可以参见图1至图5对应的各个实施例,这里就不再重复赘述。
75.基于同样的思路,本技术实施例还提供再一种连接建立方法。该方法可以应用于负载均衡器。如图7为本技术实施例提供的再一种连接建立方法的流程示意图。从图7中可以看到具体包括如下步骤:
76.701:接收客户端提供的连接请求信息;其中,所述连接请求信息中包含有代理信
息。
77.702:发送所述连接请求信息给具有第一内核模块或具有第二内核模块的后端服务器;以便具有第一内核模块的后端服务器在忽略所述代理信息的情况下与所述后端服务器建立连接,或者,具有第二内核模块的后端服务器在获取所述代理信息以参与相应处理的情况下与所述后端服务器建立连接;其中,第一内核模块为未升级代理协议功能的内核模块。而第二内核模块则是通过对第一内核模块升级得到的支持代理协议功能的内核模块。更多具体连接建立过程,可以参见图1至图6对应的各个实施例,这里就不再重复赘述。
78.基于同样的思路,本技术实施例还提供一种服务系统。如图8为本技术实施例提供的一种服务系统的结构示意图。所述系统包括:
79.客户端801,用于通过负载均衡器向服务器发送连接请求信息;其中,所述连接请求信息中携带有代理信息;
80.所述负载均衡器802,用于为所述客户端确定目标服务器,并将所述连接请求信息发送至所述目标服务器;
81.第一服务器803,具有第一内核模块,为未升级代理协议功能的服务器;用于在自身为所述目标服务器时,忽略所述代理信息,并基于所述连接请求向所述客户端反馈连接响应以与所述客户端建立连接;
82.第二服务器804,为通过升级后具有代理协议功能的服务器,且具有配套的第二内核模块,用于在自身为所述目标服务器时,通过所述第二内核模块获取所述代理信息以参与相应处理,并基于所述连接请求向所述客户端反馈连接响应以与所述客户端建立连接。
83.需要说明的是,在实际应用中,可能同时具有多个客户端和很多个第一服务器、很多个第二服务器。虽然服务系统当中包含的服务器具有不同的内核版本,但是,将代理信息插入到连接请求信息当中,既能够满足第二服务器获取源端四元组信息的需求,又能够确保客户端成功的与第一服务器、第二服务器建立连接关系。
84.在实际应用中,负载均衡集群当中存在正在运行的服务,为了不影响用户正常使用,不能停止服务对负载均衡集群中的后端服务器进行统一升级。因此,可以采用分批次升级的方式,这样在负载均衡集群当中就会同时存在具有第一内核模块的后端服务器和具有第二内核模块的后端服务器。假设,由于审计需求或者鉴权需求,需要获取源端四元组等信息,那么可以基于源端四元组生成代理信息,并将代理信息插入到第一次握手报文当中。由于该第一次握手报文,能够被具有第二内核模块的后端服务器成功解析得到源端四元组信息,满足服务器需求,能够完成审计或者鉴权工作。对于那些不支持代理协议的后端服务器,则可以在其空闲或者不影响服务正常运行的情况下,对其第一内核模块进行升级处理,得到第二内核模块,直至所有内核模块都升级完成,所有后端服务器都开启proxy protocol协议功能,能够具有在连接建立成功后的第一个数据报文解析代理信息的能力。基于上述方式,虽然在负载均衡集群中可能同时包含有不同版本的内核模块,但是基于上述方案,构建的连接请求信息能够同时满足具有不同版本内核模块的多种后端服务器的连接需求,在不对集群中服务停止的情况下,可以实现对负载均衡集群中的各个后端服务器逐个进行升级为支持代理协议的内核版本,更好的提升后端服务器内核版本的平滑升级与灰度发布效果。
85.基于同样的思路,本技术实施例还提供一种连接建立装置。如图9为本技术实施例
提供的一种连接建立装置的结构示意图。该连接建立装置包括:
86.接收模块901,用于接收客户端发送的连接请求信息;其中,所述连接请求信息中携带有代理信息。
87.连接模块902,用于具有第一内核模块时,忽略所述代理信息,并基于所述连接请求信息向所述客户端反馈连接响应以与所述客户端建立连接。
88.连接模块902,还用于具有第二内核模块时,通过所述第二内核模块获取所述代理信息以参与相应处理,并基于所述连接请求向所述客户端反馈连接响应以与所述客户端建立连接;其中,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
89.可选地,连接模块902,还用于检测所述连接请求信息中传输控制协议快速打开参数的状态;
90.状态为关闭状态时,忽略所述代理信息。
91.可选地,连接模块902,还用于具有第一内核模块时,对包含有所述代理信息和握手数据的所述连接请求进行解析;
92.若通过所述第一内核模块时未解析到所述代理信息,则基于所述握手数据与所述客户端建立连接。
93.可选地,连接模块902,还用于具有第二内核模块时,对包含有所述代理信息和握手数据的所述连接请求进行解析;
94.若通过所述第二内核模块解析到所述代理信息和握手数据,则基于所述代理信息和所述握手数据与客户端建立连接。
95.可选地,连接模块902,还用于由所述第二内核模块将所述连接请求信息透传到内核传输控制协议层;
96.由所述内核传输控制协议层(tcp协议层)对所述连接请求信息进行解析;
97.将解析到的所述代理信息保存到内核自定义空间,以便通过自定义接口将所述代理信息提供给用户态。
98.可选地,所述连接请求信息为第一次握手报文。接收模块901,用于接收负载均衡器发送的所述第一次握手报文;其中,所述第一次握手报文是在所述客户端生成并提供给所述负载均衡器后,由所述负载均衡器根据具有所述第一内核模块或所述第二内核模块的后端服务器的负载情况确定并发送的。
99.本技术一个实施例还提供一种电子设备。如图10为本技术实施例提供的一种电子设备的结构示意图。该电子设备包括存储器1001、处理器1002及通信组件1003;其中,
100.所述存储器1001,用于存储程序;
101.所述处理器1002,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于:
102.接收客户端发送的连接请求信息;其中,所述连接请求信息中携带有代理信息;
103.具有第一内核模块时,忽略所述代理信息,并基于所述连接请求信息向所述客户端反馈连接响应以与所述客户端建立连接;
104.具有第二内核模块时,通过所述第二内核模块获取所述代理信息以参与相应处理,并基于所述连接请求向所述客户端反馈连接响应以与所述客户端建立连接;其中,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
105.上述存储器1001可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
106.进一步地,本实施例中的所述处理器1002可以具体是:可编程交换处理芯片,该可编程交换处理芯片中配置有数据复制引擎,能对接收到的数据进行复制。
107.上述处理器1002在执行存储器中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。进一步,如图10所示,电子设备还包括:电源组件1004等其它组件。
108.基于同样的思路,本技术实施例还提供另一种连接建立装置。如图11为本技术实施例提供的另一种连接建立装置的结构示意图。该另一种连接建立装置包括:
109.构建模块1101,用于构建包含有代理信息连接请求信息;所述连接请求信息中携带有代理信息。
110.发送模块1102,用于发送所述连接请求信息给具有第一内核模块的后端服务器,以便所述后端服务器在忽略所述代理信息的情况下,接收到与所述后端服务器建立连接的反馈信息。
111.发送模块1102,还用于发送所述连接请求信息给具有第二内核模块的后端服务器,以便通过所述第二内核模块获取所述代理信息以参与相应处理的情况下,接收到与所述后端服务器建立连接的反馈信息;其中,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
112.可选地,构建模块1101,用于构建包含有代理信息且将传输控制协议快速打开参数的状态设置为关闭状态的连接请求信息。
113.本技术一个实施例还提供一种电子设备。该电子设备为计算单元中备节点电子设备。如图12为本技术实施例提供的另一种电子设备的结构示意图。该电子设备包括存储器1201、处理器1202及通信组件1203;其中,
114.所述存储器1201,用于存储程序;
115.所述处理器1202,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于:
116.构建包含有代理信息连接请求信息;所述连接请求信息中携带有代理信息;
117.发送所述连接请求信息给具有第一内核模块的后端服务器,以便所述后端服务器在忽略所述代理信息的情况下,接收到与所述后端服务器建立连接的反馈信息;
118.发送所述连接请求信息给具有第二内核模块的后端服务器,以便通过所述第二内核模块获取所述代理信息以参与相应处理的情况下,接收到与所述后端服务器建立连接的反馈信息;其中,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
119.上述存储器1201可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储
器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
120.进一步地,本实施例中的所述处理器1202可以具体是:可编程交换处理芯片,该可编程交换处理芯片中配置有数据复制引擎,能对接收到的数据进行复制。
121.上述处理器1202在执行存储器中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。进一步,如图12所示,电子设备还包括:电源组件1204等其它组件。
122.基于同样的思路,本技术实施例还提供再一种连接建立装置。如图13为本技术实施例提供的再一种连接建立装置的结构示意图。该再一种连接建立装置包括:
123.接收模块1301,用于接收客户端提供的连接请求信息;其中,所述连接请求信息中包含有代理信息。
124.发送模块1302,用于发送所述连接请求信息给具有第一内核模块或具有第二内核模块的后端服务器;以便具有第一内核模块的后端服务器在忽略所述代理信息的情况下与所述后端服务器建立连接,或者,具有第二内核模块的后端服务器在获取所述代理信息以参与相应处理的情况下与所述后端服务器建立连接;其中,第一内核模块为未升级代理协议功能的内核模块,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
125.本技术一个实施例还提供一种电子设备。该电子设备为计算单元中备节点电子设备。如图14为本技术实施例提供的另一种电子设备的结构示意图。该电子设备包括存储器1401、处理器1402及通信组件1403;其中,
126.所述存储器1401,用于存储程序;
127.所述处理器1402,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于:
128.接收客户端提供的连接请求信息;其中,所述连接请求信息中包含有代理信息;
129.发送所述连接请求信息给具有第一内核模块或具有第二内核模块的后端服务器;以便具有第一内核模块的后端服务器在忽略所述代理信息的情况下与所述后端服务器建立连接,或者,具有第二内核模块的后端服务器在获取所述代理信息以参与相应处理的情况下与所述后端服务器建立连接;其中,第一内核模块为未升级代理协议功能的内核模块,所述第二内核模块是基于所述第一内核模块进行版本升级后得到的。
130.上述存储器1401可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
131.进一步地,本实施例中的所述处理器1402可以具体是:可编程交换处理芯片,该可编程交换处理芯片中配置有数据复制引擎,能对接收到的数据进行复制。
132.上述处理器1402在执行存储器中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。进一步,如图14所示,电子设备还包括:电源组件1404等其它组件。
133.本技术实施例还提供一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理
器执行如图2至图5所述的方法实施例,或者图6所述的方法实施例,或者图7所述的方法实施例。
134.基于上述实施例,在负载均衡集群中,有的后端服务器支持代理协议,有的则不支持代理协议。在本方案中,通过将代理信息插入到第一次握手报文中的方式发送给后端服务器,并且确保该第一次握手报文中未携带用户数据,则后端服务器将基于关联的代理协议类型,对所述第一次握手报文进行解析;若解析得到所述代理信息和握手数据,则基于所述代理信息,获取所述客户端的源端信息;并基于所述代理信息和握手数据建立与客户端的连接;若未解析到所述代理协议,则基于所述握手数据与所述客户端连接。通过上述方案,也就是在负载均衡集群中可以同时包含有多种不同类型的后端服务器,将协议内容插入到第一次握手报文中,不会对不支持代理协议的后端服务器连接产生负面影响,同时还能够满足与支持代理协议的后端服务器建立连接的需求,能够满足多样化连接需求。
135.此外,虽然在负载均衡集群中可能同时包含有不同版本的内核模块,但是基于上述方案,构建的连接请求信息能够同时满足具有不同版本内核模块的多种后端服务器的连接需求,不支持代理协议的旧版本内核模块忽略代理信息并不会产生错误,支持代理协议的新版本内核能够获取到所需的代理信息。在不对集群中服务停止、不影响用户数据访问请求的情况下,可以实现对负载均衡集群中的各个后端服务器逐个进行升级为支持代理协议的内核版本,更好的提升后端服务器内核版本的平滑升级与灰度发布效果。
136.这里需要说明的是:上述实施例提供的连接建立装置可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
137.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
138.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
139.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献