一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统技术方案

技术编号:17517862 阅读:81 留言:0更新日期:2018-03-21 02:20
本申请发明专利技术了一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统,在集群中增加负载度量的机制,结合负载的实际情况,通过Docker的API动态地改变集群的规模,动态地改变集群的规模,则既能保证服务的响应速度也能避免启动过多容器造成资源浪费。

A dynamic load balancing cluster system based on performance monitoring system and Docker Swarm

The present invention, a load balancing system dynamic performance monitoring system based on Swarm and Docker, increase the load measurement mechanism in the cluster, combined with the actual situation of the load, through the API dynamic Docker to change the cluster size dynamically change the size of the clusters, can guarantee the response speed of service can also be to avoid the excessive waste of resources caused by the container to start.

【技术实现步骤摘要】
一种基于性能监控系统和DockerSwarm的动态负载均衡集群系统
本专利技术涉及服务器管理领域,具体涉及一种基于性能监控系统和DockerSwarm的动态负载均衡集群系统。
技术介绍
容器Docker是运行在操作系统上的单个进程,应用需要通过多个容器提供服务,这样就组建成了集群,对外仍然需要通过统一接口提供服务,从而屏蔽集群内部的相关容器变化,这样就需要负载均衡进行相关操作。现在企业产品以HAproxy实现负载路由和均衡的功能,比如PCF、openshift和阿里飞天、华为产品等。当容器启动时,将相关信息注册到一个统一的管理中心比如etcd中,在HAProxy中需要有进程监听etcd中的集群信息变化,当有集群变化时,监听进程会自动修改HAproxy的backend相关信息,这样才能够实现负载均衡的自动监控和修改。Docker自诞生以来,在很长的一段时间内只能在单机上运行,跨主机能力的薄弱,这直接导致Docker容器与host的紧耦合,这种情况下,Docker容器的灵活性很难令人满意,容器的迁移、分组等都成为很难实现的功能点。在Docker1.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部署集群时,因为每个服务可以启动的容器个数是事先预定的。一旦服务部署好,所有的负载就落在了这些预定的容器上,但这个集群的规模很可能和当前的应用场景不匹配,有可能已经不堪重荷也可能启动了太多容器造成资源浪费。基于上述问题,本申请专利技术了一种基于性能监控系统和DockerSwarm的动态负载均衡集群系统,通过Docker的API(ApplicationProgrammingInterface,应用程序编程接口)动态地改变集群的规模,则既能保证服务的响应速度也能避免启动过多容器造成资源浪费。
技术实现思路
本专利技术的主要实现思路为,虽然部署服务时,在配置文件里定义了集群的规模,但Docker提供了API,通过这些接口可随意控制集群规模。如果在集群中增加负载度量的机制,结合负载的实际情况,通过Docker的API动态地改变集群的规模,则既能保证服务的响应速度也能避免启动过多容器造成资源浪费。具体地,本申请请求保护一种基于性能监控系统和DockerSwarm的动态负载均衡集群系统,其特征在于,该动态负载均衡集群系统包含以下模块:ServiceRouter模块,用于为集群中声明的服务提供路由负荷统计;DockerSwarm模块,用于负载均衡和服务发现;Promethues模块,用于告警定义及报警;AlertManger模块,用于报警管理;Replicator模块,是自定义的告警接受器;当用户需要请求某个服务时,先向SerivceRouter模块发送服务请求,并将服务名及请求参数发给SerivceRoute模块;ServiceRouter模块使用服务名向DockerSwarm模块查询服务信息,然后将请求信息发送给DockerSwarm模块对象,同时,ServiceRouter模块会记录该次请求信息并通过Promethues模块的客户端库,将数据提供给Promethues模块服务端;当服务对象收到请求后,DockerSwarm模块使用其内置的负载平衡器选中满足条件的容器执行请求,返回响应信息;Promethues模块通过获取ServiceRouter提供的负荷数据,根据已定义的告警规则,Promethues模块生成警告或者消除警告,并将警告信息发送给AlertManger模块,Alertmanager模块处理由Prometheus模块发来的警报,并将它们通过路由发送到Replicator模块,当Replicator模块接收到来自AlterManger模块发送来的警告信息,动态调整集群大小。如上所述的基于性能监控系统和DockerSwarm的动态负载均衡集群系统,其特征还在于,Replicator模块接收到来自AlterManger模块发送来的警告信息后,会通过DockerSwarm模块提供的API查询该告警相关的服务信息,然后使用该服务信息调用API,根据已定义的步长缩放该服务对应的容器个数。如上所述的基于性能监控系统和DockerSwarm的动态负载均衡集群系统,其特征还在于,Alertmanager模块还支持沉默和警报抑制的机制。附图说明图1、动态负载均衡集群系统工作示意图具体实施方式本专利技术结合性能监控系统promethues(开源服务监控系统)和DockerSwarm的集群功能,提出了如下设计方案,来实现动态的负载均衡集群系统。该系统包含以下模块:1、ServiceRouter:用于为集群中声明的服务提供路由,负荷统计功能。当用户需要请求某个服务时,首先需要向SerivceRouter发送服务请求,将服务名及请求参数发给SerivceRoute。ServiceRouter使用服务名向Swarm服务查询服务信息,然后将请求信息发送给ServiceRouter对象。同时,ServiceRouter会记录下该次请求信息(服务名,请求时间等)并通过Promethues通过的客户端库,将数据提供给Promethues服务端。2、DockerSwarm:该模块是整个集群最核心的部分,它提供了负载均衡和服务发现功能。当Service对象收到请求后,DockerSwarm使用其内置的负载平衡器选中满足条件的容器执行请求,返回响应信息。3、Promethues:性能监控模块是实现该负责平衡框架的关键部分。Promethues提供了告警定义及报警机制等关键功能。通过获取ServiceRouter提供的负荷数据,根据已定义的告警规则,Promethues可以生成警告或者消除警告,并将警告信息发送给AlertManger.例如我们可以定义如下告警规则:IFsum(rate(service_invocation_total[10s]))BY(service_name)>500(某服务在10秒内被请求次数大于500),则一旦某个服务在10秒内请求次数大于500,则Prometh本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/62/201711191472.html" title="一种基于性能监控系统和Docker Swarm的动态负载均衡集群系统原文来自X技术">基于性能监控系统和Docker Swarm的动态负载均衡集群系统</a>

【技术保护点】
一种基于性能监控系统和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模块发送来的警告信息,动态调整集群大小。...

【技术特征摘要】
1.一种基于性能监控系统和DockerSwarm的动态负载均衡集群系统,其特征在于,该动态负载均衡集群系统包含以下模块:ServiceRouter模块,用于为集群中声明的服务提供路由负荷统计;DockerSwarm模块,用于负载均衡和服务发现;Promethues模块,用于告警定义及报警;AlertManger模块,用于报警管理;Replicator模块,是自定义的告警接受器;当用户需要请求某个服务时,先向SerivceRouter模块发送服务请求,并将服务名及请求参数发给SerivceRoute模块;ServiceRouter模块使用服务名向DockerSwarm模块查询服务信息,然后将请求信息发送给DockerSwarm模块对象,同时,ServiceRouter模块会记录该次请求信息并通过Promethues模块的客户端库,将数据提供给Promethues模块服务端;当服务对象收到请求后,DockerSwarm模块使用其内置的负载平衡器选中满足条件的容器执行请求,返回响应...

【专利技术属性】
技术研发人员:华飞君
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1