[发明专利]一种基于性能监控系统和DockerSwarm的动态负载均衡集群系统在审
申请号: | 201711191472.X | 申请日: | 2017-11-24 |
公开(公告)号: | CN107819632A | 公开(公告)日: | 2018-03-20 |
发明(设计)人: | 华飞君 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | H04L12/24 | 分类号: | H04L12/24;H04L29/08 |
代理公司: | 济南舜源专利事务所有限公司37205 | 代理人: | 张亮 |
地址: | 450000 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 性能 监控 系统 dockerswarm 动态 负载 均衡 集群 | ||
技术领域
本发明涉及服务器管理领域,具体涉及一种基于性能监控系统和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也提供了DNS Round-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模块服务端;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711191472.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种设备异常检测方法、装置及设备
- 下一篇:一种快速发现并处理网络故障的方法