分布式系统中锁服务器故障的处理方法及其系统技术方案

技术编号:13377854 阅读:69 留言:0更新日期:2016-07-21 04:09
一种分布式系统中锁服务器故障处理方法,分布式系统中包括m个锁服务器,每个锁服务器本地存储有同一锁服务器接管关系信息,m为大于2的自然数。分布式系统中未发生故障的锁服务器接收第一通知消息,所述第一通知消息中携带第一锁服务器发生故障的信息;第二锁服务器接收到第一通知消息后根据本地存储的锁服务器接管关系信息,确定自己是第一锁服务器的接管锁服务器,进入静默状态;第三锁服务器接收到第一通知消息后根据本地存储的锁服务器接管关系信息,确定自己不是第一锁服务器的接管锁服务器;第三锁服务器接收到加锁请求后,根据加锁请求分配锁权限信息。本发明专利技术可以把锁服务器发生故障所影响的范围减小到最小,提高分布式系统的稳定性。

【技术实现步骤摘要】
【国外来华专利技术】分布式系统中锁服务器故障的处理方法及其系统
本专利技术涉及存储技术,尤其是涉及一种分布式系统中的锁服务器(master)故障的处理方法及其系统。
技术介绍
NAS(NetworkAttackedStorage,网络附属存储)系统以其简单、高效和易管理等特点,广泛应用于企业文件分布式系统中的共享,其典型组网附图1所示。在NAS系统中,同一文件可以接收不同的应用主机发送的读写请求,为了避免读写冲突,当一个文件接收到某个应用主机的读写请求时,节点设备中的锁服务器需要把当前文件加锁(锁权限),用于实现共享资源的并发互斥访问。当读写操作结束后,释放该文件。锁权限信息与应用主机之间的对应关系,可以存储在各节点中,也可以存储在一个共享存储中。共享存储独立于各节点,且各节点均可访问,在附图1中未示出。近来,伴随虚拟化技术的发展,VDI(VirtualDesktopInfrastructure,虚拟桌面基础架构)、Oracle数据库和SQLServer(StructuredQueryLanguage,结构化查询语言)数据库平台等应用也开始部署到分布式系统中,从而对分布式系统的可靠性提出更高的要求。当分布式系统中的某个节点设备发生故障后,NAS系统会采用节点设备IPFailover(IP漂移)的方式,将发生故障的节点设备的IP地址配置到其他的节点设备上,增强NAS系统的可靠性。这些切换对各应用主机来讲是透明,即各应用主机感知不到NAS系统中各节点设备的IP漂移,从而减少对应用主机中各应用的影响。NFS(NetworkFileSystem,网络文件系统)V3是目前应用最久、最多的协议版本,但是由于该协议在锁的定义方面不完善,依赖于另外的辅助协议NLM(NetworkLockManager,网络锁管理器)和NSM(NetworkStateManager,网络状态管理器),导致NFSV3在锁恢复流程复杂。如附图1所示,当节点设备1故障后,节点设备1的IP地址漂移到节点设备2,即将节点设备1的IP地址配置到节点设备2。IP漂移对应用主机1来讲是透明的,也就是说应用主机1并不知道节点设备之间发生的变化。在一些协议的设计方案中,例如NFS协议和SMB(ServerMessageBlock,服务器信息块)协议,为了加速应用主机的访问效率,故障节点设备的IP地址漂移到新的节点设备之后,应用主机可以通过锁重申(Reclaim)请求来重新申请所述应用主机中的应用已经获取的文件的锁权限。这样分布式系统中的锁服务器需要安全地对锁请求进行控制,例如锁重申请求或加锁请求,否则可能会由于权限控制不当导致多个应用主机得到的数据不一致,甚至多个应用主机同时读写数据时造成系统崩溃的问题。这样,当分布式系统中的某一节点设备发生故障时,例如节点设备中锁服务器发生故障时,分布式系统中的所述锁服务器全部静默,即,节点设备中的锁服务器进入静默状态。这样,当节点设备中的协议服务器接收到锁重申请求时,根据锁重申请求中携带的信息或者存储的锁权限把锁重申请求发送给对应的锁服务器处理;当协议服务器接收到加锁请求时,直接向请求方回复拒绝的响应消息。加锁请求是应用主机中的应用向锁服务器申请文件的新的锁权限。也就是说,在节点设备中的锁服务器为静默状态时,分布式系统只能处理锁重申请求,不能处理加锁请求这样,虽然分布式系统中只是一个锁服务器发生故障,但是由于将所述锁服务器都静默了,这样就使局部问题变成了全局问题,并且不能处理正常的加锁请求,可能引起业务中断从而降低了分布式系统的可靠性。
技术实现思路
本专利技术实施例提出一种分布式系统中一种锁服务器故障的处理方法及其系统,以解决现有技术中一个锁服务器发生故障时将所有锁服务器静默无法处理加锁请求从而降低分布式系统可靠性的问题。第一方面,本专利技术实施例提出的一种分布式系统中锁服务器故障的处理方法,所述分布式系统中包括至少三个锁服务器,其中,每个锁服务器中存储有同一锁服务器接管关系信息,包括步骤:所述分布式系统中未发生故障的锁服务器接收第一通知消息,所述第一通知消息中携带所述分布式系统中的第一锁服务器发生故障的信息;所述分布式系统中的第二锁服务器接收到所述第一通知消息后,根据本地存储的锁服务器接管关系信息确定自己为所述第一锁服务器的接管锁服务器,所述接管锁服务器进入静默状态;所述分布式系统中的第三锁服务器接收到所述第一通知消息后,根据本地存储的锁服务器接管关系信息,确定自己不是所述第一锁服务器的接管锁服务器;确定为非接管锁服务器的第三锁服务器接收到加锁请求时,根据所述加锁请求分配锁权限信息。结合第一方面,在第一方面的第一种可能的实现方式中,所述接管锁服务器接收到锁重申请求时,根据锁权限信息表返回对应的锁权限信息;所述接管锁服务器接收到加锁请求时,返回拒绝的响应消息。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述分布式系统中还包括至少三个协议服务器和相应的锁代理,所述协议服务器和相应的锁代理位于同一节点设备中,所述方法还包括:当所述协议服务器接收到锁请求后,将所述锁请求发送给的相应的锁代理,所述锁请求为锁重申请求或加锁请求。结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述每个锁代理本地存储有所述锁服务器接管关系信息和锁服务器管理范围信息,所述方法还包括:所述锁代理接收到锁请求后,根据本地存储的锁服务器管理范围信息确定处理所述锁请求的锁服务器;若所述锁服务器管理范围信息中确定出的处理所述锁请求的锁服务器标识为故障状态,所述锁代理根据本地存储的锁服务器接管关系信息确定所述故障状态的锁服务器的接管锁服务器;将接收到的锁请求发送给所述接管锁服务器。结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述锁服务器接管关系信息通过一致性哈希环来确定,所述第三锁服务器根据本地存储的锁服务器接管关系信息确定自己不是所述第一锁服务器的接管锁服务器具体为:所述第三锁服务器按照本地存储的一致性哈希环的顺时针方向或者逆时针方向确定自己不是所述第一锁服务器的接管锁服务器。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述每个锁代理本地存储有所述锁服务器接管关系信息和锁服务器管理范围信息,所述锁服务器管理范围信息和所述锁服务器接管关系信息通过所述一致性哈希环来确定;所述锁代理接收到锁请求后,按照本地存储的一致性哈希环的顺时针方向或者逆时针方向确定处理所述锁请求的锁服务器;若所述本地存储的一致性哈希环中的所述处理所述锁请求的锁服务器标识为故障状态;所述锁代理按照本地存储的一致性哈希环的同样的方向确定所述处理所述锁请求的锁服务器的接管锁服务器。第二方面,本专利技术实施例提出的一种实现锁服务器故障处理的分布式系统,包括:至少三个锁服务器,所述每个锁服务器中存储有同一锁服务器接管关系信息;所述至少三个锁服务器中未发生故障的锁服务器用于接收第一通知消息,所述第一通知消息中携带第一锁服务器发生故障的信息;第二锁服务器用于根据本地存储的锁服务器接管关系信息确定自己为所述第一锁服务器的接管锁服务器,所述接管锁服务器进入静默状态;第三锁服务器用于根据本地存储的锁服务器接管关系信息,确定自己不本文档来自技高网
...
分布式系统中锁服务器故障的处理方法及其系统

【技术保护点】
PCT国内申请,权利要求书已公开。

【技术特征摘要】
【国外来华专利技术】1.一种分布式系统中锁服务器故障处理方法,其特征在于,所述分布式系统中包括至少三个锁服务器,其中,每个锁服务器中存储有同一锁服务器接管关系信息,所述方法包括:所述分布式系统中未发生故障的锁服务器接收第一通知消息,所述第一通知消息中携带所述分布式系统中的第一锁服务器发生故障的信息;所述分布式系统中的第二锁服务器接收到所述第一通知消息后,根据本地存储的锁服务器接管关系信息确定自己为所述第一锁服务器的接管锁服务器,所述接管锁服务器进入静默状态;所述分布式系统中的第三锁服务器接收到所述第一通知消息后,根据本地存储的锁服务器接管关系信息,确定自己不是所述第一锁服务器的接管锁服务器;所述第三锁服务器接收到加锁请求时,根据所述加锁请求分配锁权限信息。2.根据权利要求1所述的方法,其特征在于,还包括:所述接管锁服务器接收到锁重申请求时,根据锁权限信息表返回对应的锁权限信息;所述接管锁服务器接收到加锁请求时,返回拒绝的响应消息。3.根据权利要求1或2所述的方法,其特征在于,所述分布式系统中还包括至少三个协议服务器和相应的锁代理,所述协议服务器和相应的锁代理位于同一节点设备中,所述方法还包括:当所述协议服务器接收到锁请求后,将所述锁请求发送给的相应的锁代理,所述锁请求为锁重申请求或加锁请求。4.根据权利要求3所述的方法,其特征在于,所述每个锁代理本地存储有所述锁服务器接管关系信息和锁服务器管理范围信息,所述方法还包括:所述锁代理接收到锁请求后,根据本地存储的锁服务器管理范围信息确定处理所述锁请求的锁服务器;若所述锁服务器管理范围信息中确定出的处理所述锁请求的锁服务器标识为故障状态,所述锁代理根据本地存储的锁服务器接管关系信息确定所述故障状态的锁服务器的接管锁服务器;将接收到的锁请求发送给所述接管锁服务器。5.根据权利要求3所述的方法,其特征在于,所述锁服务器接管关系信息通过一致性哈希环来确定,所述第三锁服务器根据本地存储的锁服务器接管关系信息确定自己不是所述第一锁服务器的接管锁服务器具体为:所述第三锁服务器按照本地存储的一致性哈希环的顺时针方向或者逆时针方向确定自己不是所述第一锁服务器的接管锁服务器。6.根据权利要求5所述的方法,其特征在于,所述未发生故障的锁服务器接收到第一通知消息之后,所述方法还包括:所述未发生故障的锁服务器将本地存储的一致性哈希环中的所述第一锁服务器标识为故障状态;到达预定的时间后,更新本地存储的所述一致性哈希环,所述更新后的一致性哈希环中不包括所述第一锁服务器。7.根据权利要求5-6任一所述的方法,其特征在于,所述每个锁代理本地存储有所述锁服务器接管关系信息和锁服务器管理范围信息,所述锁服务器管理范围信息和所述锁服务器接管关系信息通过所述一致性哈希环来确定;所述锁代理接收到锁请求后,按照本地存储的一致性哈希环的顺时针方向或者逆时针方向确定处理所述锁请求的锁服务器;若所述本地存储的一致性哈希环中的所述处理所述锁请求的锁服务器标识为故障状态;所述锁代理按照本地存储的一致性哈希环的同样的方向确定所述处理所述锁请求的锁服务器的接管锁服务器。8.根据权利要求7所述的方法,其特征在于,还包括:所述锁代理接收所述第一通知消息;所述锁代理将本地存储的一致性哈希环中的所述第一锁服务器标识为故障状态;到达预定的时间后,更新本地存储的一致性哈希环,所述更新后的一致性哈希环中不包括所述第一锁服务器。9.根据权利要求7所述的方法,其特征在于,还包括:所述未发生故障的锁服务器接收第二通知消息,更新本地存储的一致性哈希环,所述更新后的一致性哈希环中不包括所述第一锁服务器,其中所述第二通知消息用于通知锁服务器更新本地存储的一致性哈希环,所述第二通知消息中携带所述第一锁服务器的信息;所述锁代理接收第二通知消息,更新本地存储的一致性哈希环,所述更新后的一致性哈希环中不包括所述第一锁服务器。10.根据权利要求7所述的方法,其特征在于,还包括:所述未发生故障的锁服务器接收第三通知消息,更新本地存储的一致性哈希环,更新后的一致性哈希环中包含了新加入的锁服务器;其中所述第三通知消息用于通知锁服务器更新本地存储的一致性哈希环,所述第三通知消息中携带新加入的锁服务器的信息;所述锁代理接收所述第三通知消息;更新本地存储的一致性哈希环,更新后的一致性哈希环中包含了新加入的锁服务器。11.一种实现锁服务器故障处理的分布式系统,其特征在于,包括至少三个锁服务器,每个锁服务器中存储有同一锁服务器接管关系信息;所述至少三个锁服务器中未发生故障的锁服务器用于接收第一通知消息,所述第一通知消息中携带第一锁服务器发生故障的信息;第二锁服务器用于根据本地存储的锁服务器接管关系信息确定自己为所述第一锁服务器的接管锁服务器,所述接管锁服务器进入静默状态;第三锁服务器用于根据本地存储的锁服务器接管关系信息,确定自己不是所述第一锁服务器的接管锁服务器;所述第三锁服务器用于接收到加锁请求后,根据所述加锁请求分配锁权限信息。12.根据权利要求11所述的系统,其特征在于,还包括,所述接管锁服务器用于:接收到锁重申请求时,根据锁权限信息表返回对应的锁权限信息;接收到加锁请求时,返回拒绝的响应消息。13.根据权利要求11或12所述的系统,其特征在于,所述分布式系统中还包括至少三个协议服务器和锁代理,其中,所述协议服务器和对应的锁代理位于一个节点设备中,所述系统还包括:所述协议服务器用于接收到锁请求后,将所述锁请求发送给对应的锁代理,所述锁请求为锁重申请求或加锁请求。14.根据权利要求13所述的系统,其特征在于,所述每个锁代理中存储有所述锁服务器接管关系信息和锁服务器管理范围信息,所述系统还包括:所述锁代理用于接收到锁请求后,根据本地存储的锁服务器管理范围信息确定处理所述锁请求的锁服务器;若所述锁服务器管理范围信息中的处理所述锁请求的锁服务器标识为故障状态,所述锁代理还用于根据本地存储的锁服务器接管关系信息确定所述处理所述锁请求的锁服务器的接管锁服务器;并将接收到的锁请求发送给所述处理所述锁请求的锁服务器的接管锁服务器。15.根据权利要求13所述的系统,其特征在于,所述锁服务器接管关系信息通过一致性哈希环来确定,所述第三锁服务器还用于按照本地存储的一致性哈希环的顺时针方向或者逆时针方向,确定自己不是所述第一锁服务器的接管锁服务器。16.根据权利要求15所述的系统,其特征在于,还包括:所述未发生故障的锁服务器还用于在接收到第一通知消息之后,将本地存储的一致性哈希环中的所述第一锁服务器标识为故障状态;并在到达预定的时间后,更新本地存储的一致性哈希环,所述更新后的一致性哈希环中不包括所述第一锁服务器。17.根据权利要求15所述的系统,其特征在于,所述每个锁代理中存储有所述锁服务器接管关系信息和锁服务器管理范围信息,所述锁服务器管理范围信息和所述锁服务器接管关系信息通过所述一致性哈希环来确定;所述锁代理还用于接收到锁请求后,按照本地存储的一致性哈希环的顺时针方向或者逆时针方...

【专利技术属性】
技术研发人员:冯锐刘军向光友
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1