一种分布式系统中CTDB服务的故障处理方法及装置与流程

文档序号:15929949发布日期:2018-11-14 01:31阅读:411来源:国知局

本发明涉及分布式系统领域,特别是涉及一种分布式系统中ctdb服务的故障处理方法、装置及系统。

背景技术

ctdb是一个集群tdb数据库,可以被samba或者其他的应用使用来存储数据。如果一个应用是使用tdb来暂时存放数据,那么这个应用可以很轻松的使用ctdb扩展为集群模式。ctdb提供与tdb相同的函数接口,并且是构建在多台物理机器上的集群。在分布式存储系统中,每个节点都运行有ctdb服务,用于提供集群数据库存储服务。集群各个节点的数据库要始终保持一致,但是当集群规模过大时,ctdb管理的数据库由于某些异常因素可能会导致数据库不一致,或者数据库文件被损坏等问题。

在现有技术中,对于ctdb服务的故障处理方法为管理员在发现故障后人为处理故障,由于集群规模较大,管理员常常不能及时发现、处理故障,从而可能会造成集群的数据库存储出现严重问题。

因此,如何及时处理分布式系统中ctdb服务的故障,是本领域技术人员需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种分布式系统中ctdb服务的故障处理方法、装置及系统,用于及时处理分布式系统中ctdb服务的故障。

为解决上述问题,本发明提供一种分布式系统中ctdb服务的故障处理方法,包括:

监控各节点的本地ctdb服务状态;其中,所述节点包括主节点和从节点;

当所述本地ctdb服务状态出现故障时,按预设规则分析所述故障并生成故障码;

按预存的故障码与解决方案的对应关系,查找与所述故障码对应的解决方案;

执行所述解决方案。

可选地,所述监控各节点的本地ctdb服务状态,具体包括:

接收各所述节点的ctdb主进程的心跳信号;

根据所述心跳信号中携带的状态信息监控所述本地ctdb服务状态。

可选地,所述按预存的故障码与解决方案的对应关系,查找与所述故障码对应的解决方案,具体包括:

将所述故障码发送至所述主节点的故障解决进程,以使所述主节点的故障解决进程按所述预存的故障码与解决方案的对应关系,查找与所述故障码对应的解决方案。

可选地,还包括:

当所述主节点发生故障时,在所述从节点中选举新的主节点代替所述发生故障的主节点。

可选地,还包括:

根据检测、解决所述故障的过程生成故障处理日志;

将所述故障处理日志存储于指定位置。

可选地,还包括:

判断在预设时间内所述故障是否得到解决;

如果否,则将所述故障处理日志发送至管理员邮箱。

可选地,所述故障具体包括ctdb数据库丢失、ctdb数据库损坏、ctdb服务进程僵死和ctdb输出故障关键词中的至少一项。

为解决上述问题,本发明还提供一种分布式系统中ctdb服务的故障处理装置,包括:

状态监控模块,用于监控各节点的本地ctdb服务状态;其中,所述节点包括主节点和从节点;

故障分析模块,用于当所述本地ctdb服务状态出现故障时,按预设规则分析所述故障并生成故障码;

故障解决模块,用于按预存的故障码与解决方案的对应关系,查找与所述故障码对应的解决方案;按所述解决方案解决所述故障。

可选地,还包括:

告警模块,用于将依据所述故障码、所述解决方案以及解决所述故障的过程生成的故障处理日志发送至管理员邮箱。

为解决上述问题,本发明还提供一种分布式系统中ctdb服务的故障处理系统,包括:

存储器,用于存储指令,所述指令包括上述任意一项所述的分布式系统中ctdb服务的故障处理方法的步骤;

处理器,用于执行所述指令。

本发明所提供的分布式系统中ctdb服务的故障处理方法,以节点为单位,设定监控与故障分析规则,监控各个节点的本地ctdb服务状态,当发现故障时按预设规则分析故障、生成故障码,并按照预设的故障码与解决方案的对应关系,查找与故障码对应的解决方案,自行解决故障,形成了一套由分布式系统自行发现ctdb服务的故障并解决故障的方案,使得在分布式系统中ctdb服务出现故障时,不再依赖于管理员的人工监控与解决,从而不仅能够及时地解决ctdb服务的故障,使ctdb服务尽快恢复正常,保证了ctdb服务的高可用性,还大大减轻了管理员的监控工作压力。本发明还提供一种分布式系统中ctdb服务的故障处理装置及系统,具有上述有益效果。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的第一种分布式系统中ctdb服务的故障处理方法的流程图;

图2为本发明实施例提供的第二种分布式系统中ctdb服务的故障处理方法的流程图;

图3为本发明实施例提供的第三种分布式系统中ctdb服务的故障处理方法的流程图;

图4为本发明实施例提供的一种分布式系统中ctdb服务的故障处理装置的示意图;

图5为本发明实施例提供的另一种分布式系统中ctdb服务的故障处理装置的示意图;

图6为本发明实施例提供的一种分布式系统中ctdb服务的故障处理系统的结构示意图。

具体实施方式

本发明的核心是提供一种分布式系统中ctdb服务的故障处理方法、装置及系统,用于及时处理分布式系统中ctdb服务的故障。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的第一种分布式系统中ctdb服务的故障处理方法的流程图。如图1所示,分布式系统中ctdb服务的故障处理方法包括:

s10:监控各节点的本地ctdb服务状态。其中,节点包括主节点和从节点。

在分布式系统中预先选出用于进行ctdb服务故障处理的主节点,该主节点可以为分布式系统中其他应用所选定的主节点,也可以为专为ctdb服务故障处理设定的主节点。主节点的数量可以为一个,用于集中进行ctdb服务故障处理,也可以为多个,可以将从节点进行小组划分,每个小组的ctdb服务故障处理由一个主节点负责。进一步地,分布式系统中ctdb服务的故障处理方法还可以包括:

当主节点发生故障时,在从节点中选举新的主节点代替发生故障的主节点。

主节点的选举方法可以采用分布式系统自带的功能,在此不再赘述。

在具体实施中,可以由各节点自行监控本地ctdb服务状态并进行故障判断,也可以由主节点来监控并判断从节点的ctdb服务状态。在此基础上,监控各节点的本地ctdb服务状态,具体可以包括:

接收各节点的ctdb主进程的心跳信号;

根据心跳信号中携带的状态信息监控本地ctdb服务状态。

具体可以在各节点设置状态监控进程,状态监控进程与的ctdb主进程每间隔预设时间通过心跳信号进行一次状态信息交互,各节点的ctdb主进程的心跳信号中都携带有本地ctdb服务状态信息,状态监控进程通过检查心跳信号中携带的本地ctdb服务状态信息监控本地ctdb服务状态。或者,也可以由各从节点的ctdb主进程与主节点的状态监控进程进行状态信息交互,由主节点的状态监控进程对从节点的ctdb主进程进行监控。

s11:当本地ctdb服务状态出现故障时,按预设规则分析故障并生成故障码。

在具体实施中,预先由管理员制定故障与对应的故障码写入节点的存储。

ctdb服务的故障具体可能包括ctdb数据库丢失、ctdb数据库损坏、ctdb服务进程僵死和ctdb输出故障关键词中的至少一项。因此对应的分析故障的方法具体可以包括三种:检测ctdb数据库的状态,判断ctdb数据库是否丢失,是否损坏等信息;查询ctdb服务当前进程,检测是否有僵死进程;分析ctdb服务的实时输出日志,通过预设的关键词检索日志信息,得到当前故障信息。

可以在节点上设置故障分析进程,当状态监控进程监控到ctdb服务的异常时,激活所在节点或者主节点上的故障分析进程分析ctdb服务故障的具体情况,并由故障分析进程依据事先设置的规则生成故障码。

s12:按预存的故障码与解决方案的对应关系,查找与故障码对应的解决方案。

在具体实施中,由故障分析进程将故障码发送至故障解决进程。预先由管理员制定包含故障码、故障码释义、故障解决方案的表格,并将该表格存入各节点的存储中。管理员可以根据ctdb服务故障的产生频次,定期更新该表格。该表格可以在系统运行过程中被替换,无需停止系统功能。

可以由从节点的故障分析进程生成故障码后,将故障码发送至主节点的故障解决进程,以使主节点的故障解决进程按预存的故障码与解决方案的对应关系,查找与故障码对应的解决方案。也可以由从节点的故障分析进程将故障码发送至本地的故障解决进程,由发生故障的节点自行解决故障。

以上两种解决故障的方式,可以视故障的类型而定,当故障为相互关联的多个节点的ctdb服务故障时,发生故障的各从节点的故障分析进程将故障码发送至主节点的故障解决进程,主节点的故障解决进程将各故障码汇总后统一进行处理。

s13:执行解决方案。

解决方案是管理员预先设定的脚本,故障解决进程执行该脚本解决ctdb服务的故障。

本发明实施例提供的分布式系统中ctdb服务的故障处理方法,以节点为单位,设定监控与故障分析规则,监控各个节点的本地ctdb服务状态,当发现故障时按预设规则分析故障、生成故障码,并按照预设的故障码与解决方案的对应关系,查找与故障码对应的解决方案,自行解决故障,形成了一套由分布式系统自行发现ctdb服务的故障并解决故障的方案,使得在分布式系统中ctdb服务出现故障时,不再依赖于管理员的人工监控与解决,从而不仅能够及时地解决ctdb服务的故障,使ctdb服务尽快恢复正常,保证了ctdb服务的高可用性,还大大减轻了管理员的监控工作压力。

图2为本发明实施例提供的第二种分布式系统中ctdb服务的故障处理方法的流程图。如图2所示,在上述实施例的基础上,在另一实施例中,分布式系统中ctdb服务的故障处理方法还包括:

s20:根据检测、解决故障的过程生成故障处理日志。

s21:将故障处理日志存储于指定位置。

在具体实施中,可以将故障产生的时间、生成的故障码、查找到的与故障码对应的解决方案以及依据执行解决方案解决故障的过程(开始以及结束的时间、操作内容等)等以日志的形式记载下来,并将生成的故障处理日志存储于指定位置,以便管理员查看。

具体可以在状态监控进程监控到故障时,在指定位置创建故障处理日志,依据故障处理的进程更新故障处理日志,直至处理结束或者中断。

图3为本发明实施例提供的第三种分布式系统中ctdb服务的故障处理方法的流程图。如图3所示,在上述实施例的基础上,在另一实施例中,分布式系统中ctdb服务的故障处理方法还包括:

s30:判断在预设时间内故障是否得到解决;如果否,则进入步骤s31。

需要说明的是,步骤s30可以在步骤s11之后执行,也可以在步骤s13之后执行。在实际应用中,可能会出现故障解决进程无法处理的故障,此时需要进行人工处理。

无法解决的故障基本分为两种,一种是历史上未出现过的故障,管理员事先没有写入故障分析进程中,故障分析进程无法判断故障,无法输出故障码;另一种是故障解决进程根据解决方案也无法有效解决故障,使ctdb服务长时间处于故障状态。对于第一种故障,可以由故障分析进程在预设时间内没有分析出故障码时,将故障处理日志发送至管理员邮箱。对于第二种故障,管理员可以设置预设时间,用于故障解决进程判断故障是否是可以解决的,故障解决进程执行解决方案后,定时检查相应的故障是否得到解决,当超出预设时间故障还未解决,认为是不可解决的故障。

s31:将故障处理日志发送至管理员邮箱。

在具体实施中,可以利用linux系统自带的邮箱管理组件来将故障处理日志发送到管理员邮箱。预先设置触发器,当故障分析进程输出故障处理日志后,触发邮件管理组件发送故障处理日志。

发送邮件的命令如下所示:

mail-s“ctdberror”-r“ctdb@abc.com”-a“故障处理日志.txt”administrator@abc.com

其中,ctdberror是该邮件的标题填充位置,ctdb@abc.com是本地发件人的邮箱,故障分析报告.txt是日志分析模块输出的信息文档,作为附件发送至管理员邮箱,administrator@abc.com是管理员的邮箱地址。

本发明实施例提供的分布式系统中ctdb服务的故障处理方法,还包括在故障没有在预设时间内得到解决时将故障处理日志发送至管理员邮箱,以便管理员及时获知ctdb服务的故障信息。

上文详述了分布式系统中ctdb服务的故障处理方法对应的各个实施例,在此基础上,本发明还公开了与上述方法对应的分布式系统中ctdb服务的故障处理装置。

图4为本发明实施例提供的一种分布式系统中ctdb服务的故障处理装置的示意图。如图4所示,分布式系统中ctdb服务的故障处理装置包括:

状态监控模块401,用于监控各节点的本地ctdb服务状态;其中,所述节点包括主节点和从节点;

故障分析模块402,用于当本地ctdb服务状态出现故障时,按预设规则分析故障并生成故障码;

故障解决模块403,用于按预存的故障码与解决方案的对应关系,查找与故障码对应的解决方案;按解决方案解决故障。

图5为本发明实施例提供的另一种分布式系统中ctdb服务的故障处理装置的示意图。如图5所示,在上述实施例的基础上,在另一实施例中,分布式系统中ctdb服务的故障处理装置还包括:

告警模块501,用于将依据故障码、解决方案以及解决故障的过程生成的故障处理日志发送至管理员邮箱。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

上文详述了分布式系统中ctdb服务的故障处理方法及装置对应的各个实施例,在此基础上,本发明还公开了与上述方法及装置对应的分布式系统中ctdb服务的故障处理系统。

图6为本发明实施例提供的一种分布式系统中ctdb服务的故障处理系统的结构示意图。如图6所示,该分布式系统中ctdb服务的故障处理系统可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)610(例如,一个或一个以上处理器)和存储器620,一个或一个以上存储应用程序633或数据632的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器620和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对计算装置中的一系列指令操作。更进一步地,处理器610可以设置为与存储介质630通信,在分布式系统中ctdb服务的故障处理系统600上执行存储介质630中的一系列指令操作。

分布式系统中ctdb服务的故障处理系统600还可以包括一个或一个以上电源640,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口660,和/或,一个或一个以上操作系统631,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述图1至图3所描述的分布式系统中ctdb服务的故障处理方法中的步骤由分布式系统中ctdb服务的故障处理系统基于该图6所示的结构实现。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的分布式系统中ctdb服务的故障处理系统及计算机可读存储介质的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置、系统及计算机可读存储介质,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本发明所提供的一种分布式系统中ctdb服务的故障处理方法、装置及系统进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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