CN107819632A - 一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统 - Google Patents
一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统 Download PDFInfo
- Publication number
- CN107819632A CN107819632A CN201711191472.XA CN201711191472A CN107819632A CN 107819632 A CN107819632 A CN 107819632A CN 201711191472 A CN201711191472 A CN 201711191472A CN 107819632 A CN107819632 A CN 107819632A
- Authority
- CN
- China
- Prior art keywords
- modules
- service
- docker
- docker swarm
- alarm
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0631—Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
-
- 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
- H04L67/1004—Server selection for load balancing
Abstract
本申请发明了一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统,在集群中增加负载度量的机制,结合负载的实际情况,通过Docker的API动态地改变集群的规模,动态地改变集群的规模,则既能保证服务的响应速度也能避免启动过多容器造成资源浪费。
Description
技术领域
本发明涉及服务器管理领域,具体涉及一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统。
背景技术
容器Docker是运行在操作系统上的单个进程,应用需要通过多个容器提供服务,这样就组建成了集群,对外仍然需要通过统一接口提供服务,从而屏蔽集群内部的相关容器变化,这样就需要负载均衡进行相关操作。现在企业产品以HAproxy实现负载路由和均衡的功能,比如PCF、openshift和阿里飞天、华为产品等。当容器启动时,将相关信息注册到一个统一的管理中心比如etcd中,在HAProxy中需要有进程监听etcd中的集群信息变化,当有集群变化时,监听进程会自动修改HAproxy的backend相关信息,这样才能够实现负载均衡的自动监控和修改。
Docker自诞生以来,在很长的一段时间内只能在单机上运行,跨主机能力的薄弱,这直接导致Docker容器与host的紧耦合,这种情况下,Docker容器的灵活性很难令人满意,容器的迁移、分组等都成为很难实现的功能点。在Docker 1.12中,Swarm模式允许将一组Docker主机组合成一个群集,提供一种容错、自我修复的分散式架构。负载均衡是Swarm模式中新增加的最重要的一个特性,不管什么时候在Swarm集群内创建了新的服务,这个服务都会获得虚拟IP(VIP)地址。不管什么时候尝试对特定VIP提出需求,Swarm负载均衡器都会把这一需求分配给特定服务中的某一容器。除了虚拟ip(vip)之外,Docker也提供了DNSRound-Robin(dnsrr)的负载均衡。Swarm模式同时也提供了内置的Discovery服务,这样集群的搭建不需要再依赖外部的Discovery服务,比如consul或etcd。通过编写Docker-compose.yml配置文件,可以声明一组服务及每个服务实际需要启动的容器个数。Docker集群负责将其中的微服务扩展至对应状态并通过服务所对应的容器实现负载平衡;Docker集群还会自动地维护整个服务的状态,比如声明了某个服务需要10个容器,在其中的一些崩溃后,Docker会创建并尝试重新分配新的容器,来保证容器达到预期的数量。
虽然Docker均衡负载法是一种极为优秀的机制,不过它也存在着限制和问题。使用Docker部署集群时,因为每个服务可以启动的容器个数是事先预定的。一旦服务部署好,所有的负载就落在了这些预定的容器上,但这个集群的规模很可能和当前的应用场景不匹配,有可能已经不堪重荷也可能启动了太多容器造成资源浪费。
基于上述问题,本申请发明了一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统,通过Docker的API(Application Programming Interface,应用程序编程接口)动态地改变集群的规模,则既能保证服务的响应速度也能避免启动过多容器造成资源浪费。
发明内容
本发明的主要实现思路为,虽然部署服务时,在配置文件里定义了集群的规模,但Docker提供了API,通过这些接口可随意控制集群规模。如果在集群中增加负载度量的机制,结合负载的实际情况,通过Docker的API动态地改变集群的规模,则既能保证服务的响应速度也能避免启动过多容器造成资源浪费。
具体地,本申请请求保护一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统,其特征在于,该动态负载均衡集群系统包含以下模块:
Service Router模块,用于为集群中声明的服务提供路由负荷统计;
Docker Swarm模块,用于负载均衡和服务发现;
Promethues模块,用于告警定义及报警;
AlertManger模块,用于报警管理;
Replicator模块,是自定义的告警接受器;
当用户需要请求某个服务时,先向Serivce Router模块发送服务请求,并将服务名及请求参数发给Serivce Route模块;Service Router模块使用服务名向Docker Swarm模块查询服务信息,然后将请求信息发送给Docker Swarm模块对象,同时,Service Router模块会记录该次请求信息并通过Promethues模块的客户端库,将数据提供给Promethues模块服务端;
当服务对象收到请求后,Docker Swarm模块使用其内置的负载平衡器选中满足条件的容器执行请求,返回响应信息;Promethues模块通过获取Service Router提供的负荷数据,根据已定义的告警规则,Promethues模块生成警告或者消除警告,并将警告信息发送给AlertManger模块,Alertmanager模块处理由Prometheus模块发来的警报,并将它们通过路由发送到Replicator模块,当Replicator模块接收到来自AlterManger模块发送来的警告信息,动态调整集群大小。
如上所述的基于性能监控系统和Docker Swarm的动态负载均衡集群系统,其特征还在于,Replicator模块接收到来自AlterManger模块发送来的警告信息后,会通过DockerSwarm模块提供的API查询该告警相关的服务信息,然后使用该服务信息调用API,根据已定义的步长缩放该服务对应的容器个数。
如上所述的基于性能监控系统和Docker Swarm的动态负载均衡集群系统,其特征还在于,Alertmanager模块还支持沉默和警报抑制的机制。
附图说明
图1、动态负载均衡集群系统工作示意图
具体实施方式
本发明结合性能监控系统promethues(开源服务监控系统)和Docker Swarm的集群功能,提出了如下设计方案,来实现动态的负载均衡集群系统。
该系统包含以下模块:
1、Service Router:
用于为集群中声明的服务提供路由,负荷统计功能。
当用户需要请求某个服务时,首先需要向Serivce Router发送服务请求,将服务名及请求参数发给Serivce Route。Service Router使用服务名向Swarm服务查询服务信息,然后将请求信息发送给Service Router对象。同时,Service Router会记录下该次请求信息(服务名,请求时间等)并通过Promethues通过的客户端库,将数据提供给Promethues服务端。
2、Docker Swarm:
该模块是整个集群最核心的部分,它提供了负载均衡和服务发现功能。
当Service对象收到请求后,Docker Swarm使用其内置的负载平衡器选中满足条件的容器执行请求,返回响应信息。
3、Promethues:
性能监控模块是实现该负责平衡框架的关键部分。
Promethues提供了告警定义及报警机制等关键功能。通过获取Service Router提供的负荷数据,根据已定义的告警规则,Promethues可以生成警告或者消除警告,并将警告信息发送给AlertManger.例如我们可以定义如下告警规则:
IF sum(rate(service_invocation_total[10s]))BY(service_name)>500(某服务在10秒内被请求次数大于500),则一旦某个服务在10秒内请求次数大于500,则Prometheus会产激活该告警规则,并将警告激活信息发送给AlertManger.一旦该服务的请求次数降下来,则Prometheus会取消该告警,并发送警告取消信息发送给AlertManger.
4、AlertManger:
Alertmanager处理由类似Prometheus服务器等客户端发来的警报,之后需要删除重复、分组,并将它们通过路由发送到正确的接收器,比如电子邮件、Slack等。Alertmanager还支持沉默和警报抑制的机制。
5、Replicator:
这是自定义的告警接受器,当Replicator接收到来自AlterManger发送来的警告信息,Replicator首先会通过Docker提供的API查询该告警相关的服务信息,然后使用该服务信息调用API,根据已定义的步长缩放该服务对应的容器个数。由此就完成了动态调整整个集群大小的最后一步。
这些模块除了Service Router和Replicator模块需要编码实现其基本功能以外,其他均是成熟的开源框架。
本发明的具体实施步骤如下:
1、定义Docker-compose.yml文件,声明service router,prometheus,alertmanger,replicator,其他功能性服务和网络.其中service router,prometheus,alertmanger,replicator服务需要将其限制在manger节点上运行。
具体指令可以是例如:
2、定义prometheus配置文件和告警规则文件,为其设置定时任务并指定告警规则文件。具体指令可以是例如:
3、定义altermanager配置文件,将receivers的url指向Replicator。
4、在manger节点上运行Docker Swarm init命令,生成token;在从节点上运行Docker Swarm join命令使用之前的token加入集群。
5、在manger节点上运行Docker stack deploy myservices–compose-fileDocker-compose.yml即可部署服务,实现跨多个主机的动态负载均衡集群系统。
显而易见地,上面所示的仅仅是本发明的一个具体实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据上述实施例获得其他的技术方案,以及在本发明保护的范围内做出的等同变化均应落入本发明的保护范围内,都属于本发明保护的范围。
综上所述,本发明基于性能监控系统和Docker Swarm模式构建了一个实时的负载均衡集群系统。该系统能根据实时的负荷情况,调整集群的规模,既保证了高负荷时的响应速度又避免了低负荷时资源浪费的现象;同时,本发明所述的负载均衡集群系统易于扩展提供了自动的弹性扩展,减少了打包和部署的复杂度,可以快速推向市场,让服务器的管理变得简单高效。
Claims (3)
1.一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统,其特征在于,该动态负载均衡集群系统包含以下模块:
Service Router模块,用于为集群中声明的服务提供路由负荷统计;
Docker Swarm模块,用于负载均衡和服务发现;
Promethues模块,用于告警定义及报警;
AlertManger模块,用于报警管理;
Replicator模块,是自定义的告警接受器;
当用户需要请求某个服务时,先向Serivce Router模块发送服务请求,并将服务名及请求参数发给Serivce Route模块;Service Router模块使用服务名向Docker Swarm模块查询服务信息,然后将请求信息发送给Docker Swarm模块对象,同时,Service Router模块会记录该次请求信息并通过Promethues模块的客户端库,将数据提供给Promethues模块服务端;
当服务对象收到请求后,Docker Swarm模块使用其内置的负载平衡器选中满足条件的容器执行请求,返回响应信息;Promethues模块通过获取Service Router提供的负荷数据,根据已定义的告警规则,Promethues模块生成警告或者消除警告,并将警告信息发送给AlertManger模块,Alertmanager模块处理由Prometheus模块发来的警报,并将它们通过路由发送到Replicator模块,当Replicator模块接收到来自AlterManger模块发送来的警告信息,动态调整集群大小。
2.如权利要求1所述的基于性能监控系统和Docker Swarm的动态负载均衡集群系统,其特征还在于,Replicator模块接收到来自AlterManger模块发送来的警告信息后,会通过Docker Swarm模块提供的API查询该告警相关的服务信息,然后使用该服务信息调用API,根据已定义的步长缩放该服务对应的容器个数。
3.如权利要求2所述的基于性能监控系统和Docker Swarm的动态负载均衡集群系统,其特征还在于,Alertmanager模块还支持沉默和警报抑制的机制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711191472.XA CN107819632A (zh) | 2017-11-24 | 2017-11-24 | 一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711191472.XA CN107819632A (zh) | 2017-11-24 | 2017-11-24 | 一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107819632A true CN107819632A (zh) | 2018-03-20 |
Family
ID=61609975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711191472.XA Pending CN107819632A (zh) | 2017-11-24 | 2017-11-24 | 一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107819632A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109245931A (zh) * | 2018-09-19 | 2019-01-18 | 四川长虹电器股份有限公司 | 基于kubernetes的容器云平台的日志管理和监控报警的实现方法 |
CN110515702A (zh) * | 2019-08-29 | 2019-11-29 | 浪潮云信息技术有限公司 | 一种计算节点故障虚拟机的自动疏散方法及装置 |
CN110764875A (zh) * | 2019-10-25 | 2020-02-07 | 北京威晟艾德尔科技有限公司 | 一种基于竞争机制的Docker容器创建方法 |
CN111857963A (zh) * | 2020-07-28 | 2020-10-30 | 山东超越数控电子股份有限公司 | 一种针对Proxmox VE的容器编排实现方法、装置、设备和介质 |
US11740886B2 (en) | 2018-09-27 | 2023-08-29 | Huawei Technologies Co., Ltd. | Algorithm update method and apparatus |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104836819A (zh) * | 2014-02-10 | 2015-08-12 | 阿里巴巴集团控股有限公司 | 动态负载均衡的方法、系统及监控调度设备 |
CN106302771A (zh) * | 2016-08-23 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于Docker容器创建的应用的域名配置方法 |
CN106375420A (zh) * | 2016-08-31 | 2017-02-01 | 武汉钢信软件有限公司 | 一种基于负载均衡的服务器集群智能监控系统及方法 |
CN106992887A (zh) * | 2017-04-05 | 2017-07-28 | 国家电网公司 | 基于容器的应用实例弹性伸缩的实现方法、装置及系统 |
-
2017
- 2017-11-24 CN CN201711191472.XA patent/CN107819632A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104836819A (zh) * | 2014-02-10 | 2015-08-12 | 阿里巴巴集团控股有限公司 | 动态负载均衡的方法、系统及监控调度设备 |
CN106302771A (zh) * | 2016-08-23 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于Docker容器创建的应用的域名配置方法 |
CN106375420A (zh) * | 2016-08-31 | 2017-02-01 | 武汉钢信软件有限公司 | 一种基于负载均衡的服务器集群智能监控系统及方法 |
CN106992887A (zh) * | 2017-04-05 | 2017-07-28 | 国家电网公司 | 基于容器的应用实例弹性伸缩的实现方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
YICHENWONG: "Prometheus Alertmanager报警组件", 《HTTPS://WWW.JIANSHU.COM/P/239B145E2ACC》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109245931A (zh) * | 2018-09-19 | 2019-01-18 | 四川长虹电器股份有限公司 | 基于kubernetes的容器云平台的日志管理和监控报警的实现方法 |
CN109245931B (zh) * | 2018-09-19 | 2021-04-16 | 四川虹微技术有限公司 | 基于kubernetes的容器云平台的日志管理和监控报警的实现方法 |
US11740886B2 (en) | 2018-09-27 | 2023-08-29 | Huawei Technologies Co., Ltd. | Algorithm update method and apparatus |
CN110515702A (zh) * | 2019-08-29 | 2019-11-29 | 浪潮云信息技术有限公司 | 一种计算节点故障虚拟机的自动疏散方法及装置 |
CN110764875A (zh) * | 2019-10-25 | 2020-02-07 | 北京威晟艾德尔科技有限公司 | 一种基于竞争机制的Docker容器创建方法 |
CN111857963A (zh) * | 2020-07-28 | 2020-10-30 | 山东超越数控电子股份有限公司 | 一种针对Proxmox VE的容器编排实现方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107819632A (zh) | 一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统 | |
CN109618002B (zh) | 一种微服务网关优化方法、装置及存储介质 | |
US11570262B2 (en) | Methods, systems, and computer readable media for rank processing for network function selection | |
US8589543B2 (en) | Virtual data center monitoring | |
CN102281190B (zh) | 负载均衡装置组网方法以及服务器、客户端接入方法 | |
CN112789832B (zh) | 动态切片优先级处理 | |
CN109150987B (zh) | 基于主机层和容器层的两层式容器集群弹性扩容方法 | |
US20150142940A1 (en) | Methods, systems, and computer readable media for a network function virtualization information concentrator | |
CN106657287A (zh) | 一种数据访问方法及系统 | |
CN103607424B (zh) | 一种服务器连接方法及服务器系统 | |
CN109819057A (zh) | 一种负载均衡方法及系统 | |
CN109787827B (zh) | 一种cdn网络监控的方法及装置 | |
EP4167539A1 (en) | Resource management method and system, proxy server, and storage medium | |
CN107105013B (zh) | 文件的处理方法、服务器、终端和系统 | |
CN107835262A (zh) | 一种流媒体服务器负载动态分配方法 | |
CN108989368A (zh) | 一种链路质量的控制方法及监控设备 | |
WO2020078381A1 (zh) | 数据汇聚方法、装置、设备、存储介质和系统 | |
CN111258851A (zh) | 一种集群的告警方法、装置、设置及存储介质 | |
CN106713378A (zh) | 实现多个应用服务器提供服务的方法和系统 | |
CN110677475A (zh) | 一种微服务处理方法、装置、设备及存储介质 | |
CN110515728B (zh) | 服务器调度方法、装置、电子设备及机器可读存储介质 | |
CN108810042A (zh) | 一种任务处理方法、相关设备及系统 | |
US10027559B1 (en) | Customer defined bandwidth limitations in distributed systems | |
CN105493444A (zh) | 一种网络功能虚拟化nfv故障管理装置、设备及方法 | |
CN106254103B (zh) | 一种rtmp集群系统可动态配置方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180320 |
|
RJ01 | Rejection of invention patent application after publication |