CN108712464A - 一种面向集群微服务高可用的实现方法 - Google Patents

一种面向集群微服务高可用的实现方法 Download PDF

Info

Publication number
CN108712464A
CN108712464A CN201810330549.5A CN201810330549A CN108712464A CN 108712464 A CN108712464 A CN 108712464A CN 201810330549 A CN201810330549 A CN 201810330549A CN 108712464 A CN108712464 A CN 108712464A
Authority
CN
China
Prior art keywords
service
micro services
node
cluster
services
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
Application number
CN201810330549.5A
Other languages
English (en)
Inventor
汤学海
刘财宏
董扬琛
韩冀中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201810330549.5A priority Critical patent/CN108712464A/zh
Publication of CN108712464A publication Critical patent/CN108712464A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供一种面向集群微服务高可用的实现方法。包括以下步骤:通过部署服务架构使集群中的全部节点同步感知新发布的微服务;集群中的各节点的服务代理程序通过建立IPTABLES转发规则对微服务进行负载均衡调节;在集群中各节点运行服务负载监控程序,定时采集并整合各节点所有微服务的负载情况,据此进行动态的增加或删减微服务的后端实例的操作。可使新服务发布后,集群中所有的节点都能够感知,并在此基础上实施自适应负载均衡策略,进而在进行扩容缩容的时根据自适应负载均衡策略动态地调整本地IPTABLES转发规则,以保证扩容缩容之后的负载均衡。即从不同的阶段和角度为实现集群微服务的高可用性发挥作用。

Description

一种面向集群微服务高可用的实现方法
技术领域
本发明涉及云计算领域,尤其涉及一种面向集群微服务的高可用实现方法。
背景技术
在云计算行业兴盛发展的趋势之下,微服务也越来越多地呈现到了人们的眼前。微服务是一种架构风格,系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务,每个任务代表着一个小的业务能力。
相较于传统的单体应用程序,采用微服务架构模式有很多优点。首先,通过分解巨大单体应用为多个服务方法解决了复杂性问题,通过模块化的解决方案,降低了整体服务的开发和维护成本;其次,这种架构使得每个服务都可以有专门开发团队来开发,开发者可以自由选择开发技术,提供API服务;最后,微服务架构模式使得每个服务独立扩展。可以根据每个服务的规模来部署满足需求的实例,甚至于可以使用更适合于服务资源需求的硬件。以在线商店系统为例,图1为采用微服务架构的系统结构图。
然而,在实际生产环境下任何一个服务的可用性都不会是100%,意味着在服务运行时间里还是有可能发生故障。当把功能集中且运行在同一个应用中的单体架构拆分成多个相互独立的微服务架构后,虽然可以降低一损俱损的全局性故障风险,但由于微服务之间存在大量的依赖关系,随着微服务个数的增多,依赖关系也将会变得越来越复杂,而且每个微服务都有可能发生故障,如果不能做好微服务的高可用,避免故障的连锁反应,结果可能比单体更糟糕。假设有10个微服务,并且每个微服务只会发生1种故障,那么总共会有1024种不同的故障场景,而每个微服务自身可能不止1种故障。当某个微服务发生故障时,如何确保不会导致其他依赖的微服务不可用,是微服务架构的可用性的挑战。
为了保障服务的高可用,传统的解决方法是失效转移和异步调用。
失效转移是指当一个节点异常时,负载均衡器再根据一定策略将用户发送的请求发送到可用的节点上,但是负载均衡器转发模式是面向Web等传统网络应用而设计的,当经过负载均衡器的请求数据量或者响应数据量过大的时候,负载均衡器也容易成为集群服务高可用的瓶颈,传统负载均衡器结构如图2所示。
异步调用是为了避免一个服务失败导致整个应用请求失败的情况,如图3所示,假设是Service D故障,而这个Service不是关键性的,运行失败也可以继续进行,比如注册用户需要调用一个服务发送注册成功的邮件给用户,如果发邮件的这个Service不可用,但不会影响用户的注册,所以用户注册还是会成功,邮件可以等服务恢复后再发送,只有时间上的延迟。这时Service A不受影响,依然可用。异步调用虽然在一定程度上提高了微服务集群的可用性,但是异步调用使得业务逻辑更加复杂、异常的捕获和处理难度增加、不能保持上下文等缺点。
发明内容
本发明的目的在于克服上述缺陷,提供一种面向集群微服务高可用的实现方法。可使新服务发布后,集群中所有的节点都能够感知,并在此基础上实施自适应负载均衡策略,进而在进行扩容缩容的时根据自适应负载均衡策略动态地调整本地IPTABLES转发规则,以保证扩容缩容之后的负载均衡。即从不同的阶段和角度为实现集群微服务的高可用性发挥作用,也相辅相成在一个统一的技术构思下。
为了实现上述目的,本发明采取的技术方案是:
一种面向集群微服务的高可用实现方法,包括以下步骤:
通过部署服务架构使集群中的全部节点同步感知新发布的微服务;
集群中的各节点的服务代理程序通过建立IPTABLES转发规则对微服务进行负载均衡调节;
在集群中各节点运行服务负载监控程序,定时采集并整合各节点所有微服务的负载情况,据此进行动态的增加或删减微服务的后端实例的操作。
进一步地,所述服务架构部署如下:
部署控制中心,用以控制微服务的发布与回收、实时收集集群各节点的心跳信息以及维护各节点的负载信息;
部署于各节点的节点管理组件,用以对该节点实例生命周期进行管理;
部署服务代理程序,用以定时通过APIServer向ETCD查询是否有新的服务变更,如果有变更,则针对变更调整相应的IPTABLES转发规则;
部署API Server,用以作为控制中心、节点管理组件、服务代理程序与ETCD集群进行交互的入口,作为控制中心与节点管理组件和服务代理程序交互的入口;
部署“服务入口IP:服务端口”用以通过IPTABLES规则重新定向访问请求;部署“实例IP:实例端口”;
部署ETCD,用以作为存储单元。
进一步地,通过以下步骤实现集群中的全部节点同步感知新发布的微服务:
填写微服务配置信息;
控制中心根据集群节点负载情况,将微服务后端实例调度到至能够满足实例最低配置要求的宿主机;
控制中心将微服务配置信息写入ETCD;
集群各节点中服务代理程序通过API Server定时检查ETCD中的服务信息,如果发现了新的微服务,则该服务代理程序建立相应的“服务入口IP:服务端口”到服务“实例IP:实例端口”的IPTABLES规则,将所有“服务入口IP:服务端口”的请求重定向到“实例IP:实例端口”;如果发现了微服务的下线,则该节点的服务代理程序删除相应的“服务入口IP:服务端口”到服务“实例IP:实例端口”的IPTABLES规则。
进一步地,所述集群中的各节点的服务代理程序通过建立IPTABLES转发规则对微服务进行负载均衡调节包括;
集群中各节点服务代理程序定时检查ETCD中的服务信息,如果发现了新的微服务,
则节点服务代理程序建立N条IPTABLES转发规则使得服务的访问请求能够转发到后端的N个实例,且保证第i个实例的转发权重为1/i,使各后端服务实例被访问到的概率相同,其中,N为微服务的后端实例数量。
进一步地,在集群中各节点运行服务负载监控程序,定时采集并整合各节点所有微服务的负载情况,据此进行动态的增加或删减微服务的后端实例的操作包括:
各节点的节点管理组件间隔采集当前节点上的负载信息,计算出一个统计周期负载平均值后向控制中心发送负载信息;
控制中心对收到的负载信息进行分析,如果连续3次超过最高负载阈值则触发报警,并增加该服务的后端实例,更新ETCD中的服务信息并更新各节点的IPTABLES转发规则;
如果连续3次低于最低负载阈值同样触发报警,控制中心发送资源闲置警告信息。
进一步地,增加该服务的后端实例数量为当前服务实例个数的一半。
进一步地,所述最高负载阀值不小于80%,最低负载阀值选自30%-50%。
进一步地,所述服务代理程序针对变更调整相应的IPTABLES转发规则包括:
通过APIServer查询ETCD中服务状态获取服务信息或服务变更信息;
判断是否有微服务发布或下线;
如果有新的微服务发布,则根据服务信息,为该服务增加IPTABLES服务转发规则;
如果有微服务实例下线,则根据服务变更信息,删除本地IPTABLES服务转发规则。
进一步地,增加和删除IPTABLES服务转发规则根据服务后端实例数目进行设定。
进一步地,所述负载信息为根据资源种类及资源利用率计算的加权负载值。
通过采取上述技术方案,相较于现有技术,本发明的优越之处在于:
首先,提供了自注册的微服务发现机制,集群各服务代理程序巧妙地使用IPTABLES转发规则,实现虚拟的服务入口地址到后端真实服务实例地址的转发。使得集群每个节点都完全掌握了集群中所有服务的信息,直接利用服务器内核IP信息过滤系统(IPTABLES)进行转发,服务发现效率较高,而且具有较高的稳定性,由此提高了集群中微服务的可用性。
其次,提供了不需要额外负载均衡器的自适应负载均衡机制,将负载均衡的工作均摊到了集群中每一个节点,避免了负载均衡器成为服务可用性的瓶颈。具有良好的可扩展性,对于集群的横向扩展是很方便的,由此提高了集群中微服务的可用性。
最后,提供了基于负载监控的微服务弹性伸缩机制,能够根据服务的负载情况,对服务进行相应的扩容或缩容操作,由此提高了集群中微服务的可用性。
在服务后端实例负载比较高的情况下,扩容服务后端实例无疑会提高可用性。而自适应负载均衡机制是在自注册的微服务服务发现实现的基础之上操作的,基于负载监控的微服务弹性伸缩在对后端实例进行扩容缩容的同时,需要根据负载均衡策略动态调整IPTABLES转发策略。
附图说明
图1为微服务架构示意图;
图2为传统负载均衡器结构示意图;
图3为异步调用流程示意图;
图4为本发明实施例中部署的微服务服务架构示意图;
图5为本发明实施例中的集群中各节点服务代理工作的流程图;
图6为本发明实施例中的自适应负载均衡实现步骤的流程图;
图7为本发明实施例中的微服务扩容缩容实现步骤的流程图。
具体实施方式
下面结合附图和具体实施方式对本发明进行说明。应当理解,此处所述具体实施例仅用于解释本发明,并不用于限定本发明。
如图4所示,在一本发明的实施例中,描绘了面向集群微服务的高可用实现方法得以实施的服务架构。
图中,控制中心是集群管理和调度的中心,能够控制服务的发布与回收、实时收集集群各节点的心跳信息以及维护各节点的负载信息等。
节点管理组件是集群中每个节点都有运行的驻守程序,负责对该节点实例生命周期的管理,具体包括对实例的创建、监控、回收等。
API Server是控制中心、节点管理组件、服务代理程序与ETCD集群进行交互的唯一入口,同时也是控制中心与节点管理组件和服务代理程序交互的唯一入口,通过APIServer对交互进行授权和验证,提高了系统的安全性。
“服务入口IP:服务端口”是一个虚拟的IP和端口,并没有相关的物理设备与之相关联,只是通过IPTABLES规则来重定向访问请求,而“实例IP:实例端口”在物理机上是有对应的虚拟网卡和端口的。
ETCD(公知,当前一种开源的Key-Value键值存储数据库)是基于Raft算法的一种分布式环境下强一致性、高可用的Key/Value存储系统,使用ETCD能够保证系统具有强大的容错能力,即使集群中出现部分节点故障、网络故障等问题,仍可保证其余大多数节点正确的步进。
依托于此架构,首先实现自注册的微服务服务发现,使实施集群中的全部节点同步感知新发布的微服务,具体步骤如下:
步骤101,填写服务配置信息,包括“服务入口IP:服务端口”,服务实例端口等信息;
步骤102,控制中心综合集群节点负载情况,将服务后端实例调度到合适的宿主机,微服务实例会有其具体的配置要求,例如CPU核心数、内存大小、磁盘容量等,前述“合适”是指控制中心根据实例配置要求,并且综合考虑集群物理机资源的使用情况,将实例调度到能够满足实例最低配置要求的物理机之上。宿主机上的节点管理组件启动服务实例,记录根据DHCP为服务实例分配的IP,然后通过API Server将实例信息上报到ETCD;
步骤103,控制中心将入口IP、端口、后端实例信息写入ETCD;
步骤104,集群各节点服务代理程序通过API Server定时检查ETCD中的服务信息,如果没有发现新的服务变更,转至步骤104;如果发现了新的服务,则转至步骤105;如果发现了服务的下线,则转至步骤106;
步骤105,节点服务代理根据Round-Robin算法建立相应的“服务入口IP:服务端口”到服务“实例IP:实例端口”的IPTABLES规则,将所有“服务入口IP:服务端口”的请求重定向到“实例IP:实例端口”;
步骤106,节点服务代理删除相应的“服务入口IP:服务端口”到服务“实例IP:实例端口”的IPTABLES规则。
如此一来,控制中心只需要将N个服务实例调度到合适的节点,然后将服务信息通过APIServer发布到ETCD中,集群中各节点上的服务代理会自动将服务注册到本机,注册方式为将“服务入口IP:服务端口”和后端N个“实例IP:实例端口”通过IPTABLES建立转发机制,如此集群内各节点对服务访问可以统一使用“服务入口IP:服务端口”,而无需知道服务后端具体实例的相关信息。
在前述方法步骤实施的前提下,即可实施不需要额外负载均衡器的自适应负载均衡的操作,自注册微服务的发现的重点在于为微服务提供了一个统一入口,而本部分操作中负载均衡的重点在于对统一入口的请求分流到后端实例。两者是相互协作的关系,完成了从发出服务请求落实到具体后端实例的过程。
集群各节点的代理程序通过建立IPTABLES转发规则,此转发规则即为下述步骤202中的规则,是根据Round-Robin算法而设定的一种轮询调度算法,在软件层面对服务进行负载均衡。步骤如下:
步骤201,集群中各节点服务代理程序定时检查ETCD中的服务信息,如果发现了新的服务发布,则转至步骤202;
步骤202,假设服务有N个后端实例,节点服务代理程序建立N条IPTABLES转发规则使得服务的访问请求能够转发到后端的N个实例,而且保证第i个实例的转发权重为1/i,如此根据Round-Robin算法可知在并发访问的情况下,每个后端服务实例被访问到的概率都是相同的。
此Round-Robin算法是一种公平的轮训调度算法,步骤202中后端微服务IPTABLES转发规则的设定参考此算法。
确保访问概率相同的目的是保证后端实例的负载均衡,避免个别实例被过于频繁访问而个别实例却总是空闲这种情况的发生。
需要注意的是,根据负载监控,如果增加或减少了后端实例的数目,为了使得后端实例负载均衡,需要根据自适应负载均衡方法重新调整IPTABLES转发规则(参考步骤202)。
在前述方法步骤实施的前提下,即可实施基于负载监控的微服务弹性伸缩操作,集群中每个节点都运行着服务负载监控程序,定时采集本机所有服务的负载情况并向控制中心发送,控制中心综合该微服务的负载情况进行动态的增加或删减服务的后端实例。
“基于负载监控的微服务弹性伸缩”的技术构思为:如果某些时间段请求量剧增,尽管有负载均衡策略,后端所有的实例负载都很高,很可能并不能及时的对请求进行响应,导致部分请求可能会出现长时间无响应的状态,这时候需要根据实例的负载情况,相应的增加后端实例的数目,以缓解请求的压力,提高集群微服务的可用性。反之,如果后端实例长时间负载较低,则认为可以减少后端实例的数目,以提高集群资源的利用率。
其步骤如下:
步骤301,节点管理组件每隔一分钟采集一次(该间隔时间可调,经过实际工程验证该数据可行较高,实际可选30秒至两分钟)当前节点上所有服务所占用的内存、CPU、网络带宽等信息,计算出一个统计周期负载平均值后向控制中心发送负载信息;统计周期为五分钟。(该统计周期可调,经过实际工程验证该数据可行性较高,实际上可以允许周期长度有3分钟以内的浮动)
步骤302,控制中心对收到的负载信息进行分析,如果连续3次超过最高负载阈值则触发报警,然后转到步骤303,如果连续3次低于最低负载阈值同样触发报警,然后转到步骤304;
步骤303,控制中心按照步骤102增加该服务的后端实例,增加量为当前实例个数的一半,然后按照步骤103更新ETCD中的服务信息,接着按照步骤105更新各节点的IPTABLES转发规则;
步骤304,控制中心将报警信息通过邮件服务器发送给相关运维人员,并由其确定是否对当前服务后端实例进行缩减操作。
很明显如果后端实例负载较高,扩容操作可以降低后端实例的负载,提高集群微服务的可用性。但是本专利之所以将“缩容”操作由相关人员来操作,是因为缩容操作并不会提高集群微服务的高可用性,只是由于某些微服务长期比较空闲,于是通报相关人员,由相关人员根据该微服务的重要紧急程度决定是否进行缩容操作,以提高集群整体的资源利用率。
图5为本实施例的集群中各节点服务代理工作的流程图。服务代理是在集群各节点运行的一种服务,用来定时通过APIServer向ETCD查询是否有新的服务变更,如果有变更,该节点服务代理程序会针对变更调整相应的IPTABLES转发规则,步骤如下:
步骤401:通过APIServer获得ETCD中服务状态;
步骤402:判断是否有服务发布或下线;
步骤403:如果有新的服务发布,则根据步骤401从ETCD查询到的服务信息,为该服务增加IPTABLES服务转发规则;
步骤404:如果发现有服务实例下线,则根据步骤401查询到的服务变更信息,删除本地IPTABLES服务转发规则。其中,增加和删除IPTABLES服务转发规则按照步骤202,即根据服务后端实例数目,参考Round-Robin算法进行设定。
上述服务发布不特指发布新的服务,也包括对现有服务增加后端实例的情况,同样,上述服务下线也不特指将现有服务完全回收,也包括对现有服务减少后端服务实例的情况。
图6为本实施例的自适应负载均衡方法的流程图。提供了一种不需要额外负载均衡器的自适应负载均衡的方法,节点服务代理将服务信息根据Round Robin算法建立“服务入口IP:服务端口”和“实例IP:实例端口”的IPTABLES转发规则。具体步骤如下:
步骤501:控制中心发布一个实例为N的服务;
步骤502:控制中心将“服务入口IP:服务端口”和“实例IP:实例端口”通过APIServer写入ETCD;
步骤503:节点服务代理程序通过APIServer查询ETCD发现新服务发布;
步骤504:服务代理程序在在本地建立N条IPTABLES转发规则,将“服务入口IP:服务端口”分别和N个“实例IP:实例端口”相对应;
步骤505:为了对后端N个实例负载均衡,将第i条IPTABLES转发规则的权重设置为1/i;
为了便于理解,下面举例说明。假设控制中心发布了一个新的服务A,后端服务实例为3个,分别用a1、a2、a3,表示,对应“服务入口IP:服务端口”为“10.10.1.128:8080”,对应后端3个“实例IP:实例端口”分别为“192.168.10.100:80”,“192.168.10.101:80”,“192.168.10.102:80”。服务发布之后,集群各节点上的服务代理通过APIServer查询ETCD得知新服务的信息,然后在本地建立从A到a1、a2、a3的IPTABLES转发规则,按照RoundRobin算法规则,对应三条转发规则的权重分别为1、1/2、1/3。如此,如果有访问服务A的请求到达节点,由于访问a1的权重为1,大于1/2和1/3,因此请求首先会转到实例a1来处理;这时如果再来请求,而a1已经被访问过,访问a2的权重为1/2,大于1/3,因此请求与会转到实例a2来处理;这时如果再来请求,而a1和a2已经被访问过,a3的访问权重是1/3,因此请求会转到a3来处理。如此轮询调度,使得每个后端实例能够被实际访问到的概率是相同的。该方法将负载均衡的任务分摊到了集群中每个节点,极大的提高了负载均衡的稳定性,大大降低了由于负载均衡器故障而导致服务不可用的事故发生的几率。
图7为本实施例的微服务扩容缩容方法的流程图。通过对服务后端实例负载进行监控,来对服务后端实例进行动态调整,从而提高集群微服务的高可用性。具体步如下:
步骤601:节点管理组件定时采集本地服务负载信息;
步骤602:节点管理组将负载信息通过APIServer发送给控制中心;
步骤603:控制中心判断是否连续三次负载异常;
步骤604:如果没有发现异常,控制中心继续接收服务负载信息;
步骤605:如果平均负载高于80%,可以调整,该数值经实际工程验证,较为可行。一般认为平均负载长期高于80%为高负载状态。则按照步骤102,控制中心为该服务新增后端实例,增加数目为当前实例总数的一半;可以调整,该数值经实际工程验证,较为可行。
步骤606:节点服务代理按照步骤104,更新本地IPTABLES转发规则;
步骤605:如果平均负载低于30%,则通知相关运维人员,由其决定是否对服务后端实例进行缩减操作。可以调整,该数值经实际工程验证,较为可行。一般认为平均负载长期低于30%-50%为一种低负载状态。
在本实施例中,所述步骤602节点管理组件发送的负载信息为加权负载值。加权负载值是根据CPU、内存、网络带宽三种资源计算出的加权负载,不限于这三种资源占用,可以扩展,比如磁盘大小、IO读写性能等加权负载值等于“CPU利用率*0.4+内存利用率*0.3+网络带宽利用率*0.3”。举例来说,假设一个服务器的CPU利用率为0.4,内存利用率为0.5,网络带宽利用率为0.5,那么该服务器的加权负载值等于“0.4*0.4+0.5*0.3+0.5*0.3”,即0.46。
通过上述实施例描述和介绍可知,本发明提出的方法,通过集群各服务代理程序巧妙的使用IPTABLES转发规则,实现虚拟的服务入口地址到后端真实服务实例地址的转发。使得集群每个节点都完全掌握了集群中所有服务的信息,直接利用服务器内核IP信息过滤系统(IPTABLES)进行转发,服务发现效率较高,而且具有较高的稳定性。
此外,进一步将负载均衡的工作均摊到了集群中每一个节点,避免了负载均衡器成为服务可用性的瓶颈。该方法具有良好的可扩展性,对于集群的横向扩展是很方便的。
并且,能够根据服务的负载情况,对服务进行相应的扩容或缩容操作,在一定程度上提高了集群中微服务的可用性。
当然,上文所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

Claims (10)

1.一种面向集群微服务的高可用实现方法,包括以下步骤:
通过部署服务架构使集群中的全部节点同步感知新发布的微服务;
集群中的各节点的服务代理程序通过建立IPTABLES转发规则对微服务进行负载均衡调节;
在集群中各节点运行服务负载监控程序,定时采集并整合各节点所有微服务的负载情况,据此进行动态的增加或删减微服务的后端实例的操作。
2.如权利要求1所述的面向集群微服务的高可用实现方法,其特征在于,所述服务架构部署如下:
部署控制中心,用以控制微服务的发布与回收、实时收集集群各节点的心跳信息以及维护各节点的负载信息;
部署于各节点的节点管理组件,用以对该节点实例生命周期进行管理;
部署服务代理程序,用以定时通过APIServer向ETCD查询是否有新的服务变更,如果有变更,则针对变更调整相应的IPTABLES转发规则;
部署API Server,用以作为控制中心、节点管理组件、服务代理程序与ETCD集群进行交互的入口,作为控制中心与节点管理组件和服务代理程序交互的入口;
部署“服务入口IP:服务端口”用以通过IPTABLES规则重新定向访问请求;部署“实例IP:实例端口”;
部署ETCD,用以作为存储单元。
3.如权利要求2所述的面向集群微服务的高可用实现方法,其特征在于,通过以下步骤实现集群中的全部节点同步感知新发布的微服务:
填写微服务配置信息;
控制中心根据集群节点负载情况,将微服务后端实例调度到至能够满足实例最低配置要求的宿主机;
控制中心将微服务配置信息写入ETCD;
集群各节点中服务代理程序通过API Server定时检查ETCD中的服务信息,如果发现了新的微服务,则该服务代理程序建立相应的“服务入口IP:服务端口”到服务“实例IP:实例端口”的IPTABLES规则,将所有“服务入口IP:服务端口”的请求重定向到“实例IP:实例端口”;
如果发现了微服务的下线,则该节点的服务代理程序删除相应的“服务入口IP:服务端口”到服务“实例IP:实例端口”的IPTABLES规则。
4.如权利要求2所述的面向集群微服务的高可用实现方法,其特征在于,所述集群中的各节点的服务代理程序通过建立IPTABLES转发规则对微服务进行负载均衡调节包括;
集群中各节点服务代理程序定时检查ETCD中的服务信息,如果发现了新的微服务,
则节点服务代理程序建立N条IPTABLES转发规则使得服务的访问请求能够转发到后端的N个实例,且保证第i个实例的转发权重为1/i,使各后端服务实例被访问到的概率相同,其中,N为微服务的后端实例数量。
5.如权利要求4所述的面向集群微服务的高可用实现方法,其特征在于,在集群中各节点运行服务负载监控程序,定时采集并整合各节点所有微服务的负载情况,据此进行动态的增加或删减微服务的后端实例的操作包括:
各节点的节点管理组件间隔采集当前节点上的负载信息,计算出一个统计周期负载平均值后向控制中心发送负载信息;
控制中心对收到的负载信息进行分析,如果连续3次超过最高负载阈值则触发报警,并增加该服务的后端实例,更新ETCD中的服务信息并更新各节点的IPTABLES转发规则;
如果连续3次低于最低负载阈值同样触发报警,控制中心发送资源闲置警告信息。
6.如权利要求5所述的面向集群微服务的高可用实现方法,其特征在于,增加该服务的后端实例数量为当前服务实例个数的一半。
7.如权利要求5所述的面向集群微服务的高可用实现方法,其特征在于,所述最高负载阀值不小于80%,最低负载阀值选自30%-50%。
8.如权利要求2所述的面向集群微服务的高可用实现方法,其特征在于,所述服务代理程序针对变更调整相应的IPTABLES转发规则包括:
通过APIServer查询ETCD中服务状态获取服务信息或服务变更信息;
判断是否有微服务发布或下线;
如果有新的微服务发布,则根据服务信息,为该服务增加IPTABLES服务转发规则;
如果有微服务实例下线,则根据服务变更信息,删除本地IPTABLES服务转发规则。
9.如权利要求8所述的面向集群微服务的高可用实现方法,其特征在于,增加和删除IPTABLES服务转发规则根据服务后端实例数目进行设定。
10.如权利要求8所述的面向集群微服务的高可用实现方法,其特征在于,所述负载信息为根据资源种类及资源利用率计算的加权负载值。
CN201810330549.5A 2018-04-13 2018-04-13 一种面向集群微服务高可用的实现方法 Pending CN108712464A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810330549.5A CN108712464A (zh) 2018-04-13 2018-04-13 一种面向集群微服务高可用的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810330549.5A CN108712464A (zh) 2018-04-13 2018-04-13 一种面向集群微服务高可用的实现方法

Publications (1)

Publication Number Publication Date
CN108712464A true CN108712464A (zh) 2018-10-26

Family

ID=63867311

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810330549.5A Pending CN108712464A (zh) 2018-04-13 2018-04-13 一种面向集群微服务高可用的实现方法

Country Status (1)

Country Link
CN (1) CN108712464A (zh)

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109246246A (zh) * 2018-10-31 2019-01-18 成都知道创宇信息技术有限公司 一种中心化全自动服务发现负载均衡系统
CN109618002A (zh) * 2019-01-11 2019-04-12 武汉斗鱼鱼乐网络科技有限公司 一种微服务网关优化方法、装置及存储介质
CN109639572A (zh) * 2018-12-06 2019-04-16 网易(杭州)网络有限公司 路由管理方法、装置及微服务系统
CN110149396A (zh) * 2019-05-20 2019-08-20 华南理工大学 一种基于微服务架构的物联网平台构建方法
CN110351380A (zh) * 2019-06-03 2019-10-18 武汉纺织大学 一种新存储节点同步任务的分配方法和系统
CN110389831A (zh) * 2019-06-14 2019-10-29 网宿科技股份有限公司 维护负载均衡配置的方法和服务器监管设备
CN110401696A (zh) * 2019-06-18 2019-11-01 华为技术有限公司 一种去中心化处理的方法、通信代理、主机以及存储介质
CN110489139A (zh) * 2019-07-03 2019-11-22 平安科技(深圳)有限公司 一种基于微服务的实时数据处理方法及其相关设备
CN110502761A (zh) * 2019-08-27 2019-11-26 北京金山数字娱乐科技有限公司 一种翻译平台及其负载调整方法
CN110601994A (zh) * 2019-10-14 2019-12-20 南京航空航天大学 云环境下微服务链感知的负载均衡方法
CN111130955A (zh) * 2020-03-31 2020-05-08 四川新网银行股份有限公司 基于互联网信贷系统的分布式链路监控方法
CN111459681A (zh) * 2020-04-07 2020-07-28 上海熙菱信息技术有限公司 一种基于微服务负载的动态弹性伸缩方法
CN111475306A (zh) * 2020-03-31 2020-07-31 招商局金融科技有限公司 微服务节点、异步任务处理方法、系统和存储介质
CN111683132A (zh) * 2020-06-04 2020-09-18 重庆英楼维兴信息科技有限公司 一种基于微服务架构的业务分发方法及相关装置
CN111865714A (zh) * 2020-06-24 2020-10-30 上海上实龙创智能科技股份有限公司 一种基于多云环境的集群管理方法
CN111885005A (zh) * 2020-06-29 2020-11-03 济南浪潮数据技术有限公司 一种容器云平台服务通信方法、装置、设备及介质
CN111880898A (zh) * 2020-07-27 2020-11-03 山东省计算中心(国家超级计算济南中心) 一种基于微服务架构的服务调度方法及其实现系统
CN111988383A (zh) * 2020-08-07 2020-11-24 苏州浪潮智能科技有限公司 一种校验应用开启微服务治理条件的方法及装置
CN112003763A (zh) * 2020-08-07 2020-11-27 山东英信计算机技术有限公司 网络链路的监测方法、监测装置、监测设备及存储介质
CN112202829A (zh) * 2019-07-08 2021-01-08 北京邮电大学 基于微服务的社交机器人调度系统和调度方法
CN112448848A (zh) * 2020-11-13 2021-03-05 上海电器科学研究所(集团)有限公司 一种基于微服务自动扩容方法
CN112532683A (zh) * 2020-10-30 2021-03-19 北京盛和信科技股份有限公司 一种基于微服务架构下的边缘计算方法和设备
CN112532743A (zh) * 2020-12-18 2021-03-19 上海安畅网络科技股份有限公司 一种智能负载均衡方法、装置及存储介质
CN112817717A (zh) * 2021-01-28 2021-05-18 新华三大数据技术有限公司 一种定时任务的调度方法及装置
CN113268308A (zh) * 2020-02-14 2021-08-17 中移(苏州)软件技术有限公司 信息处理方法、装置以及存储介质
CN113395310A (zh) * 2020-03-12 2021-09-14 华为技术有限公司 一种微服务调用方法、装置、设备及介质
CN113568711A (zh) * 2021-08-04 2021-10-29 上海仪电(集团)有限公司中央研究院 一种K8S中使用的基于eBPF架构的负载均衡方法及装置
CN113726902A (zh) * 2021-09-02 2021-11-30 马上消费金融股份有限公司 微服务的调用方法及系统
CN113810443A (zh) * 2020-06-16 2021-12-17 中兴通讯股份有限公司 资源管理方法、系统、代理服务器及存储介质
CN114125035A (zh) * 2021-09-27 2022-03-01 烽火通信科技股份有限公司 一种大规模扩容场景下服务注册方法与装置
CN114296925A (zh) * 2021-12-29 2022-04-08 武汉思普崚技术有限公司 一种基于微服务架构的文件类型识别系统及方法
CN114390089A (zh) * 2021-12-06 2022-04-22 深圳市法本信息技术股份有限公司 一种api网关负载均衡方法及api网关
CN114466017A (zh) * 2022-03-14 2022-05-10 阿里巴巴(中国)有限公司 kubernetes边缘集群的数据监测方法和装置
CN114666201A (zh) * 2022-03-02 2022-06-24 国动物联网有限公司 一种高可用的分布式微服务架构
CN114911615A (zh) * 2022-05-06 2022-08-16 江苏安超云软件有限公司 微服务运行时智能预测调度的方法及应用

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105933137A (zh) * 2015-12-21 2016-09-07 中国银联股份有限公司 一种资源管理方法、装置及系统
US9537949B2 (en) * 2013-09-24 2017-01-03 Clearcube Technology, Inc. Computer system image clustering architecture and use
CN106445637A (zh) * 2016-09-29 2017-02-22 中国银联股份有限公司 容器管理调度系统
CN106487594A (zh) * 2016-10-31 2017-03-08 中国人民解放军91655部队 基于微服务组件的网络流量采集和分析系统
CN107483538A (zh) * 2017-07-06 2017-12-15 聚好看科技股份有限公司 一种在微服务集群的节点上处理访问请求包的方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9537949B2 (en) * 2013-09-24 2017-01-03 Clearcube Technology, Inc. Computer system image clustering architecture and use
CN105933137A (zh) * 2015-12-21 2016-09-07 中国银联股份有限公司 一种资源管理方法、装置及系统
CN106445637A (zh) * 2016-09-29 2017-02-22 中国银联股份有限公司 容器管理调度系统
CN106487594A (zh) * 2016-10-31 2017-03-08 中国人民解放军91655部队 基于微服务组件的网络流量采集和分析系统
CN107483538A (zh) * 2017-07-06 2017-12-15 聚好看科技股份有限公司 一种在微服务集群的节点上处理访问请求包的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杜威科: "基于Kubemetes的大数据流式计算Spark平台设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109246246A (zh) * 2018-10-31 2019-01-18 成都知道创宇信息技术有限公司 一种中心化全自动服务发现负载均衡系统
CN109246246B (zh) * 2018-10-31 2021-03-19 成都知道创宇信息技术有限公司 一种中心化全自动服务发现负载均衡系统
CN109639572B (zh) * 2018-12-06 2021-01-26 网易(杭州)网络有限公司 路由管理方法、装置及微服务系统
CN109639572A (zh) * 2018-12-06 2019-04-16 网易(杭州)网络有限公司 路由管理方法、装置及微服务系统
CN109618002A (zh) * 2019-01-11 2019-04-12 武汉斗鱼鱼乐网络科技有限公司 一种微服务网关优化方法、装置及存储介质
CN110149396A (zh) * 2019-05-20 2019-08-20 华南理工大学 一种基于微服务架构的物联网平台构建方法
CN110351380A (zh) * 2019-06-03 2019-10-18 武汉纺织大学 一种新存储节点同步任务的分配方法和系统
CN110389831A (zh) * 2019-06-14 2019-10-29 网宿科技股份有限公司 维护负载均衡配置的方法和服务器监管设备
CN110389831B (zh) * 2019-06-14 2021-11-02 网宿科技股份有限公司 维护负载均衡配置的方法和服务器监管设备
CN110401696A (zh) * 2019-06-18 2019-11-01 华为技术有限公司 一种去中心化处理的方法、通信代理、主机以及存储介质
US11677860B2 (en) 2019-06-18 2023-06-13 Huawei Technologies Co., Ltd. Decentralization processing method, communication proxy, host, and storage medium
CN110489139B (zh) * 2019-07-03 2024-09-10 平安科技(深圳)有限公司 一种基于微服务的实时数据处理方法及其相关设备
CN110489139A (zh) * 2019-07-03 2019-11-22 平安科技(深圳)有限公司 一种基于微服务的实时数据处理方法及其相关设备
WO2021000410A1 (zh) * 2019-07-03 2021-01-07 平安科技(深圳)有限公司 一种基于微服务的实时数据处理方法及其相关设备
CN112202829A (zh) * 2019-07-08 2021-01-08 北京邮电大学 基于微服务的社交机器人调度系统和调度方法
CN110502761A (zh) * 2019-08-27 2019-11-26 北京金山数字娱乐科技有限公司 一种翻译平台及其负载调整方法
CN110502761B (zh) * 2019-08-27 2023-09-19 北京金山数字娱乐科技有限公司 一种翻译平台及其负载调整方法
CN110601994A (zh) * 2019-10-14 2019-12-20 南京航空航天大学 云环境下微服务链感知的负载均衡方法
CN113268308B (zh) * 2020-02-14 2023-04-07 中移(苏州)软件技术有限公司 信息处理方法、装置以及存储介质
CN113268308A (zh) * 2020-02-14 2021-08-17 中移(苏州)软件技术有限公司 信息处理方法、装置以及存储介质
CN113395310A (zh) * 2020-03-12 2021-09-14 华为技术有限公司 一种微服务调用方法、装置、设备及介质
CN111475306B (zh) * 2020-03-31 2023-04-07 招商局金融科技有限公司 微服务节点、异步任务处理方法、系统和存储介质
CN111475306A (zh) * 2020-03-31 2020-07-31 招商局金融科技有限公司 微服务节点、异步任务处理方法、系统和存储介质
CN111130955A (zh) * 2020-03-31 2020-05-08 四川新网银行股份有限公司 基于互联网信贷系统的分布式链路监控方法
CN111459681B (zh) * 2020-04-07 2023-08-08 上海熙菱信息技术有限公司 一种基于微服务负载的动态弹性伸缩方法
CN111459681A (zh) * 2020-04-07 2020-07-28 上海熙菱信息技术有限公司 一种基于微服务负载的动态弹性伸缩方法
CN111683132A (zh) * 2020-06-04 2020-09-18 重庆英楼维兴信息科技有限公司 一种基于微服务架构的业务分发方法及相关装置
CN111683132B (zh) * 2020-06-04 2022-07-19 重庆金窝窝网络科技有限公司 一种基于微服务架构的业务分发方法及相关装置
CN113810443A (zh) * 2020-06-16 2021-12-17 中兴通讯股份有限公司 资源管理方法、系统、代理服务器及存储介质
CN111865714A (zh) * 2020-06-24 2020-10-30 上海上实龙创智能科技股份有限公司 一种基于多云环境的集群管理方法
CN111865714B (zh) * 2020-06-24 2022-08-02 上海上实龙创智能科技股份有限公司 一种基于多云环境的集群管理方法
CN111885005A (zh) * 2020-06-29 2020-11-03 济南浪潮数据技术有限公司 一种容器云平台服务通信方法、装置、设备及介质
CN111885005B (zh) * 2020-06-29 2022-02-18 济南浪潮数据技术有限公司 一种容器云平台服务通信方法、装置、设备及介质
CN111880898B (zh) * 2020-07-27 2022-04-05 山东省计算中心(国家超级计算济南中心) 一种基于微服务架构的服务调度方法及其实现系统
CN111880898A (zh) * 2020-07-27 2020-11-03 山东省计算中心(国家超级计算济南中心) 一种基于微服务架构的服务调度方法及其实现系统
CN112003763A (zh) * 2020-08-07 2020-11-27 山东英信计算机技术有限公司 网络链路的监测方法、监测装置、监测设备及存储介质
CN111988383B (zh) * 2020-08-07 2022-06-21 苏州浪潮智能科技有限公司 一种校验应用开启微服务治理条件的方法及装置
CN111988383A (zh) * 2020-08-07 2020-11-24 苏州浪潮智能科技有限公司 一种校验应用开启微服务治理条件的方法及装置
CN112532683A (zh) * 2020-10-30 2021-03-19 北京盛和信科技股份有限公司 一种基于微服务架构下的边缘计算方法和设备
CN112448848A (zh) * 2020-11-13 2021-03-05 上海电器科学研究所(集团)有限公司 一种基于微服务自动扩容方法
CN112532743B (zh) * 2020-12-18 2021-11-30 上海安畅网络科技股份有限公司 一种智能负载均衡方法、装置及存储介质
CN112532743A (zh) * 2020-12-18 2021-03-19 上海安畅网络科技股份有限公司 一种智能负载均衡方法、装置及存储介质
CN112817717A (zh) * 2021-01-28 2021-05-18 新华三大数据技术有限公司 一种定时任务的调度方法及装置
CN112817717B (zh) * 2021-01-28 2024-02-09 新华三大数据技术有限公司 一种定时任务的调度方法及装置
CN113568711B (zh) * 2021-08-04 2024-02-02 上海仪电(集团)有限公司中央研究院 一种K8S中使用的基于eBPF架构的负载均衡方法及装置
CN113568711A (zh) * 2021-08-04 2021-10-29 上海仪电(集团)有限公司中央研究院 一种K8S中使用的基于eBPF架构的负载均衡方法及装置
CN113726902A (zh) * 2021-09-02 2021-11-30 马上消费金融股份有限公司 微服务的调用方法及系统
CN114125035B (zh) * 2021-09-27 2023-08-08 烽火通信科技股份有限公司 一种大规模扩容场景下服务注册方法与装置
CN114125035A (zh) * 2021-09-27 2022-03-01 烽火通信科技股份有限公司 一种大规模扩容场景下服务注册方法与装置
CN114390089A (zh) * 2021-12-06 2022-04-22 深圳市法本信息技术股份有限公司 一种api网关负载均衡方法及api网关
CN114296925A (zh) * 2021-12-29 2022-04-08 武汉思普崚技术有限公司 一种基于微服务架构的文件类型识别系统及方法
CN114666201A (zh) * 2022-03-02 2022-06-24 国动物联网有限公司 一种高可用的分布式微服务架构
CN114666201B (zh) * 2022-03-02 2024-01-30 国动物联网有限公司 一种高可用的分布式微服务架构
CN114466017A (zh) * 2022-03-14 2022-05-10 阿里巴巴(中国)有限公司 kubernetes边缘集群的数据监测方法和装置
CN114466017B (zh) * 2022-03-14 2024-03-12 阿里巴巴(中国)有限公司 kubernetes边缘集群的数据监测方法和装置
CN114911615B (zh) * 2022-05-06 2023-05-30 安超云软件有限公司 微服务运行时智能预测调度的方法及应用
CN114911615A (zh) * 2022-05-06 2022-08-16 江苏安超云软件有限公司 微服务运行时智能预测调度的方法及应用

Similar Documents

Publication Publication Date Title
CN108712464A (zh) 一种面向集群微服务高可用的实现方法
US20240069942A1 (en) Centralized networking configuration in distributed systems
CN103369601B (zh) 为手机客户端提供大并发处理及流量控制的方法
CN108833462A (zh) 一种面向微服务的自注册服务发现的系统及方法
CN112671882B (zh) 一种基于微服务的同城双活系统和方法
US9307017B2 (en) Member-oriented hybrid cloud operating system architecture and communication method thereof
CA2471594C (en) Method and apparatus for web farm traffic control
US9781012B2 (en) Behavior monitoring and compliance for multi-tenant resources
EP3264723B1 (en) Method, related apparatus and system for processing service request
CN101605092A (zh) 一种基于内容的负载均衡系统
US20020194251A1 (en) Systems and methods for resource usage accounting in information management environments
US20030236887A1 (en) Cluster bandwidth management algorithms
US20030046396A1 (en) Systems and methods for managing resource utilization in information management environments
CN106502769A (zh) 分布式事务处理方法、装置及系统
CN110209492A (zh) 一种数据处理方法及装置
CN108965014A (zh) QoS感知的服务链备份方法及系统
CN108228393A (zh) 一种可扩展的大数据高可用的实现方法
CN107124453A (zh) 平台互联网关堆叠部署的负载均衡系统及视频呼叫方法
WO2021120633A1 (zh) 一种负载均衡方法及相关设备
CN105049509A (zh) 一种集群调度方法、负载均衡器以及集群系统
CN112583734B (zh) 一种突发流量控制方法、装置、电子设备及存储介质
CN114301972A (zh) 一种基于云边协同的区块链节点分级部署方法和系统
CN109474700A (zh) iSCSI客户端的接入方法、存储介质、客户端和存储节点
CN113326100A (zh) 一种集群管理方法、装置、设备及计算机存储介质
CN112543150A (zh) 基于服务端控制的动态负载均衡方法

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: 20181026

RJ01 Rejection of invention patent application after publication