1.本技术涉及边缘计算技术领域,尤其涉及一种跨节点边缘计算负载均衡方法、设备、计算机可读存储介质。
背景技术:
2.kubernetes(k8s)是一个开源的,用于管理云平台中多个主机上的容器化的应用,具体功能包括容器的部署和调度,k8s可以让部署容器化的应用简单并且高效,能够自主的管理容器,从而保证云平台中的容器按照用户的期望状态运行。然而,在基于k8s的边缘计算环境中,当边缘节点没有负载均衡功能时,会造成无法负载访问流量,处理能力弱,不满足高可用等问题。
3.相关技术中,边缘节点之间的网络通常是不通的,实现边缘节点上的负载均衡时,只能通过控制面,通过控制面将访问流量转发到各个边缘节点,但是,如果控制面和边缘节点之间的网络中断,将无法在边缘节点之间实现负载均衡功能。
技术实现要素:
4.为解决上述技术问题,本技术实施例期望提供一种跨节点边缘计算负载均衡方法、设备、计算机可读存储介质,能够在边缘节点之间实现负载均衡功能。
5.本技术的技术方案是这样实现的:
6.本技术提供一种跨节点边缘计算负载均衡方法,应用于第一边缘节点,该包括:
7.通过对云端控制服务器的监听确定服务类对象被启用;
8.确定与所述服务类对象对应的多个服务实例对象,所述多个服务实例对象部署于包括所述第一边缘节点在内的多个边缘节点中;
9.根据预设负载均衡策略将访问流量通过隧道分发至所述多个边缘节点,以使所述多个边缘节点将接收到的所述访问流量转发至各自带有的所述服务实例对象,所述隧道为通过隧道服务器在所述多个边缘节点之间建立的通讯链路。
10.在一些实施例中,所述通过对云端控制服务器的监听确定服务类对象被启用,包括:
11.从云端控制服务器中将所述服务类对象的第一信息同步至本地边缘缓存,所述第一信息用于表征所述服务类对象的启用状态;
12.监控所述本地边缘缓存中的所述第一信息;确定所述服务类对象的启用情况。
13.在一些实施例中,所述确定与所述服务类对象对应的多个服务实例对象,包括:根据资源对象中记录的第二信息确定所述服务类对象与所述多个服务实例对象的对应关系,所述第二信息为所述服务类对象与所述多个服务实例对象的对应关系信息,所述资源对象存储于云服务器中,所述资源对象与所述服务类对象唯一对应。
14.在一些实施例中,所述根据预设负载均衡策略将所述访问流量通过隧道分发至多个边缘节点,包括:根据所述预设负载均衡策略配置流量转发列表;按照所述流量转发列表
将所述访问流量分发至多个边缘节点。
15.在一些实施例中,根据所述预设负载均衡策略配置流量转发列表,包括:
16.获取所述多个服务实例对象的标识信息;
17.将所述标识信息添加至所述流量转发列表;
18.通过所述预设负载均衡策略在所述流量转发列表中配置所述访问流量与所述标识信息的对应关系。
19.在一些实施例中,所述方法还包括:为所述流量转发列表设置与所述服务类对象匹配的域名信息,以使外部对象可根据所述域名信息访问所述流量转发列表。
20.在一些实施例中,所述方法还包括:确定所述第一边缘节点与所述多个边缘节点中的第二边缘节点建立传输控制协议连接;将所述访问流量发送至传输控制协议服务器,以使所述传输控制协议服务器将所述访问流量转发至所述第二边缘节点。
21.在一些实施例中,在通过对云端控制服务器的监听确定服务类对象被启用之前,所述方法还包括:接收所述云端控制服务器发送的目标指令,所述目标指令用于指定边缘节点执行负载均衡操作。
22.本技术实施例提供一种跨节点边缘计算负载均衡设备,应用于第一边缘节点,包括:
23.存储器,用于存储可执行跨节点边缘计算负载均衡指令;
24.处理器,用于执行所述存储器中存储的可执行跨节点边缘计算负载均衡指令时,实现本技术实施例提供的跨节点边缘计算负载均衡方法。
25.本技术实施例提供一种计算机可读存储介质,存储有可执行跨节点边缘计算负载均衡指令,用于引起处理器执行时,实现本技术实施例提供的跨节点边缘计算负载均衡方法。
26.本技术实施例提供了一种跨节点边缘计算负载均衡方法、设备、计算机可读存储介质,首先,通过对云端控制服务器的监听确定服务类对象被启用,然后,确定与服务类对象对应的多个服务实例对象,多个服务实例对象部署于包括第一边缘节点在内的多个边缘节点中,最后,根据预设负载均衡策略将访问流量通过隧道分发至多个边缘节点,以使多个边缘节点将接收到的访问流量转发至各自带有的服务实例对象,隧道为通过隧道服务器在多个边缘节点之间建立的通讯链路。如此,通过预设负载均衡策略将访问流量通过隧道分发至多个边缘节点,完成访问流量在各个边缘节点之间的分配,实现边缘节点之间的负载均衡功能。
附图说明
27.图1为本技术实施例提供的一种跨节点边缘计算负载均衡方法的流程示意图;
28.图2为本技术实施例提供的一种访问流量的分发方法流程示意图;
29.图3为本技术实施例提供的一种流量转发列表的配置方法流程示意图;
30.图4为本技术实施例提供的一种边缘计算环境中的负载均衡方法的流程示意图;
31.图5为本技术实施例提供的一种边缘计算环境中的负载均衡的原理示意图;
32.图6为本技术实施例提供的一种跨节点边缘计算负载均衡设备的结构示意图。
具体实施方式
33.为了使本技术的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
34.在以下的描述中,涉及到“一些实施例/另一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例/另一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
35.在以下的描述中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
36.对本技术实施例进行进一步详细说明之前,对本技术实施例中涉及的名词和术语进行说明,本技术实施例中涉及的名词和术语适用于如下的解释。
37.1)边缘计算:指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务,其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安全与隐私保护等方面的基本需求。
38.2)kubernetes(k8s):一个开源的、用于管理云平台中多个主机上的容器化的应用。
39.3)边缘节点(edge node,en):对边缘网关、边缘控制器、边缘服务器等边缘侧多种产品形态的基础共性能力的逻辑抽象,这些产品形态具备边缘侧实时数据分析、本地数据存储、实时网络联接等共性能力,包括边端节点代理(edge-core)、容器(docker)、边端缓存(cache)、负载均衡器(load balancer,lb)等部分。
40.4)控制面:k8s控制面,负载传输控制信令,用来控制一个流程建立、维护及释放,包括:集群存储(etcd)、应用程序接口服务器(api server)、云端控制服务器(cloud-core)等部分。
41.5)负载均衡:将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
42.6)隧道(tunnel):计算机网络使用tunnel协议,当一个网络协议(传输协议)封装不同的有效载荷协议,通过使用tunnel进行一个不兼容的交互网络的有效载荷,或通过一个不受信任的网络提供一个安全的路径。
43.在边缘计算环境中,k8s提供了应用部署,规划,更新,维护等机制,kubeedge等基于k8s的边缘计算平台,因为边缘节点之间的无法进行通信连接,相关技术在边缘节点之间实现负载均衡时,只能通过控制面,在控制面建立负载均衡器,负载均衡器根据负载均衡策略将访问流量从控制面转发到各个边缘节点,这导致数据传输距离加大,同时,从控制面到边缘节点一般使用隧道,这对实现边缘节点之间的负载均衡也是一个挑战,此外,当控制面和边缘节点之间的网络中断,将无法实现边缘节点之间的负载均衡。
44.本技术实施例提供一种跨节点边缘计算负载均衡方法,应用于第一边缘节点,能够在边缘节点之间实现负载均衡功能。下面,将说明本技术实施例提供的跨节点边缘计算
负载均衡方法,如图1所示,为本技术实施例提供的一种跨节点边缘计算负载均衡方法的流程示意图,该方法包括以下步骤:
45.s101、通过对云端控制服务器的监听确定服务类对象被启用。
46.需要说明的是,云端控制服务器可以是cloud-core,cloud-core属于控制面;服务类对象可以是k8s中可以运行的服务(service),服务类对象被启用可以是服务类对象在api server中被创建;第一边缘节点可以是边缘节点集群或者多个边缘节点中的任意一个边缘节点。
47.在一些实施例中,当第一边缘节点与云端控制服务器建立网络连接,在控制面中的api server中创建服务类对象后,api server将被创建的服务类对象通过cloud-core传输至第一边缘节点的edge-core,并由edge-core将该服务类对象发送至第一边缘节点的cache中。
48.s102、确定与服务类对象对应的多个服务实例对象。
49.需要说明的是,服务实例对象可以是k8s中的资源pod,pod可以是k8s云平台中的虚拟机,pod内部封装的是由docker引擎所创建的容器,pod也可以是一个虚拟化分组,pod内部可以存储一个或者多个容器。
50.在一些实施例中,一个服务类对象可以与多个服务实例对象对应,在实际中,service资源基于标签选择器将一组pod定义成一个逻辑组合,并通过自己的ip地址和端口调度代理请求至组内的pod对象之上,它向客户端隐藏了真实的、处理用户访问请求的pod资源,使得客户端的访问请求看上去就像是由service直接处理并进行响应的一样,当服务类对象创建后,与之对应的多个服务实例对象便随之确定。
51.在一些实施例中,多个服务实例对象部署于包括第一边缘节点在内的多个边缘节点中,在服务类对象创建之前,多个服务实例对象就已经完成部署,多个服务实例对象可以均部署在第一边缘节点,也可以部署在第一边缘节点和除去第一边缘节点的其他边缘节点,例如,有3个服务实例对象pod1,pod2和pod3,2个边缘节点,在对3个服务实例对象进行部署时,pod1,pod2和pod3可以均部署在第一个边缘节点上,也可以均部署在第2个边缘节点上,也可以是pod1和pod2部署在第一个边缘节点,pod3部署在第二个边缘节点上等。
52.s103、根据预设负载均衡策略将访问流量通过隧道分发至多个边缘节点,以使多个边缘节点将接收到的访问流量转发至各自带有的服务实例对象。
53.需要说明的是,访问流量可以是客户端向第一边缘节点发送的访问请求,访问请求可以是一个或者多个,负载均衡策略可以包括根据访问流量所需的处理能力信息和服务实例对象的负载信息确定的具体向哪一个边缘节点转发。
54.在一些实施例中,隧道为通过隧道服务器在多个边缘节点之间建立的通讯链路,隧道服务器位于云端,隧道可以建立在第一边缘节点和隧道服务器之间,也可以建立隧道服务器与其他边缘节点之间。
55.在实际中,若需要将第一边缘节点中的访问流量转发至其他边缘节点的pod时,访问流量可以通过第一边缘节点与隧道服务器之间的隧道转发至隧道服务器,再由隧道服务器与其他边缘节点之间的隧道将访问流量转发至其他边缘节点,从而实现访问流量在第一边缘节点和其他边缘节点之间的转发。
56.可以理解的是,通过在隧道服务器和边缘节点之间建立隧道,实现了访问流量在
各个边缘节点之间的转发,同时,访问流量可以通过隧道直接转发至任意一个边缘节点,减小了数据的传输距离。此外,访问流量的转发并不完全依赖于控制面,当控制面和边缘节点之间的网络断开后,仍然可以实现各个边缘节点之间的负载均衡功能。
57.本技术实施例中,通过对云端控制服务器的监听确定服务类对象被启用,然后,确定与服务类对象对应的多个服务实例对象,多个服务实例对象部署于包括第一边缘节点在内的多个边缘节点中,最后,根据预设负载均衡策略将访问流量通过隧道分发至多个边缘节点,以使多个边缘节点将接收到的访问流量转发至各自带有的服务实例对象。如此,通过预设负载均衡策略将访问流量通过隧道分发至多个边缘节点,完成访问流量在各个边缘节点之间的分配,实现边缘节点之间的负载均衡功能。
58.在一些实施例中,上述s101“通过对云端控制服务器的监听确定服务类对象被启用”,可以通过下述的s1011至s1012实现,以下对各个步骤进行说明。
59.s1011、从云端控制服务器中将服务类对象的第一信息同步至本地边缘缓存。
60.在一些实施例中,本地边缘缓存可以是在第一边缘节点中的建立的边端缓存cache,cache通过edge-core监听api server,实时获取服务类对象,在api server中创建服务类对象后,将获取的服务类对象保存至本地边缘缓存中。第一信息用于表征服务类对象的启用状态,服务类对象的启用状态包括服务类对象被创建和服务类对象未被创建。
61.s1012、监控本地边缘缓存中的第一信息,确定服务类对象的启用情况。
62.在一些实施例中,可以由第一边缘节点中的lb监听本地边缘缓存中的是否有服务类对象被创建,当有服务类对象被创建,则确定启用服务类对象;若没有服务类对象被创建,表明没有可以使用的服务类对象,此时,继续由lb监听本地边缘缓存中服务类对象的启用情况。
63.在一些实施例中,上述步骤s102“确定与服务类对象对应的多个服务实例对象”,在实现时,可以根据资源对象中记录的第二信息确定服务类对象与多个服务实例对象的对应关系,其中,第二信息为服务类对象与多个服务实例对象的对应关系信息。
64.需要说明的是,资源对象可以是k8s中的endpoint,资源对象存储于云服务器中,在实际应用中资源对象可以存储在etcd中,资源对象与服务类对象唯一对应,且与服务对象同名,用来记录一个服务对象对应的所有服务实例对象的访问地址。
65.在一些实施例中,上述步骤s103“根据预设负载均衡策略将访问流量通过隧道分发至多个边缘节点”可以通过如图2所示的步骤s201和步骤s202实现,以下结合图2对各个步骤进行说明。
66.s201、根据负载均衡策略配置流量转发列表。
67.在一些实施例中,流量转发列表可以在第一边缘节点的lb中创建,流量转发列表记录了包括当前服务对象和当前服务对象对应的多个服务实例对象的信息,负载均衡策略可以是根据访问流量所需的处理能力信息,将访问流量分发给转发列表中服务对象对应的不同服务实例对象。
68.s202、按照流量转发列表将访问流量分发至多个边缘节点。
69.需要说明的是,第一边缘节点收到客户端将发送的访问流量后,可以由第一边缘节点的lb根据负载均衡策略,在流量转发列表中对服务对象对应的多个服务实例对象进行负载均衡,确定访问流量需要发送的一个或多个服务实例对象,根据一个或多个服务实例
对象所在的边缘节点,将访问流量发送至各个服务对象所在的边缘节点。
70.示例性地,若通过负载均衡策略,确定需要将访问流量发送至pod1,pod3和pod6中,而pod1和pod3部署于第一边缘节点,pod6部署于第二边缘节点,此时,需要将访问流量分别转发至第一边缘节点和第二边缘节点中。在实现时,如果第一边缘节点和第二边缘节点位于同一网段,则在第一边缘节点中的访问流量可以直接转发至第二边缘节点;如果第一边缘节点和第二边缘节点位于不同网段,则需要通过隧道,将访问流量先转发至云端的隧道服务器,再由隧道服务器将访问流量转发至第二边缘节点。
71.可以理解的是,通过根据负载均衡策略配置流量转发列表,并按照流量转发列表将访问流量分发至多个边缘节点,实现了访问流量在服务对象对应的多个服务实例对象之间的分配,而多个服务实例对象可能位于多个边缘节点,从而实现了多个边缘节点之间的负载均衡功能。
72.通过步骤s201和步骤s202也即实现了根据预设负载均衡策略将所述访问流量通过隧道分发至多个边缘节点,在一些实施例中,在步骤s202之后,还可以通过以下步骤:
73.s203、为流量转发列表设置与服务类对象匹配的域名信息,以使外部对象可根据域名信息访问流量转发列表。
74.需要说明的是,设置与服务对象匹配的域名可以是为服务对象创建对应的域名信息,例如,服务对象service对应的域名信息可以是:xxx.cluster.local,通过该域名信息,外部对象例如客户端用户,可以直接访问流量转发列表中对应的服务实例对象的ip地址和端口,进一步地,使用流量转发列表中的服务实例对象对应的边缘节点进行访问流量的负载。
75.可以理解的是,通过在转发列表中为服务对象设置对应的域名信息,使得外部访问对象可以通过该域名信息直接访问流量转发列表,进而根据流量转发列表中的服务实例对象以及预设负载均衡策略,对外部访问对象的访问流量进行负载均衡。
76.如图3所示,为本技术实施例提供的一种流量转发列表的配置方法流程示意图,在本技术的一些实施例中,上述步骤s201“根据预设负载均衡策略配置流量转发列表”可以通过下述的s2011至s2013实现,以下结合图3对各个步骤进行说明。
77.s2011、获取多个服务实例对象的标识信息。
78.在一些实施例中,服务实例对象的标识信息可以是服务实例对象的ip地址和端口信息,每一个服务实例对象都有各自对应的ip地址,且互不相同,一个或多个服务实例对象的端口信息可以相同,也可以不同,当多个服务实例对象对应的端口信息相同时,表明各个服务实例对象位于同一端口,但是各个服务实例对象具有不同的ip地址。示例性地,两个服务实例对象pod1和pod2的端口均为2222,而pod1的ip地址为172.16.233.2,pod2的ip地址为172.16.233.3。
79.s2012、将标识信息添加至流量转发列表。
80.需要说明的是,服务对象标识对应的标识信息记录在资源对象中,在进行流量转发列表配置时,将各个服务实例对象各自对应的标识信息添加到转发列表中相应的位置,确保当前服务实例对象和该服务实例对象的标识信息之间的对应关系正确。
81.s2013、通过预设负载均衡策略在流量转发列表中配置访问流量与标识信息的对应关系。
82.需要说明的是,预设负载均衡策略可以是预先设定的负载均衡规则,例如可以是轮询法、随机法和最小连接法等。示例性地,当预负载均衡策略采用轮询法时,第一边缘节点上的lb便会将访问流量轮流分配给各个服务实例对象,各个服务实例对象均对该访问流量进行处理。
83.在一些实施例中,使用预设负载均衡策略对当前流量转发列表进行配置时,可以将服务实例对象对应的标识信息与当前访问信息进行绑定,例如,pod1和pod2各自对应的ip地址分别为:172.16.233.2和172.16.233.3,二者的端口号均为2222,当确定使用服务实例对象pod1和pod2对当前访问流量负载时,在流量转发列表中,将pod1和pod2的ip和端口信息与当前的访问流量相关联。
84.可以理解的是,通过在流量转发列表中配置访问流量与服务对象的标识信息之间的对应关系,可以实现当前访问流量与需要对当前访问流量进行负载的服务对象之间的绑定,从而可以根据被绑定的服务实例对象的标识信息,将访问流量转发至相应的服务实例对象。
85.基于前述的实施例,本技术实施例再提供一种跨节点边缘计算负载均衡方法,应用于当访问流量为传输控制协议访问流量的场景,该跨节点边缘计算负载均衡方法,可以包括下述步骤:
86.s301、通过对云端控制服务器的监听确定服务类对象被启用。
87.需要说明的是,云端控制服务器可以是cloud-core,cloud-core属于控制面;服务类对象可以是k8s中可以运行的服务(service),服务类对象被启用可以是服务类对象在api server中被创建。
88.在一些实施例中,当第一边缘节点与云端控制服务器建立网络连接,在控制面中的api server中创建服务类对象后,api server将被创建的服务类对象通过cloud-core传输至第一边缘节点的edge-core,并由edge-core将该服务类对象发送至第一边缘节点的cache中。
89.s302、确定与服务类对象对应的多个服务实例对象。
90.需要说明的是,服务实例对象可以是k8s中的资源pod,pod可以是k8s云平台中的虚拟机,pod内部封装的是由docker引擎所创建的容器,pod也可以是一个虚拟化分组,pod内部可以存储一个或者多个容器。
91.在一些实施例中,一个服务类对象可以与多个服务实例对象对应,在实际中,service资源基于标签选择器将一组pod定义成一个逻辑组合,并通过自己的ip地址和端口调度代理请求至组内的pod对象之上,它向客户端隐藏了真实的、处理用户访问请求的pod资源,使得客户端的访问请求看上去就像是由service直接处理并进行响应的一样,当服务类对象创建后,与之对应的多个服务实例对象便随之确定。
92.s303、当访问流量为传输控制协议访问流量时,根据预设负载均衡策略将传输控制协议访问流量通过隧道分发至多个边缘节点,以使多个边缘节点将接收到的传输控制协议访问流量转发至各自带有的服务实例对象。
93.需要说明的是,当访问流量为传输控制协议访问流量时,即访问流量的转发需要先建立连接时,确定第一边缘节点与多个边缘节点中的第二边缘节点建立传输控制协议连接。
94.需要说明的是,第二边缘节点可以是多个边缘节点中除去第一边缘节点的一个或多个边缘节点,第二边缘节点可以是根据负载均衡策略,需要将访问流量转发到的服务实例对象对应的边缘节点。传输控制协议连接可以将第一边缘节点和第二边缘节点进行连接,在建立了该连接之后,可以将传输控制协议访问流量由第一边缘节点转发至第二边缘节点。
95.s304、将访问流量发送至传输控制协议服务器,以使传输控制协议服务器将访问流量转发至第二边缘节点。
96.在一些实施例中,在第一边缘节点中的建立传输控制协议服务器,若确定访问流量转发需要建立传输控制协议连接时,则根据预设负载均衡策略,通过第一边缘节点中的lb,将访问流量发送至传输控制协议服务器,由传输控制协议服务器将该访问流量转发至第一边缘节点中的服务实例对象,或者当第一边缘节点和第二边缘节点位于不同的网段时,通过第一边缘节点和隧道服务器之间的隧道,由传输控制协议服务器将该访问流量转发至云端的隧道服务器,再通过隧道服务器和第二边缘节点之间的隧道,由隧道服务器将该访问流量转发至第二边缘节点,以使第二边缘节点将接收到的传输控制协议访问流量转发至各自带有的服务实例对象。
97.可以理解的是,通过建立传输控制协议服务器,并在第一边缘节点和第二边缘节点之间建立传输控制协议连接,使得当访问流量转发需要建立传输控制协议连接时,可以通过传输控制协议服务器将访问流量转发至第二边缘节点,实现多个边缘节点之间的负载均衡。
98.在本技术的一些实施例中,在通过对云端控制服务器的监听确定服务类对象被启用之前,即s101之前,本技术提供的跨节点边缘计算负载均衡方法还可以包括:接收云端控制服务器发送的目标指令。
99.需要说明的是,目标指令用于指定边缘节点执行负载均衡操作,目标指令可以是当创建服务对象之后,也可以是收到访问流量之后,也可以是其他任何合适的时机,云端控制服务器通过第一边缘节点的edge-core发送的执行负载均衡操作的指令,当然此处对云端控制服务器发送目标指令的时机只是示例性地说明,不做具体限定。edge-core收到该目标指令之后,将该目标指令转发至lb,由lb开启并执行负载均衡操作。
100.在一些实施例中,当第一边缘节点与云端控制服务器之间的网络断开后,第一边缘节点获取网络断开之前从云服务器获取到的服务对象和服务对象对应的服务实例对象,并保存在cache中。根据第一边缘节点在网络断开前收到的目标指令,确定执行负载均衡时,基于cache中保存的服务对象和服务对象对应的服务实例对象和预设负载均衡策略,将访问流量通过隧道分发至多个边缘节点。
101.在另一些实施例中,当第一边缘节点与云端控制服务器之间的网络连接恢复后,重新从云端控制服务器获取服务对象和服务对象对应的服务实例对象,更新缓存空间中的服务对象和服务对象对应的服务实例对象。当第一边缘节点收到云端控制服务器发送的目标指令,确定需要执行负载均衡时,基于更新后的服务对象和服务对象对应的服务实例对象和预设负载均衡策略,将访问流量通过隧道分发至多个边缘节点。
102.可以理解的是,本技术实施例提供的跨节点边缘计算负载均衡方法,可以实现不同边缘节点,包括跨不同网段边缘节点之间的负载均衡。同时,在边缘节点中设置的lb避免
了控制面负载均衡器的网络中断后无法进行访问流量转发的情况,使得当控制面和边缘节点边之间网络中断后,边缘节点也有负载均衡能力。此外,当访问流量需要进行传输控制协议连接时,也可以实现边缘节点之间的的负载均衡。
103.下面,对本技术实施例在实际应用场景中的实现过程进行介绍。
104.本技术实施例提供的一种边缘计算环境中的负载均衡方法,该方法基于边缘集群的控制面和数据面,在一些实施例中,边缘集群的控制面是k8s控制面,包括:etcd、api server和cloud-core(云端控制服务器),边缘集群的数据面是边缘节点,包括edge-core、docker、cache(本地边缘缓存)和lb。
105.如图4所示,为本技术实施例提供的一种边缘计算环境中的负载均衡方法的流程示意图,本技术实施例提供的边缘计算环境中的负载均衡方法,可以通过下述的s401至s404来实现,以下对各个步骤进行说明。
106.s401、cache监听api server(云端控制服务器),获取service对象(服务类对象)和endpoints对象(资源对象)。
107.图5为本技术实施例提供的一种边缘计算环境中的负载均衡的原理示意图,如图5所示,边缘节点1(第一边缘节点)中的edge-core通过cloud-core监听控制面中的api server,以实现同步云端的service、endpoints和pod(服务实例对象)等对象,并将同步的信息存储至cache中(从云端控制服务器中将服务类对象的第一信息同步至本地边缘缓存)。当边缘节点1的lb监听边端cache中的有service对象被创建(监控本地边缘缓存中的第一信息),lb根据service的名称查找本地缓存中的endpoints对象,endpoints对象记录了与service相关联的pod对象的识别信息(资源对象中记录的第二信息确定服务类对象与多个服务实例对象的对应关系),识别信息(服务实例对象的标识信息)包括ip地址和端口(port),这些pod对象可以运行在本边缘节点(第一边缘节点),也可能运行在其他边缘节点。
108.在一些实施例中,当控制面和边缘节点1之间网络中断时,cache保持本地缓存中的service、endpoints和pod等对象的状态不变,以便为边缘节点1提供稳定的应用状态;当控制面和边缘节点1之间网络恢复时,cache重新与api server建立连接,监听service、endpoints和pod等对象,更新cache中缓存的对象信息。
109.s402、基于service对象和后端转发列表(流量转发列表),建立负载均衡规则。
110.需要说明的是,通过为service对象创建对应的域名(设置与服务类对象匹配的域名信息),可以供外部客户端访问。在实现时,负载均衡规则可以是将endpoints对象中记录的pod对象的ip和port添加到与为service对象创建的域名相对应的后端转发列表中(将标识信息添加至流量转发列表),从而外部客户端可以通过访问该域名对应的转发列表中的pod对象。
111.在一些实施例中,若后端转发列表中的service对象被删除时,边缘节点1中的lb会将service对象对应的pod对象的ip和port从后端转发列表中移除。当下一次创建新的service对象时,后端转发列表中记录新的service对象与新的service对象对应的pod对象的ip和port。
112.s403、根据负载均衡算法(预设负载均衡策略)对后端转发列表进行流量(访问流量)负载。
113.后端转发列表中记录了可以对流量进行负载的pod对象的ip和port,负载均衡策略可以是根据轮训法、最小连接数等方法确定的pod对象,根据被确定的pod对象的ip和port,将流量转发至pod对象对应的边缘节点,实现边缘节点的的负载均衡。
114.在一些实施例中,当流量进行访问需要建立传输控制协议(transmission control protocol,tcp)连接时,可以实现tcp流量的负载均衡,在实现时,可以在边缘节点1中部署tcp代理(传输控制协议服务器),当边缘节点1的lb接收到tcp连接时,将tcp连接转发到tcp代理,由tcp代理来转发流量到pod对象中。
115.s404、在控制面和边缘节点之间建立隧道,以实现流量在不同边缘节点之间的转发。
116.如图5所示,在云端的tunnel-server(隧道服务器)与所有边缘节点之间建立隧道,保证不同网段的边缘节点之间能相互通信。如果pod对象分布在不同网段中,则需要经过隧道传递流量,在实际中,如图5所示,边缘节点1中的lb将流量传给本地的tunnel,tunnel将流量传给云端的tunnel-server,云端tunnel-server再将流量转发给不同网段的边缘节点的tunnel,例如图5中所示的边缘节点3中的tunnel,再由边缘节点3中的tunnel转发给pod,完成流量在不同边缘节点之间的转发。
117.在一些实施例中,如果pod对象分布在不同的边缘节点中,且不同边缘节点位于同一网段,例如图5中pod1和pod2位于边缘节点1,pod3位于边缘节点2,边缘节点1和边缘节点2位于同一网段,此时,流量可以直接通过边缘节点1中的lb将流量转发给边缘节点1中的pod1和pod2,以及边缘节点2中的pod3;如果pod对象分布在不同的边缘节点中,且不同边缘节点位于不同网段,例如图5中的pod4位于边缘节点3,但是边缘节点2和边缘节点3位于不同的网络,当需要将流量转发至pod4时,需要通过隧道的方式,先通过边缘节点1与tunnel-server之间的隧道将流量转发至tunnel-server,在通过边缘节点3和云端的tunnel-server之间的隧道将流量转发给边缘节点3中的pod4。
118.可以理解的是,本技术实施例提供的边缘计算环境中的负载均衡方法,可以完成在不同边缘节点之间的流量转发,实现跨不同网段边缘节点之间的负载均衡。同时,在云端和边缘节点之间的网络中断后,边缘节点仍有负载均衡能力,当流量进行访问需要建立tcp连接时,也可以针对tcp流量实现边缘节点之间的负载均衡。
119.本技术实施例还提供一种跨节点边缘计算负载均衡设备,图6为本技术实施例提供的一种跨节点边缘计算负载均衡设备的结构示意图,如图6所示,跨节点边缘计算负载均衡设备1包括:存储器11,用于存储可执行可执行跨节点边缘计算负载均衡指令;处理器12,用于执行存储器中存储的可执行可执行跨节点边缘计算负载均衡指令时,实现本技术实施例提供的方法,例如,实现本技术实施例提供的可执行跨节点边缘计算负载均衡方法。在一些实施例中,跨节点边缘计算负载均衡设备1还可以包括通信接口13,和用于连接存储器11、处理器12,以及通信接口13的总线14。
120.在本技术实施例中,上述处理器12可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器
中的至少一种。可以理解的是,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本技术实施例对此不作具体限定。
121.在本技术实施例中,总线14用于连接通信接口13、处理器11以及存储器12以及这些器件之间的相互通信。
122.在本技术实施例中,上述处理器11,用于通过对云端控制服务器的监听确定服务类对象被启用;确定与所述服务类对象对应的多个服务实例对象,所述多个服务实例对象部署于包括所述第一边缘节点在内的多个边缘节点中;根据预设负载均衡策略将访问流量通过隧道分发至所述多个边缘节点,以使所述多个边缘节点将接收到的所述访问流量转发至各自带有的所述服务实例对象,所述隧道为通过隧道服务器在所述多个边缘节点之间建立的通讯链路。
123.跨节点边缘计算负载均衡设备1中存储器12可以与处理器11连接,存储器12用于存储可执行程序代码和数据,该程序代码包括计算机操作指令,存储器12可能包含高速ram存储器,也可能还包括非易失性存储器,例如,至少两个磁盘存储器。在实际应用中,上述存储器12可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram);或者非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);或者上述种类的存储器的组合,并向处理器11提供指令和数据。
124.本技术实施例还提供一种计算机可读存储介质,存储有可执行跨节点边缘计算负载均衡指令,用于引起处理器12执行时,实现本技术实施例提供的方法,例如,本技术实施例提供的可执行跨节点边缘计算负载均衡方法。示例性的,本实施例中的跨节点边缘计算负载均衡方法指令可以被存储在光盘,硬盘,u盘等存储介质上,当存储介质中的与一种跨节点边缘计算负载均衡方法对应的程序指令被一电子设备读取或被执行时,可以实现如上述任一实施例所述的跨节点边缘计算负载均衡方法。
125.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统,或计算机程序产品。因此,本技术可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
126.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
127.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
128.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计
算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
129.以上所述,仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。
技术特征:
1.一种跨节点边缘计算负载均衡方法,应用于第一边缘节点,所述方法包括:通过对云端控制服务器的监听确定服务类对象被启用;确定与所述服务类对象对应的多个服务实例对象,所述多个服务实例对象部署于包括所述第一边缘节点在内的多个边缘节点中;根据预设负载均衡策略将访问流量通过隧道分发至所述多个边缘节点,以使所述多个边缘节点将接收到的所述访问流量转发至各自带有的所述服务实例对象,所述隧道为通过隧道服务器在所述多个边缘节点之间建立的通讯链路。2.根据权利要求1所述的方法,所述通过对云端控制服务器的监听确定服务类对象被启用,包括:从云端控制服务器中将所述服务类对象的第一信息同步至本地边缘缓存,所述第一信息用于表征所述服务类对象的启用状态;监控所述本地边缘缓存中的所述第一信息;确定所述服务类对象的启用情况。3.根据权利要求1所述的方法,所述确定与所述服务类对象对应的多个服务实例对象,包括:根据资源对象中记录的第二信息确定所述服务类对象与所述多个服务实例对象的对应关系,所述第二信息为所述服务类对象与所述多个服务实例对象的对应关系信息,所述资源对象存储于云服务器中,所述资源对象与所述服务类对象唯一对应。4.根据权利要求1所述的方法,所述根据预设负载均衡策略将所述访问流量通过隧道分发至多个边缘节点,包括:根据所述预设负载均衡策略配置流量转发列表;按照所述流量转发列表将所述访问流量分发至多个边缘节点。5.根据权利要求4所述的方法,根据所述预设负载均衡策略配置流量转发列表,包括:获取所述多个服务实例对象的标识信息;将所述标识信息添加至所述流量转发列表;通过所述预设负载均衡策略在所述流量转发列表中配置所述访问流量与所述标识信息的对应关系。6.根据权利要求4所述方法,所述方法还包括:为所述流量转发列表设置与所述服务类对象匹配的域名信息,以使外部对象可根据所述域名信息访问所述流量转发列表。7.根据权利要求1所述的方法,所述方法还包括:确定所述第一边缘节点与所述多个边缘节点中的第二边缘节点建立传输控制协议连接;将所述访问流量发送至传输控制协议服务器,以使所述传输控制协议服务器将所述访问流量转发至所述第二边缘节点。8.根据权利要求1所述的方法,在通过对云端控制服务器的监听确定服务类对象被启用之前,所述方法还包括:接收所述云端控制服务器发送的目标指令,所述目标指令用于指定边缘节点执行负载均衡操作。9.一种跨节点边缘计算负载均衡设备,应用于第一边缘节点,包括:
存储器,用于存储可执行跨节点边缘计算负载均衡指令;处理器,用于执行所述存储器中存储的可执行跨节点边缘计算负载均衡指令时,实现权利要求1至8任一项所述的方法。10.一种计算机可读存储介质,存储有可执行跨节点边缘计算负载均衡指令,用于引起处理器执行时,实现如权利要求1至8任一项所述的方法。
技术总结
本申请实施例公开了一种跨节点边缘计算负载均衡方法、设备、计算机可读存储介质。该方法包括:通过对云端控制服务器的监听确定服务类对象被启用;然后,确定与服务类对象对应的多个服务实例对象,多个服务实例对象部署于包括第一边缘节点在内的多个边缘节点中;最后,根据预设负载均衡策略将访问流量通过隧道分发至多个边缘节点,以使多个边缘节点将接收到的访问流量转发至各自带有的服务实例对象,其中,隧道为通过隧道服务器在多个边缘节点之间建立的通讯链路。如此,通过预设负载均衡策略将访问流量通过隧道分发至多个边缘节点,完成访问流量在各个边缘节点之间的分配,实现边缘节点之间的负载均衡功能。节点之间的负载均衡功能。节点之间的负载均衡功能。
技术研发人员:杨玉模 李志永 杜超
受保护的技术使用者:联想(北京)有限公司
技术研发日:2021.11.30
技术公布日:2022/3/8