CN107590001B - 负载均衡方法及装置、存储介质、电子设备 - Google Patents
负载均衡方法及装置、存储介质、电子设备 Download PDFInfo
- Publication number
- CN107590001B CN107590001B CN201710804487.2A CN201710804487A CN107590001B CN 107590001 B CN107590001 B CN 107590001B CN 201710804487 A CN201710804487 A CN 201710804487A CN 107590001 B CN107590001 B CN 107590001B
- Authority
- CN
- China
- Prior art keywords
- load balancing
- server
- container
- containers
- algorithm
- 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.)
- Active
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本公开是关于一种负载均衡方法及装置,涉及互联网应用技术领域。该方法包括:创建服务器并根据所述服务器的配置信息创建对应的复制控制器以创建负载均衡容器;启动所述负载均衡容器并根据所述配置信息驱动负载均衡实例,将所述服务器对应的端点设置为所述负载均衡实例的后端应用;获取所述后端应用的状态信息以及流量信息并根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量。该方法可以利用容器的资源隔离特性将负载均衡实例部署于容器中,从而可以避免同一服务器上不同的负载均衡实例之间的资源竞争。
Description
技术领域
本公开涉及互联网应用技术领域,具体而言,涉及一种负载均衡方法、负载均衡装置、计算机可读存储介质以及电子设备。
背景技术
在互联网时代,面对数据量的***式增长,很多互联网公司内部都采用分布式***,并且将大多数应用部署在多台服务器组成的集群中。当有应用请求时,通过负载均衡方法对应用请求进行处理,判断该请求应该被导向至哪一服务器上。
Kubernetes作为Docker(应用容器引擎)生态圈中的重要组成部分,是Google(谷歌)多年大规模容器管理技术的开源版本,是产线实践经验的最佳表现。其中,Kube-proxy是Kubernetes中的一个简单的网络代理服务器和负载均衡器;它可以对服务器(Service)的选择器(Selector)所覆盖的Pod做负载均衡来服务于服务器的访问者。
参考图1所示,可以部署Kube-proxy的节点作为服务器的入口,然后利用Iptables(IP列表)将发送到服务器的请求转发到服务器的端点(Endpoint)上。但是,由于各服务器驱动的负载均衡实例并未至于容器中,因此会引起负载均衡实例之间的资源竞争,降低了访问者的访问速率;进一步的,Iptables不能提供HTTP、HTTPS等高级协议以及更多分发算法的支持。
因此,需要提供一种新的负载均衡方法。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种负载均衡方法、负载均衡装置、计算机可读存储介质以及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
根据本公开的一个方面,提供一种负载均衡方法,包括:
创建服务器并根据所述服务器的配置信息创建对应的复制控制器以创建负载均衡容器;
启动所述负载均衡容器并根据所述配置信息驱动负载均衡实例,将所述服务器对应的端点设置为所述负载均衡实例的后端应用;
获取所述后端应用的状态信息以及流量信息并根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量。
在本公开的一种示例性实施例中,所述负载均衡实例包括HAProxy和/或Nginx。
在本公开的一种示例性实施例中,根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量包括:
根据所述状态信息以及流量信息监控所述负载均衡容器的CPU的利用率;
根据所述CPU的利用率实时的扩展或减少所述负载均衡容器的数量。
在本公开的一种示例性实施例中,根据所述CPU的利用率实时的扩展或减少所述负载均衡容器的数量包括:
判断所述利用率是否大于第一预设值,并在判断所述利用率大于第一预设值时,利用一算法调整所述复制控制器的副本数量以扩展所述负载均衡容器的数量;
判断所述利用率是否小于第二预设值,并在判断所述利用率小于第二预设值时,利用一算法调整所述复制控制器的副本数量以减少所述负载均衡容器的数量。
在本公开的一种示例性实施例中,所述算法包括轮询算法、源IP算法以及最小链接数算法中的一种。
在本公开的一种示例性实施例中,在将所述服务器对应的端点设置为所述负载均衡实例的后端应用之后,所述负载均衡方法还包括:
判断所述端点是否发生变化;
在判断所述端点发生变化时,更改所述负载均衡实例的后端应用。
在本公开的一种示例性实施例中,在创建服务器后,所述负载均衡方法还包括:
为所述服务器配置一域名,并建立所述服务器对应的负载均衡容器的IP与所述域名之间的联系。
在本公开的一种示例性实施例中,所述负载均衡方法还包括:
接收客户端发送的调用所述负载均衡容器的IP的调用请求;
响应所述调用请求为所述客户端分配所述负载均衡容器的IP以使所述客户端根据被分配到的IP访问该IP对应的负载均衡容器。
根据本公开的一个方面,提供一种负载均衡装置,包括:
创建模块,用于创建服务器并根据所述服务器的配置信息创建对应的复制控制器以创建负载均衡容器;
配置模块,用于启动所述负载均衡容器并根据所述配置信息驱动负载均衡实例,将所述服务器对应的端点设置为所述负载均衡实例的后端应用;
数量控制模块,用于获取所述后端应用的状态信息以及流量信息并根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的负载均衡方法。
根据本公开的一个方面,提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的负载均衡方法。
本公开一种负载均衡方法以及装置,通过根据服务器的配置信息创建对应的复制控制器以创建负载均衡容器;再根据配置信息驱动负载均衡实例,将服务器对应的端点设置为负载均衡实例的后端应用;最后根据负载均衡容器的状态信息以及流量信息实时的扩展或减少负载均衡容器的数量;一方面,可以利用容器的资源隔离特性将负载均衡实例部署于容器中,从而可以避免同一服务器不同容器中的负载均衡实例之间的资源竞争;另一方面,可以根据后端应用的状态信息以及流量信息实时的扩展或减少负载均衡容器的数量,不但可以解决由于负载均衡容器利用率过高造成的速度太慢的问题,同时还可以解决由于负载均衡容器利用率不高造成的资源浪费的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出负载均衡装置的框图。
图2示意性示出一种负载均衡方法的流程图。
图3示意性示出另一种负载均衡装置的框图。
图4示意性示出一种扩展或减少负载均衡容器的数量的方法流程图。
图5示意性示出一种负载均衡装置的方框图。
图6示意性示出一种用于实现上述负载均衡方法的电子设备示例图。
图7示意性示出一种用于实现上述负载均衡方法的计算机存储介质。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
首先,对Kubernetes进行简单的介绍。Kubernetes以RESTFul(REST指的是一组架构约束条件和原则;满足这些约束条件和原则的应用程序或设计就是RESTful)形式开放接口,用户可操作的REST(Representational State Transfer,表述性快递状态)对象可以包括以下几个:
Pod:Pod是Kubernetes的基本操作单元,可以把相关的一个或多个容器(Container)构成一个Pod。通常,Pod里的容器可以运行相同的应用。Pod包含的容器可以运行在同一个Minion(Host,主机)上;并且,还可以将Pod包含的容器看作一个统一管理单元,可以共享相同的Volumes、Network Namespace/IP以及Port空间。
Services:Services也是Kubernetes的基本操作单元,是真实应用服务的抽象,每一个:Services后面都可以有很多对应的容器来支持,然后通过Proxy(代理服务器)的Port(端口)和服务Selector(选择器)决定将服务请求传递给后端提供服务的哪个容器;Services对外表现为一个单一访问接口,外部不需要了解后端如何运行,因此可以给扩展或维护后端带来很大的好处。
Replication Controller:Replication Controller可以确保任何时候Kubernetes集群中有指定数量的Pod副本(Replicas)在运行;如果少于指定数量的Pod副本(Replicas),Replication Controller会启动新的Container;反之,会杀死多余的Container以保证数量不变。Replication Controller使用预先定义的Pod模板创建pods,一旦创建成功,Pod模板和创建的Pods没有任何关联,可以修改Pod模板而不会对已创建Pods有任何影响,也可以直接更新通过Replication Controller创建的Pods。对于利用Pod模板创建的Pods,Replication Controller根据Label Selector来关联,通过修改Pods的Label可以删除对应的Pods。
Labels:Labels是用于区分Pod、Service、Replication Controller的Key/Value键值对,Pod、Service、Replication Controller可以有多个Label,但是每个Label的Key只能对应一个Value。Labels是Service和Replication Controller运行的基础,为了将访问Service的请求转发给后端提供服务的多个容器,正是通过标识容器的Labels来选择正确的容器。同样,Replication Controller也使用Labels来管理通过Pod模板创建的一组容器,这样Replication Controller可以更加容易,方便地管理多个容器,无论有多少容器。
本示例实施方式中首先提供了一种负载方法。参考图2所示,该负载均衡方法可以包括以下步骤:
步骤S210.创建服务器并根据所述服务器的配置信息创建对应的复制控制器以创建负载均衡容器。
步骤S220.启动所述负载均衡容器并根据所述配置信息驱动负载均衡实例,将所述服务器对应的端点设置为所述负载均衡实例的后端应用。
步骤S230.获取所述后端应用的状态信息以及流量信息并根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量。
上述负载均衡方法中,一方面,可以利用容器的资源隔离特性将负载均衡实例部署于容器中,从而可以避免同一服务器不同容器中的负载均衡实例之间的资源竞争;另一方面,可以根据后端应用的状态信息以及流量信息实时的扩展或减少负载均衡容器的数量,不但可以解决由于负载均衡容器利用率过高造成的速度太慢的问题,同时还可以解决由于负载均衡容器利用率不高造成的资源浪费的问题。
下面,将对本示例实施方式中上述负载均衡方法中的各步骤进行详细的解释以及说明。
在步骤S210中,创建服务器并根据所述服务器的配置信息创建对应的复制控制器以创建负载均衡容器。
在本示例实施方式中,参考图3所示,首先,创建服务器(例如可以是K8sService);此处需要说明的是,可以创建一个服务器也可以创建多个服务器,本示例对此不做特殊限制;然后,利用负载均衡控制器根据该服务器的配置信息创建对应的复制控制器(例如可以是K8s Replication Controller);最后,利用该复制控制器创建预设数量(可以是一个,也可以是多个,可以根据实际情况自行设置,本示例对此不做特殊限制)的负载均衡容器。举例而言:
首先,创建一个K8s Service,该K8s Service的名称可以为“my-service”;然后,再根据“my-service”的配置信息创建对应的K8s Replication Controller;最后,再利用K8s Replication Controller创建预设数量的负载均衡容器。其中,K8s Service配置信息可以包括内存大小、流量、静态化、分布式配置文件、操作***、数据库以及连接线路等,也可以包括IIS并发连接数等,本示例对此不做特殊限制。
进一步的,当服务器创建完成后,还需要为服务器配置一域名,具体的可以包括:为所述服务器配置一域名,并建立所述服务器对应的负载均衡容器的IP与所述域名之间的联系。详细而言:
当上述K8s Service创建完成后,可以为该K8s Service配置一个唯一的域名(例如可以是k8sservice.com);然后将该K8s Service下所包含的所有负载均衡容器的IP均配置在该域名下,并建立各负载均衡容器的IP与该域名的映射关系。例如:
该K8s Service下包括了五个容器,各容器的IP分别为159.226.1.10、159.226.1.11、159.226.1.12、159.226.1.13、159.226.1.14;则将上述五个容器的IP配置在K8s Service的域名k8sservice.com下,然后建立IP:159.226.1.10、159.226.1.11、159.226.1.12、159.226.1.13以及159.226.1.14;与k8sservice.com的映射关系。
更进一步的,当上述服务器的域名配置完成以后,当客户端向服务器发送访问请求时,可以为客户端分配一个负载均衡容器的IP,具体的可以包括:接收客户端发送的调用所述负载均衡容器的IP的调用请求;响应所述调用请求为所述客户端分配所述负载均衡容器的IP以使所述客户端根据被分配到的IP访问该IP对应的负载均衡容器。详细而言:
继续参考图3所示。首先,接收一客户端发送的访问上述K8s Service的访问请求,K8s Service响应该访问请求利用一轮询算法(Roundrobin)为该客户端分配一负载均衡容器的IP;然后,客户端根据被分配到的IP访问该IP对应的负载均衡容器;该负载均衡容器中的负载均衡实例将该负均衡容器的IP发送至该容器中包括的负载均衡实例的后端应用,以使负载均衡控制器根据K8s Service的端点监控该IP对应负载均衡容器的CPU的利用率并根据该利用率增大或者缩小该容器的CPU的容量。举例而言:
当K8s Service接收到客户端发送的访问请求时,则可以利用轮询算法为该客户端分配一IP;例如:通过轮询算法得到的IP为:159.226.1.12;则可以将该IP发送给客户端以使客户端可以直接访问该IP对应的容器,减轻了服务器的压力,提高了客户端的访问速度;进一步的,还需要将该IP发送至负载均衡实例(例如可以是HAProxy)。此外,在本公开的其他示例性实施方式中,也可以通过其他算法为客户端分配负载均衡容器的IP,例如可以包括根据权重(static-rr)、最少连接者先处理(Leastconn)、根据客户端IP(Source)以及根据请求的URI(RI)等等,本示例对此不做特殊限制。通过上述方式为客户端分配IP,可以支持更多的协议,例如可以包括HTTP、HTTPS以及Layer7等高级协议,也可以包括TCP以及UDP等普通协议;解决了Iptables不能提供HTTP、HTTPS等高级协议以及更多分发算法的支持的问题,进一步提升了用户体验。
在步骤S220中,启动所述负载均衡容器并根据所述配置信息驱动负载均衡实例,将所述服务器对应的端点设置为所述负载均衡实例的后端应用。
首先,对上述负载均衡实例进行解释说明。负载均衡实例可以包括HAProxy或者Nginx;也可以包括其他实例,例如可以包括F5或者A10等等,本公开对此不做特殊限制。其中,HAProxy可以提供高可用性、负载均衡,以及基于TCP(Transmission ControlProtocol,传输控制协议)和HTTP(HyperText Transfer Protocol,超文本传输协议)的应用程序代理;HAPoxy可以适用于负载较大的网站;Nginx(Engine x)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器;同时,Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,具有占有内存少,并发能力强等特点。
其次,基于上述解释,对步骤S220进行进一步的解释说明。当上述负载均衡容器创建完成后,可以启动该负载均衡容器;该负载均衡容器内的负载均衡代理(Agent)可以根据负载均衡控制器下发的配置信息驱动相应的负载均衡实例(例如可以包括HAProxy或者Nginx等等);然后再将上述服务器的端点(Endpoints)设置为负载均衡实例的后端应用。详细而言:
启动上述负载均衡容器,然后根据该负载均衡容器的配置信息(此处需要说明的是,负载均衡容器的配置信息可以等同于K8s Service的配置信息,可以包括内存大小、流量、静态化、分布式配置文件、操作***、数据库以及连接线路等等等)驱动相应负载均衡实例(HAProxy或者Nginx);然后再将K8s Service的Endpoints设置为HAProxy或者Nginx的后端应用。此处需要进一步补充说明的是,为了进一步的提高客户端的访问速度,可以利用同一个容器中驱动一个负载均衡实例;例如:利用IP为:159.226.1.12的容器驱动负载均衡实例HAProxy,然后利用IP为:159.226.1.13的容器驱动负载均衡实例Nginx;同时,为了减少容器的数量,减少资源的浪费,也可以利用同一个容器同时驱动两个负载均衡实例,例如:利用IP为:159.226.1.12的容器同时驱动负载均衡实例HAProxy以及Nginx等等,本公开对此不做特殊限制。
进一步的,当上述后端应用设置完成后,在端点发生变化后,还需要对端点进行更改,具体的可以包括:判断所述端点是否发生变化;在判断所述端点发生变化时,更改所述负载均衡实例的后端应用。详细而言:
判断K8s Service的Endpoints是否发生变化;并在K8s Service的Endpoints发生变化后,负载均衡控制器实时的将变化后的Endpoints发送至负载均衡容器中的负载均衡代理;然后负载均衡代理将变化后的Endpoints设置为负载均衡实例的后端应用以使负载均衡控制器根据K8s Service的端点监控负载均衡容器的CPU的利用率并根据该利用率增大或者缩小该容器的CPU的容量。
在步骤S230中,获取所述后端应用的状态信息以及流量信息并根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量。
在本示例实施方式中,当上述负载均衡容器启动后,负载均衡代理(Agent)根据负载均衡实例(HAProxy或者Nginx)提供的结果定期获取后端应用的状态信息和流量信息,然后将该状态信息和流量信息上传负载均衡控制器中,然后负载均衡控制器将该状态信息和流量信息进行整理;并将处理后的状态信息以及流量信息存储至以数据库中。进一步的,还需要根据整理后的状态信息和流量信息实时的调整负载均衡容器的数量,具体的可以包括:根据所述状态信息以及流量信息监控所述负载均衡容器的CPU的利用率;根据所述CPU的利用率实时的扩展或减少所述负载均衡容器的数量。详细而言:
根据状态信息以及流量信息监控该状态信息以及流量信息对应的容器的CPU的利用率;并根据该容器的CPU的利用率实时的对该容器进行扩充容量或者减少容量;也可以重新增加新的容器以达到负载均衡的目的,本示例对此不做特殊限制。此处需要补充说明的是,由于负载均衡实例只是负责数据的转发,对CPU要求较高,对内存的要求较不敏感,因此,可以根据CPU的利用率来判断是否需要增加容器或者减少容器。
进一步的,参考图4所示,根据CPU的利用率实时的扩展或减少负载均衡容器的数量可以包括步骤S410以及步骤S420。其中:
在步骤S410中,判断所述利用率是否大于第一预设值,并在判断所述利用率大于第一预设值时,利用一算法调整所述复制控制器的副本数量以扩展所述负载均衡容器的数量。举例而言:
首先,判断该CPU的利用率是否大于第一预设值(例如可以是75%或者80%,也可以是70%等等,本示例对此不做特殊限制);其次,当该CPU的利用率大于第一预设值(75%)时,根据相应的算法调整对应的K8s Replication Controller的副本数目(例如可以增加K8s Replication Controller的副本数目)以达到扩展负载均衡容器数量的目的。此处需要补充说明的是,上述算法可以包括轮询算法、源IP算法以及最小链接数算法等等,也可以包括其他算法,例如可以是最大链接数算法等等,本示例对此不做特殊限制。
在步骤S420中,判断所述利用率是否小于第二预设值,并在判断所述利用率小于第二预设值时,利用一算法调整所述复制控制器的副本数量以减少所述负载均衡容器的数量。举例而言:
首先,判断该CPU的利用率是否小于第二预设值(例如可以是40%或者45%,也可以是30%等等,本示例对此不做特殊限制);其次,当该CPU的利用率小于第二预设值(45%)时,根据相应的算法调整对应的K8s Replication Controller的副本数目(例如可以减少K8s Replication Controller的副本数目)以达到减少负载均衡容器数量的目的。
本公开还提供了一种负载均衡装置。参考图5所示,该负载均衡装置可以包括:创建模块510、配置模块520以及数量控制模块530。其中:
创建模块510可以用于创建服务器并根据所述服务器的配置信息创建对应的复制控制器以创建负载均衡容器。
配置模块520可以用于启动所述负载均衡容器并根据所述配置信息驱动负载均衡实例,将所述服务器对应的端点设置为所述负载均衡实例的后端应用。
数量控制模块530可以用于获取所述后端应用的状态信息以及流量信息并根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量。
上述负载均衡装置中各模块的具体细节已经在对应的负载均衡方法中进行了详细想描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
下面参照图6来描述根据本发明的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:上述至少一个处理单元610、上述至少一个存储单元620、连接不同***组件(包括存储单元620和处理单元610)的总线630。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图2中所示的步骤S210:创建服务器并根据所述服务器的配置信息创建对应的复制控制器以创建负载均衡容器;S220:启动所述负载均衡容器并根据所述配置信息驱动负载均衡实例,将所述服务器对应的端点设置为所述负载均衡实例的后端应用;步骤S230:获取所述后端应用的状态信息以及流量信息并根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器660通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
参考图7所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
Claims (8)
1.一种负载均衡方法,其特征在于,包括:
创建服务器并根据所述服务器的配置信息创建对应的复制控制器,并根据所述复制控制器创建负载均衡容器;其中,所述负载均衡容器的IP与所述服务器的域名之间具有映射关系;
启动所述负载均衡容器并根据所述配置信息驱动负载均衡实例,将所述服务器对应的端点设置为所述负载均衡实例的后端应用;
获取所述后端应用的状态信息以及流量信息并根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量;
其中,根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量包括:
根据所述状态信息以及流量信息监控所述负载均衡容器的CPU的利用率;
判断所述利用率是否大于第一预设值,并在判断所述利用率大于第一预设值时,利用一算法调整所述复制控制器的副本数量以扩展所述负载均衡容器的数量;
判断所述利用率是否小于第二预设值,并在判断所述利用率小于第二预设值时,利用一算法调整所述复制控制器的副本数量以减少所述负载均衡容器的数量;
所述算法包括轮询算法、源IP算法以及最小链接数算法中的一种。
2.根据权利要求1所述的负载均衡方法,其特征在于,所述负载均衡实例包括HAProxy和/或Nginx。
3.根据权利要求1所述的负载均衡方法,其特征在于,在将所述服务器对应的端点设置为所述负载均衡实例的后端应用之后,所述负载均衡方法还包括:
判断所述端点是否发生变化;
在判断所述端点发生变化时,更改所述负载均衡实例的后端应用。
4.根据权利要求1所述的负载均衡方法,其特征在于,在创建服务器后,所述负载均衡方法还包括:
为所述服务器配置一域名,并建立所述服务器对应的负载均衡容器的IP与所述域名之间的联系。
5.根据权利要求4所述的负载均衡方法,其特征在于,所述负载均衡方法还包括:
接收客户端发送的调用所述负载均衡容器的IP的调用请求;
响应所述调用请求为所述客户端分配所述负载均衡容器的IP以使所述客户端根据被分配到的IP访问该IP对应的负载均衡容器。
6.一种负载均衡装置,其特征在于,包括:
创建模块,用于创建服务器并根据所述服务器的配置信息创建对应的复制控制器,并根据所述复制控制器创建负载均衡容器;其中,所述负载均衡容器的IP与所述服务器的域名之间具有映射关系;
配置模块,用于启动所述负载均衡容器并根据所述配置信息驱动负载均衡实例,将所述服务器对应的端点设置为所述负载均衡实例的后端应用;
数量控制模块,用于获取所述后端应用的状态信息以及流量信息并根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量;
其中,根据所述状态信息以及流量信息实时的扩展或减少所述负载均衡容器的数量包括:
根据所述状态信息以及流量信息监控所述负载均衡容器的CPU的利用率;
判断所述利用率是否大于第一预设值,并在判断所述利用率大于第一预设值时,利用一算法调整所述复制控制器的副本数量以扩展所述负载均衡容器的数量;
判断所述利用率是否小于第二预设值,并在判断所述利用率小于第二预设值时,利用一算法调整所述复制控制器的副本数量以减少所述负载均衡容器的数量;
所述算法包括轮询算法、源IP算法以及最小链接数算法中的一种。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的负载均衡方法。
8.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-5任一项所述的负载均衡方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710804487.2A CN107590001B (zh) | 2017-09-08 | 2017-09-08 | 负载均衡方法及装置、存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710804487.2A CN107590001B (zh) | 2017-09-08 | 2017-09-08 | 负载均衡方法及装置、存储介质、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107590001A CN107590001A (zh) | 2018-01-16 |
CN107590001B true CN107590001B (zh) | 2020-12-22 |
Family
ID=61051788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710804487.2A Active CN107590001B (zh) | 2017-09-08 | 2017-09-08 | 负载均衡方法及装置、存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107590001B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10719354B2 (en) * | 2017-06-20 | 2020-07-21 | Samsung Electronics Co., Ltd. | Container workload scheduler and methods of scheduling container workloads |
CN108769100A (zh) * | 2018-04-03 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种基于kubernetes容器数量弹性伸缩的实现方法及其装置 |
CN108989479B (zh) * | 2018-07-11 | 2023-05-16 | 湖北省楚天云有限公司 | 一种对云计算平台二级域名进行配置的方法和装置 |
CN110764882A (zh) * | 2018-07-25 | 2020-02-07 | 北京京东尚科信息技术有限公司 | 分布式管理方法、分布式管理***及装置 |
CN110928637A (zh) * | 2018-09-19 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 负载均衡方法和*** |
CN109343963B (zh) * | 2018-10-30 | 2021-12-07 | 杭州数梦工场科技有限公司 | 一种容器集群的应用访问方法、装置及相关设备 |
CN109189569A (zh) * | 2018-11-02 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种Docker调度优化方法、装置、终端及存储介质 |
CN109814879B (zh) * | 2019-01-16 | 2022-09-06 | 福建省天奕网络科技有限公司 | 自动化ci/cd项目部署方法、存储介质 |
CN111669357B (zh) * | 2019-03-08 | 2023-03-24 | 厦门网宿有限公司 | 一种批量处理haproxy网络隔离空间的方法及haproxy代理服务器 |
CN109831524B (zh) * | 2019-03-11 | 2023-04-18 | 平安科技(深圳)有限公司 | 一种负载均衡处理方法及装置 |
CN110286997B (zh) * | 2019-05-17 | 2023-08-18 | 平安科技(深圳)有限公司 | 多容器应用创建方法、装置、计算机设备及存储介质 |
CN112073358B (zh) * | 2019-06-11 | 2022-08-16 | 易保网络技术(上海)有限公司 | 基于Kubernetes的协议转换处理方法和设备 |
CN110753120B (zh) * | 2019-10-25 | 2022-06-10 | 北京浪潮数据技术有限公司 | 一种有状态负载创建方法、装置、设备及介质 |
CN110868465A (zh) * | 2019-11-13 | 2020-03-06 | 北京浪潮数据技术有限公司 | 一种容器云的负载均衡***及方法 |
CN111400045B (zh) * | 2020-03-16 | 2023-09-05 | 杭州海康威视***技术有限公司 | 一种负载均衡方法及装置 |
CN111708880A (zh) * | 2020-05-12 | 2020-09-25 | 北京明略软件***有限公司 | 类簇的识别***及方法 |
CN112671820A (zh) * | 2020-08-17 | 2021-04-16 | 紫光云技术有限公司 | 一种基于容器实现公有云负载均衡服务的方法 |
CN112491066B (zh) * | 2020-11-13 | 2023-11-03 | 北京京东尚科信息技术有限公司 | 负载均衡方法、装置、***、目标负载均衡设备及介质 |
CN112540827A (zh) * | 2020-12-08 | 2021-03-23 | 北京航天云路有限公司 | 一种基于k8s平台的负载均衡***及实现方法 |
CN112948127B (zh) * | 2021-03-30 | 2023-11-10 | 北京滴普科技有限公司 | 云平台容器平均负载监视方法、终端设备及可读存储介质 |
CN113377500B (zh) * | 2021-08-12 | 2021-12-14 | 浙江大华技术股份有限公司 | 一种资源调度方法、装置、设备及介质 |
CN113746918A (zh) * | 2021-09-03 | 2021-12-03 | 上海幻电信息科技有限公司 | 超文本传输协议代理方法及*** |
CN114449004A (zh) * | 2022-02-24 | 2022-05-06 | 京东科技信息技术有限公司 | 服务器集群的部署方法、装置、电子设备和可读介质 |
CN114900526B (zh) * | 2022-04-28 | 2024-04-16 | 京东科技信息技术有限公司 | 负载均衡方法及***、计算机存储介质、电子设备 |
CN115297038A (zh) * | 2022-08-04 | 2022-11-04 | 中国电信股份有限公司 | 流量监控方法、***、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105979009A (zh) * | 2016-07-06 | 2016-09-28 | 乾云众创(北京)信息科技研究院有限公司 | 一种针对云应用容器的增加负载自动均衡方法 |
CN107025136A (zh) * | 2016-01-29 | 2017-08-08 | 中兴通讯股份有限公司 | 一种去中心化资源调度方法及*** |
CN107105029A (zh) * | 2017-04-18 | 2017-08-29 | 北京友普信息技术有限公司 | 一种基于Docker技术的CDN动态内容加速方法及*** |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2883140A1 (en) * | 2012-08-07 | 2015-06-17 | Advanced Micro Devices, Inc. | System and method for tuning a cloud computing system |
US11016820B2 (en) * | 2013-08-26 | 2021-05-25 | Vmware, Inc. | Load balancing of resources |
EA201301283A1 (ru) * | 2013-11-26 | 2015-05-29 | Общество С Ограниченной Ответственностью "Параллелз" | Способ целевой виртуализации ресурсов в контейнере |
CN104714812B (zh) * | 2013-12-13 | 2018-03-23 | 中国电信股份有限公司 | 在云环境中快速部署和加载Java应用的方法和*** |
US9772787B2 (en) * | 2014-03-31 | 2017-09-26 | Amazon Technologies, Inc. | File storage using variable stripe sizes |
US10205775B2 (en) * | 2014-09-27 | 2019-02-12 | Oracle International Corporation | Server selection in a highly available network |
CN104618164B (zh) * | 2015-02-12 | 2018-12-21 | 北京航空航天大学 | 云计算平台应用快速部署的管理方法 |
CN105245617A (zh) * | 2015-10-27 | 2016-01-13 | 江苏电力信息技术有限公司 | 一种基于容器的服务器资源供给方法 |
-
2017
- 2017-09-08 CN CN201710804487.2A patent/CN107590001B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107025136A (zh) * | 2016-01-29 | 2017-08-08 | 中兴通讯股份有限公司 | 一种去中心化资源调度方法及*** |
CN105979009A (zh) * | 2016-07-06 | 2016-09-28 | 乾云众创(北京)信息科技研究院有限公司 | 一种针对云应用容器的增加负载自动均衡方法 |
CN107105029A (zh) * | 2017-04-18 | 2017-08-29 | 北京友普信息技术有限公司 | 一种基于Docker技术的CDN动态内容加速方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN107590001A (zh) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590001B (zh) | 负载均衡方法及装置、存储介质、电子设备 | |
EP3667500B1 (en) | Using a container orchestration service for dynamic routing | |
CN113742031B (zh) | 节点状态信息获取方法、装置、电子设备及可读存储介质 | |
US10075549B2 (en) | Optimizer module in high load client/server systems | |
CN110383764B (zh) | 无服务器***中使用历史数据处理事件的***和方法 | |
AU2019397405B2 (en) | Predictive microservice systems and methods | |
US10997538B1 (en) | Resource management | |
US9432449B2 (en) | Managing connection failover in a load balancer | |
US20170220385A1 (en) | Cross-platform workload processing | |
US20150195143A1 (en) | Discovering resources of a distributed computing environment | |
US11616686B1 (en) | Cluster management | |
CN109117252A (zh) | 基于容器的任务处理的方法、***及容器集群管理*** | |
CN110830374A (zh) | 一种基于sdk的灰度发布的方法和装置 | |
CN109254854A (zh) | 异步调用方法、计算机装置及存储介质 | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
CN113079098A (zh) | 路由更新的方法、装置、设备和计算机可读介质 | |
US11048555B2 (en) | Method, apparatus, and computer program product for optimizing execution of commands in a distributed system | |
CN109729177B (zh) | 用于生成信息的方法和装置 | |
CN111767126A (zh) | 分布式批量处理的***和方法 | |
US10616317B2 (en) | Method and system for affinity load balancing | |
US20150150012A1 (en) | Cross-platform workload processing | |
CN112559001B (zh) | 更新应用的方法和装置 | |
CN113472638A (zh) | 边缘网关控制方法及***、装置、电子设备、存储介质 | |
CN113779122A (zh) | 导出数据的方法和装置 | |
US11856048B2 (en) | System and method for deferring data retrieval |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |