一种恢复服务及性能提升的方法及运维管理系统与流程

文档序号:11263526阅读:238来源:国知局
一种恢复服务及性能提升的方法及运维管理系统与流程

本发明涉及分布式系统,更具体地,涉及一种分布式系统恢复服务及性能提升的方法及运维管理系统。



背景技术:

当前在大规模分布式存储系统中,为了实现集中权限认证、配额控制,大部分采用了集中式元数据管理的方法,即将整个存储系统中所有数据的元信息集中存放在若干节点进行存储。这种架构中元数据节点(也可称为元数据服务器等)的可用性直接关系到整个系统的可用性,在多种分布式系统中都通过冗余的方式来增加元数据服务的可用性。

冗余的方式会引入多个节点,节点间必须使用状态同步协议,保证在任何时候做出的决定都是正确和不可否认的。在一个分布式系统中,如果各节点的初始状态一致,每个节点都执行相同的命令序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。

paxos协议被公认为是状态同步协议中应用最广泛的协议之一,它解决的问题是一个分布式系统如何就某个值(决议)达成一致。paxos协议在有修改操作时,会将所有修改状态单调递增编号,并在多个节点上进行决策,如果大多数节点都同意接受这个决策,则修改被分别持久化到多个节点。这样的协议设计可以保证每次决议都是大多数节点同意做出的,保证了决议的正确性,反之,如果少数节点可以做出决议,会导致在同一个协议号产生两个决议,从用户角度看来是错误决议或者决议不一致。同时每次决议号和决议本身持久化保证了在有错误发生恢复的时候,只要大多数节点的数据没有任何丢失,那么以前做出的决议还是被保留的,之后的任何决议都可以基于一个正确的决议基础继续进行,在任何时刻保证数据的一致即决议正确。

在利用多个元数据节点作为备份的分布式存储系统中,如果使用了paxos协议作为选举和日志备份的理论基础,在剩余少数元数据节点的情况下就不能提供正常的元数据服务。在生产系统中,由于元数据节点所在的机器的硬件配置基本是一致的,例如都使用了相同厂商的固态硬盘(ssd:solidstatedrives),擦写寿命相差不大,导致多台机器同时出问题的概率会增加。一旦过半的机器出现了磁盘只读模式,会导致服务停止。在有多数元数据节点宕机的时候,如果主节点依然还可用,可以对外提供读取元数据的服务,但修改元数据的操作都不能成功。

在分布式存储系统中使用paxos协议的一种简化方式时,多个元数据节点通过paxos协议进行选举,产生主节点(primary)提供元数据服务;其他节点作为从节点(slave),只接受主节点的日志同步。主节点产生的日志会发给所有的从节点,如果从节点同意并且接受了日志同步,主节点会收到从节点同意的反馈,在多数节点同步成功(包括主节点)时,主节点向发出服务请求的客户端(client)返回成功,否则客户端的请求将被挂起,客户端会收到超时消息,此时表现为服务停止。也就是说,采用paxos协议提供元数据服务冗余能力时,如果大多数元数据节点停止服务时,会导致整个服务停止,即使其中还存在正常节点。另外,如果至少一半的节点性能变差时,整个服务的性能也会随之变差。因为日志同步时大多数节点后返回同意才能完成客户端的操作,所以操作性能依赖于大多数节点中最慢节点的性能。

其他运行状态同步协议的节点集群也存在类似的情况。



技术实现要素:

有鉴于此,本发明提供了以下方案。

一种恢复服务的方法,应用于运维管理系统,包括:

检测运行状态同步协议的节点集群中节点的状态变化,确定正常节点的个数nn,nn为整数;

如果nn从大于等于s0变为小于s0,进行紧急处理以恢复正常服务,其中,在所述正常节点中包括主节点时,所述紧急处理包括:将配置中心及 所述正常节点保存的所述参数s的值修改为小于或等于nn的正整数值;

其中,参数s表示所述节点集群提供正常服务所要求的同步成功节点的最小个数,s0是根据所述状态同步协议确定的参数s的值。

一种运维管理系统,包括状态检测模块、控制模块和紧急处理模块,其中:

所述状态检测模块,用于检测运行状态同步协议的节点集群中节点的状态变化,确定正常节点的个数nn并通知所述控制模块,nn为整数;

所述控制模块,用于在nn从大于等于s0变为小于s0后,调用紧急处理模块进行紧急处理,以恢复正常服务;

所述紧急处理模块,用于在所述正常节点中包括主节点时,执行以下紧急处理:将配置中心及所述正常节点保存的所述参数s的值修改为小于或等于nn的正整数值;

其中,参数s表示所述节点集群提供正常服务所要求的同步成功节点的最小个数,s0是根据所述状态同步协议确定的参数s的值。

上述方案在正常节点的个数达不到正常服务所要求的同步成功节点的最小个数时,通过参数变更使服务可以立即恢复,在故障排除后可以方便地恢复服务,期间不会引起数据不一致和丢失。这样的处理方法可以有效解决多个节点同时出现硬件错误带来的不可用问题,减少经济损失。

一种性能提升的方法,包括:

确定运行状态同步协议的节点集群中的低性能节点;

当至少有一个低性能节点同步成功,所述节点集群的同步过程才能成功时,进行性能提升处理,使得没有所述低性能节点同步成功时所述同步过程也能成功。

一种运维管理系统,包括性能管理模块,其中:

所述性能管理模块用于对运行状态同步协议的节点集群进行性能提升处理,包括:

第一处理单元,用于将配置中心保存的参数s的值修改为t-sn;

第二处理单元,用于将所述节点集群中节点保存的参数s的值修改为t-sn;

其中,t为所述节点集群的节点数,t≥2,sn是所述节点集群中低性能节点的个数,参数s表示所述节点集群提供正常服务所要求的同步成功节点的最小个数。

上述方案在低性能节点增多使得同步速度变慢时,通过合理配置参数,让节点集群的性能总与高性能节点匹配。

附图说明

图1是本发明实施例一网络架构的示意图;

图2是本发明实施例一恢复服务的方法的流程图;

图3是本发明实施例一运维管理系统的模块图;

图4是本发明实施例二性能提升的方法的流程图;

图5是本发明实施例二运维管理系统的模块图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

实施例一

本实施例以分布式存储系统中运行paxos协议或其衍生协议的元数据节点集群为例,为了方便表述,也将实施例中的元数据节点简称为节点。本实施例相关的网络架构如图1所示,包括:元数据节点集群、配置中心、运维管理系统和客户端,元数据节点集群中的节点在图中以3个为例,其中的多个元数据节点分为主节点和从节点。

主节点:对外提供读、写服务的节点,将写操作转换为修改日志,同步给所有从节点;

从节点:接受主节点同步过来的日志,通过协议约定判断是否可以接受日志,如果可以接受,则返回接受成功并将日志应用到内存中,否则返回接受失败。

配置中心是节点启动参数持久化的存储系统,每个节点启动时从配置中心中获取选举阶段和服务阶段应使用的配置参数,保存在内存中,并在相应的阶段应用。

运维管理系统:也可称为运维工具,在必要的时候发送修改参数的请求给任何节点。可以在任何一个节点所在的机器上执行从该节点记录到本地的日志中提取日志,同步到其他正常的节点的操作;可以查看当前集群中节点的状态,确定正常节点的个数和异常节点的个数;判断是否需要进行紧急处理以恢复正常服务;及,确定应该使用哪种紧急处理方案,等等。文中的运维管理系统包括用于完成相应运行维护、管理功能的各种功能模块。在实体上,可以部署在元数据节点上,也可以部署为其他设备,可以用单个设备实现,也可以用多个设备实现,对此本发明不加以局限。

客户端(client):发起读、写元数据请求的进程,读写元数据的请求都发送到当前的主节点,写操作如果被接受会在主节点产生修改日志。

利用运维工具设置当前正常的元数据节点内存中的参数为第2步骤中配置的新参数。

元数据节点集群的相关处理分为选举阶段和服务阶段,其中:

选举阶段:

这个阶段让多个节点参与选举过程,并决定对外提供服务的主节点,其他节点变成从节点。paxos协议中,完成选举需要有两个参数t和e。。t=en+nn,en是t个节点中异常节点的个数,nn是t个节点中正常节点的个数。e表示选举成功所要求的正常节点的最小个数,根据状态同步协议 确定的e的值记为e0,在paxos协议中e0=floor(t/2)+1,floor()表示向下取整。也就是说,有多数也即超过一半的节点正常时,才能够成功选举出新的主节点。

服务阶段:

选择产生主节点之后,所有的读写请求都通过主节点进行处理,写操作会产生修改日志,主节点通过网络将日志同步给所有的从节点。同步阶段需要有两个参数t和s才能判断是否完成了同步。t的含义如上所述。s表示所述节点集群提供正常服务所要求的同步成功节点的最小个数。根据状态同步协议确定的s的值记为s0,在paxos协议中,s0=floor(t/2)+1,例如t=5时s0=3,而t=9时s0=5。在一次修改元数据的操作中,只有成功写入相应修改日志的节点的个数大于等于s,此次修改元数据的操作才能成功,主节点也算在s中。即除了将日志写入本地,主节点还需要将修改日志成功同步给s-1个从节点才能完成修改元数据的操作,如果不能完成修改元数据的操作,客户端的请求将被挂起,此时表现为服务停止。

显然,文中表示节点个数的参数均为整数。

如上所述,在正常节点的个数低于paxos协议要求的参数s0时,由于异常节点不能成功写入修改日志,因而将导致节点集群不能提供正常服务。为此,本实施例通过运维管理系统根据节点状态加以判决,在不能提供正常服务时,通过参数变更让服务立即恢复。

如图2所示,本实施例恢复服务的方法应用于运维管理系统,包括:

步骤110,检测运行状态同步协议的节点集群中节点的状态变化,确定正常节点的个数nn,nn为整数;

本实施例中,所述节点集群是分布式存储系统中运行paxos协议或其衍生协议的元数据节点集群。所述同步指日志同步。但本发明不局限于此,也可以用于运行状态同步协议的其他节点集群,因为本实施例是通过对协议参数的修改使节点之间可以同步成功从而恢复服务,节点集群所提供的服务种类不同并不影响服务的恢复。本发明也可以用于运行其他状态同步协议如ha 协议的多个节点。

步骤120,如果nn从大于等于s0变为小于s0,进行紧急处理以恢复正常服务,在所述正常节点中包括主节点时,所述紧急处理包括:将配置中心及所述正常节点保存的所述参数s的值修改为小于或等于nn的正整数值;

其中,参数s的含义如上所述。

在主节点为正常节点的情况下,由于主节点还处于服务状态,所以此时恢复服务不需要经过选举阶段,只需要更改服务阶段的同步日志参数s即可完成恢复。本实施例将参数s的值修改为nn(变化后的值)后,因为集群中存在nn个正常节点,因而可以有nn个节点同步成功,满足对同步成功节点的最小个数的要求,因而即可恢复正常服服务。在另一实施例中,也可以将参数s的值修改为小于nn的值,此时也可以恢复正常服务,在又有少量正常节点变为异常节点时不需要再修改s,但本实施例修改为nn时,修改日志同步成功的节点数相对较多,数据安全性更好。

本实施例中,在所述正常节点中包括主节点时,所述紧急处理还包括:将所述配置中心和所述正常节点保存的参数e的值修改为t-nn’+1,其中,参数e表示所述节点集群选举成功所要求的正常节点的最小个数,nn’为参数s修改为的小于或等于nn的所述正整数值。此处,将e值修改为t-nn+1也即fn+1,使得要想选举成功,必须有一个正常节点的参与,而这个正常节点保存的日志是完整的,因而可以避免原来的异常节点恢复为正常节点后,在异常节点之间选举出新的主节点而造成日志数据不一致和丢失。这里,通过修改e值来保证日志的完整,是一种方便的方式,也无法增加其他的接口。但并非唯一方式,如也可以记录下当前的正常节点,在后续的选举中必须要有其中一个正常节点参考才能选举成功,等等。

运维管理系统可以在需要紧急恢复元数据服务(如收到管理员的指令或者根据相应策略触发)时启动上述流程。

本实施例还提供了触发紧急处理后,在所述正常节点中不包括主节点时的紧急处理方案,此时,由于不存在主节点,所以需要经历选举阶段才能产 生主节点,之后处理流程同正常节点中存在主节点时的紧急处理。具体地,正常节点中不包括主节点时的紧急处理方案包括:

第一步,将至少fn-floor(t/2)个异常节点的本地日志同步给一个正常节点,同步成功后将所述配置中心和所述正常节点保存的参数e的值修改为nn;

在主节点异常时,正常节点保存的日志可能存在不一致的情况。因而此处先进行日志的同步。将至少fn-floor(t/2)个异常节点的本地日志同步给一个正常节点后,该正常节点和其他正常节点一起就有(fn-floor(t/2))+nn=t-floor(t/2)个节点的日志,这些节点在一起就可以确定出现异常前的最新状态。当然,同步成功的前提是至少fn-floor(t/2)个异常节点所在的机器可以登录,这里,异常节点需要不能完成日志同步,但通过运维管理工具,仍有可能登录到其所在机器上,将其本地日志复制出来。

本步骤中,将参数e的值修改为nn使得nn个正常节点可以成功举行出新的主节点以恢复服务。

第二步,在所述nn个正常节点选举出新的主节点后,停止服务并执行上述正常节点中包括主节点时的紧急处理,执行完成后恢复正常服务。

在选举出新的主节点后,就可以按照步骤120中的紧急处理方式对s的值进行修改而恢复正常服务,还可以对e的值进行修改。为了避免在修改参数时产生新的修改日志,此时应停止元数据服务,一种简单的方式就是在选举出新的主节点之前,将所述配置中心和所述正常节点保存的参数s的值修改为大于或等于fn+1的值,这样同步不能成功,服务被停止。而在执行完成紧急处理即完成步骤120中对s值的修改之后,即可恢复正常服务。采用其他方式禁止服务也是可以的,如增加一些步骤,在这些步骤增加额外的配置项来实现。

在进行紧急处理之后,节点集群的工作状态转入紧急状态,实现了少数元数据节点可以对外提供服务的能力。在紧急状态下,节点的状态(正常或异常)会发生变化,例如有正常节点变为异常节点,异常节点故障排除后重 新启动后而变为正常节点,为此,本实施例还提供了在节点状态变化时的处理方案,如下:

在nn从大于等于s0变为小于s0,进行紧急处理并恢复正常服务后,如果所述节点集群中有节点的状态再次发生变化,nn也会发生变化,此时比较变化后的nn和s0:

如果nn<s0,重新进行所述紧急处理以恢复正常服务;

如果nn≥s0,将所述配置中心和正常节点保存的参数s和参数e的值分别修改为值s0和值e0;

其中,e0是根据所述状态同步协议确定的参数e的值。。

也即,如果已经有多数节点状态正常,即将s、e的值修改为根据同步状态协议确定的各自的值以恢复初始的工作状态。在paxos协议中,s0=e0=floor(t/2)+1。如果仍然有多数节点状态异常,则需要重新进行紧急处理以恢复正常服务,恢复paxos协议实现的冗余特性。

上述方案中,运维管理系统需要修改元数据节点保存的参数,这可以通过以下方式之一完成:

在主节点正常时或重新选举出主节点后,运维管理系统将参数修改命令发送给主节点;主节点直接修改自己内存中的参数,并产生修改日志记录到本地,并发给所有从节点;从节点接受到日志同步,根据协议约定判断是否可以接受日志,若可以接受,将日志记录到本地,修改内存中参数并返回主节点成功。

在主节点异常时,运维管理系统获取到所有正常的元数据节点,将修改参数的请求发送给每个元数据节点;收到参数修改请求的从节点直接修改自己内存中的配置参数,但不产生任何修改日志。

本实施例中,在上述两种情况下的紧急处理方案中,对所述配置中心和所述正常节点保存的参数s和/或参数e的值进行修改的过程中,禁止异常节点启动,或断开所述配置中心与所述异常节点的连接,以防止在配置过程中异常节点应用了之前的配置参数启动。

本实施例还提供了一种运维管理系统,如图3所示,包括状态检测模块10、控制模块20和紧急处理模块30,其中:

所述状态检测模块10,用于检测运行状态同步协议的节点集群中节点的状态变化,确定正常节点的个数nn并通知所述控制模块,nn为整数;

所述控制模块20,用于在nn从大于等于s0变为小于s0后,调用紧急处理模块进行紧急处理,以恢复正常服务;

所述紧急处理模块30,用于在所述正常节点中包括主节点时,执行以下紧急处理:将配置中心及所述正常节点保存的所述参数s的值修改为小于或等于nn的正整数值;

其中,参数s表示所述节点集群提供正常服务所要求的同步成功节点的最小个数,s0是根据所述状态同步协议确定的参数s的值。

可选地,

所述紧急处理模块在所述正常节点中包括主节点时,执行的紧急处理还包括:将所述配置中心和所述正常节点保存的参数e的值修改为t-nn’+1,其中,参数e表示所述节点集群选举成功所要求的正常节点的最小个数,nn’为参数s修改为的小于或等于nn的所述正整数值。

可选地,

所述紧急处理模块还用于在所述正常节点中不包括主节点时,执行以下紧急处理:将至少fn-floor(t/2)个异常节点的本地日志同步给一个正常节点,同步成功后将所述配置中心和所述正常节点保存的参数e的值修改为nn;及,在所述nn个正常节点选举出新的主节点后,停止服务并执行所述正常节点中包括主节点时的紧急处理,执行完成后恢复正常服务,其中,t为所述节点集群的节点数,t≥2,fn为所述节点集群中异常节点的个数,fn=t-nn,floor()表示向下取整。

可选地,

所述紧急处理模块在所述nn个正常节点选举出新的主节点后停止服务,是通过以下方式实现的:在选举出新的主节点之前,将所述配置中心和 所述正常节点保存的参数s的值修改为大于或等于fn+1的值。

可选地,

所述控制模块还用于在所述状态检测模块通知的nn再次发生变化时,比较变化后的nn和s0:

如果nn<s0,调用紧急处理模块重新进行紧急处理以恢复正常服务;

如果nn≥s0,将所述配置中心和正常节点保存的参数s和参数e的值分别修改为s0和e0;

其中,e0是根据所述状态同步协议确定的参数e的值。

可选地,

所述节点集群是分布式存储系统中运行paxos协议或其衍生协议的元数据节点集群,所述同步指日志同步,s0=e0=floor(t/2)+1,floor()表示向下取整。

可选地,

所述紧急处理模块对所述配置中心和所述正常节点保存的参数s和/或参数e的值进行修改的过程中,禁止异常节点启动,或断开所述配置中心与所述异常节点的连接。

本实施例的上述方案基于paxos状态同步协议,通过配置多个元数据服务器间选举和日志同步的相关参数,在集群中少数元数据节点正常的情况下仍然可以提供元数据读写服务,在故障排除后可以方便恢复服务,期间不会引起数据不一致和丢失。

实施例二

本实施例涉及的也是运行同步状态协议的节点集群,也以分布式存储系统中运行paxos协议或其衍生协议的元数据节点集群为例。其网络架构如图1所示,不再赘述。

本实施例是针对节点集群中低性能节点较多,导致整个集群的服务性能 变差而提出的一种性能提升的方法,如图4所示,包括:

步骤210,确定运行状态同步协议的节点集群中的低性能节点;

本步骤中,低性能节点可以根据设定的节点响应速度等指标来确定,如可以由管理员确定。

步骤220,当至少有一个低性能节点同步成功,所述节点集群的同步过程才能成功时,进行性能提升处理,使得没有所述低性能节点同步成功时所述同步过程也能成功。

本实施例中,如果所述节点集群中低性能节点的个数sn≥t-s0+1,即表示至少有一个低性能节点同步成功,所述节点集群的同步过程才能成功。所述性能提升处理包括:运维管理系统将配置中心和所述节点集群中节点保存的参数s的值修改为t-sn。其中,t为所述节点集群的节点数,t≥2,参数s表示所述节点集群提供正常服务所要求的同步成功节点的最小个数,s0是根据所述状态同步协议确定的参数s的值。本实施例考虑的是正常节点个数大于s0的场景。

将参数s的值修改为t-sn之后,进行同步时只要有t-sn个节点返回成功即同步成功,该t-sn个节点可以不包括低性能节点,因而节点集群的性能可以与高性能节点匹配,而不被低性能节点拉低。

本实施例中,所述性能提升处理还可以包括以下至少一种处理:

处理一,将所述配置中心和所述节点集群中节点保存的参数e的值修改为sn+1;

以paxos协议为例,s0=floor(t/2)+1为例,如果有一半以上的节点为低性能节点,则需要进行性能提升处理,将s的值修改为t-sn,小于协议规定的值s0,为了避免极端情况下产生日志数据不一致和丢失,将参数e修改为sn+1,以保证至少有一个参与之前同步的节点参与选举。

对所述节点集群中节点保存的参数s、e的值的修改可以通过向所述节点集群中的主节点发送对参数s、e的值的修改请求来实现,在请求中携带要修改为的值t-sn、sn+1。

处理二,如果当前的主节点为低性能节点,则将主节点切换为所述节点 集群中除低性能节点外的另一节点。

本实施例中,所述节点集群是分布式存储系统中运行paxos协议或其衍生协议的元数据节点集群,所述同步指日志同步,s0=floor(t/2)+1,floor()表示向下取整。但本实施例的方案也可以用于提供其他服务的节点集群。

本实施例还提供了一种运维管理系统,包括性能管理模块,所述性能管理模块用于对运行状态同步协议的节点集群进行性能提升处理,如图5所示,包括:

第一处理单元50,用于将配置中心保存的参数s的值修改为t-sn;

第二处理单元,用于将所述节点集群中节点保存的参数s的值修改为t-sn;

其中,t为所述节点集群的节点数,t≥2,sn是所述节点集群中低性能节点的个数,参数s表示所述节点集群提供正常服务所要求的同步成功节点的最小个数。

可选地,

所述性能管理模块还包括以下单元中的至少一种:

第三处理单元,用于将所述配置中心和所述节点集群中节点保存的参数e的值修改为sn+1,其中,参数e表示所述节点集群选举成功所要求的正常节点的最小个数;

第四处理单元,用于在当前的主节点为低性能节点时,将主节点切换为所述节点集群中除低性能节点外的另一节点。

可选地,

所述节点集群是分布式存储系统中运行paxos协议或其衍生协议的元数据节点集群,所述同步指日志同步。

本实施例在有较多的元数据节点性能降低导致集群整体性能降低时,通过修改参数,可以提到集群的服务性能。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1