一种基于分布式锁的高可用服务管理方法技术

技术编号:14402175 阅读:308 留言:0更新日期:2017-01-11 14:35
本发明专利技术公开了一种基于分布式锁的高可用服务管理方法,多个smb进程调用分布式系统的接口进行数据的读写,在每个启动smb节点上同时启动ctdb,每个主机分别设置键值对数据库服务器;当ctdb获取共享文件锁时,每个主机分别向各自对应的键值对数据库服务器发起写请求;如果当前主机的键值对数据库中锁状态foo键不存在,则当前主机获取锁成功;否则,表示当前主机获取锁失败;当超过预设数量的主机获取锁成功后,则获取锁成功;否则,认为获取锁失败。在本方案中ctdb不使用smb的后端分布式文件系统存放共享文件锁,所以分布式系统的故障等不会影响ctdb的正常使用;实现了smb的高可用和读写分布式文件系统的解耦合。

【技术实现步骤摘要】

本专利技术涉及高可用服务
,特别是涉及一种基于分布式锁的高可用服务管理方法
技术介绍
随着互联网时代的到来,微博、微信、网购等面向普通互联网用户的网站和应用正在蓬勃兴起,互联网界的巨头公司向数以亿计的用户提供着基于互联网的各种服务。遍布世界各地的互联网用户每天都在网上发布信息,他们产生的这些是个人计算机数据量的数倍。互联网公司通常采用高性能服务器来存储这些数据。但是普通的存储系统已经无法支撑越来越多的用户数据,而且断电、灾害和系统故障使得数据的安全性很难保证。为了随时应对激增的用户请求,越来多的公司采用分布式存储系统,尤其是视频行业。分布式存储系统具有高可靠性、高可用性和高扩展性,可以避免由于单个节点失效而使整个系统崩溃的危险,可以将分布在各处的资源综合利用,同时可以将负载由单个节点转移到多个,从而提高了存储系统的性能。smb软件调用分布式文件系统的接口并通过标准samba协议映射出远端的分布式文件系统。windows用户只需要挂载到本地,即可读写文件。在每个启动smb的节点上同时启动ctdb。多个ctdb组成一个master/slave类型的集群,从而可以实现smb进程高可用。每个启动smb进程的节点要启动ctdb进程。多个ctdb进程组成一个ctdb集群,用来实现smb的高可用。多个ctdb进程中有一个为master,其他为slave,masterctdb负责虚拟ip的分配、smb进程的启动等。多个ctdb进程为了实现协同,需要有一种方式实现角色的一致性。在传统方案中,ctdb的角色是通过获取分布式文件系统的锁文件来选举得到的。当有ctdb启动或者关闭时,所有的ctdb都会通过fcntl调用获取锁。如果分布式文件系统出现故障或者读写压力较大,ctdb获取锁会延迟较高甚至获取失败,这会严重影响smb进程的高可用性。
技术实现思路
本专利技术的目的是提供一种基于分布式锁的高可用服务管理方法,目的在于解决现有技术中ctdb获取锁过程延迟较多,且容易因获取失败而严重影响smb进程的高可用性的问题。为解决上述技术问题,本专利技术提供一种基于分布式锁的高可用服务管理方法,包括:多个smb进程调用分布式系统的接口进行数据的读写,在每个启动smb节点上同时启动ctdb,每个主机分别设置键值对数据库服务器;当ctdb获取共享文件锁时,每个主机分别向各自对应的键值对数据库服务器发起写请求;如果当前主机的键值对数据库中锁状态foo键不存在,则当前主机获取锁成功;否则,表示所述当前主机获取锁失败;当超过预设数量的主机获取锁成功后,则获取锁成功;否则,认为获取锁失败。可选地,在当前主机获取锁成功之后还包括:将当前时刻写入所述键值对数据库的value中。可选地,所述主机的数量为不少于3的奇数,所述预设数量大于所述主机的数量的一半。可选地,所述认为获取锁失败包括:重复获取的操作,直至失败次数达到预设次数后,认为获取锁失败。可选地,所述预设次数为3次。可选地,在获取锁成功之后还包括:当超过预设时间阈值后,锁状态过期,删除所述主机的键值对数据库服务器中key为foo的键值。可选地,所述预设时间阈值为3秒。本专利技术所提供的基于分布式锁的高可用服务管理方法,多个smb进程调用分布式系统的接口进行数据的读写,在每个启动smb节点上同时启动ctdb,每个主机分别设置键值对数据库服务器;当ctdb获取共享文件锁时,每个主机分别向各自对应的键值对数据库服务器发起写请求;如果当前主机的键值对数据库中锁状态foo键不存在,则当前主机获取锁成功;否则,表示当前主机获取锁失败;当超过预设数量的主机获取锁成功后,则获取锁成功;否则,认为获取锁失败。因为在本方案中ctdb不使用smb的后端分布式文件系统存放共享文件锁,所以分布式系统的故障等不会影响ctdb的正常使用;实现了smb的高可用和读写分布式文件系统的解耦合。本申请搭建简单,部署方便,适合切换不频繁的master/slave的分布式服务。附图说明为了更清楚的说明本专利技术实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术所提供的基于分布式锁的高可用服务管理方法的一种具体实施方式的流程图;图2为ctdb管理smb进程的示意图;图3为ctdb使用redis分布式锁的示意图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面结合附图和具体实施方式对本专利技术作进一步的详细说明。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术所提供的基于分布式锁的高可用服务管理方法的一种具体实施方式的流程图如图1所示,该方法包括:步骤S101:多个smb进程调用分布式系统的接口进行数据的读写,在每个启动smb节点上同时启动ctdb,每个主机分别设置键值对数据库服务器;步骤S102:当ctdb获取共享文件锁时,每个主机分别向各自对应的键值对数据库服务器发起写请求;步骤S103:如果当前主机的键值对数据库中锁状态foo键不存在,则当前主机获取锁成功;否则,表示所述当前主机获取锁失败;步骤S104:当超过预设数量的主机获取锁成功后,则获取锁成功;否则,认为获取锁失败。本专利技术所提供的基于分布式锁的高可用服务管理方法,多个smb进程调用分布式系统的接口进行数据的读写,在每个启动smb节点上同时启动ctdb,每个主机分别设置键值对数据库服务器;当ctdb获取共享文件锁时,每个主机分别向各自对应的键值对数据库服务器发起写请求;如果当前主机的键值对数据库中锁状态foo键不存在,则当前主机获取锁成功;否则,表示当前主机获取锁失败;当超过预设数量的主机获取锁成功后,则获取锁成功;否则,认为获取锁失败。因为在本方案中ctdb不使用smb的后端分布式文件系统存放共享文件锁,所以分布式系统的故障等不会影响ctdb的正常使用;实现了smb的高可用和读写分布式文件系统的解耦合。本申请搭建简单,部署方便,适合切换不频繁的master/slave的分布式服务。在上述实施例的基础上,本专利技术所提供的基于分布式锁的高可用服务管理方法中,在当前主机获取锁成功之后还包括:将当前时刻写入所述键值对数据库的value中。进一步地,主机的数量为不少于3的奇数,所述预设数量大于所述主机的数量的一半。主机的数量可根据实际需求进行设置,这均不影响本专利技术的实现。在此次认为获取锁失败后,重复获取的操作,直至失败次数达到预设次数后,认为获取锁失败。所述预设次数可以具体为3次。当然其他次数也可,并不限于3次。在上述任一实施例的基础上,为防止出现死锁,本专利技术实施例还可以进一步包括:当超过预设时间阈值后,锁状态过期,删除所述主机的键值对数据库服务器中key为foo的键值。其中,预设时间阈值可以为3秒。本专利技术实施例中主机数量以3个为例,对其具体工作过程进行进一步详细阐述。如图2ctdb管理smb进程的示意图所示,ctdb使用的共享文件锁保存在分布式文本文档来自技高网
...
一种基于分布式锁的高可用服务管理方法

【技术保护点】
一种基于分布式锁的高可用服务管理方法,其特征在于,包括:多个smb进程调用分布式系统的接口进行数据的读写,在每个启动smb节点上同时启动ctdb,每个主机分别设置键值对数据库服务器;当ctdb获取共享文件锁时,每个主机分别向各自对应的键值对数据库服务器发起写请求;如果当前主机的键值对数据库中锁状态foo键不存在,则当前主机获取锁成功;否则,表示所述当前主机获取锁失败;当超过预设数量的主机获取锁成功后,则获取锁成功;否则,认为获取锁失败。

【技术特征摘要】
1.一种基于分布式锁的高可用服务管理方法,其特征在于,包括:多个smb进程调用分布式系统的接口进行数据的读写,在每个启动smb节点上同时启动ctdb,每个主机分别设置键值对数据库服务器;当ctdb获取共享文件锁时,每个主机分别向各自对应的键值对数据库服务器发起写请求;如果当前主机的键值对数据库中锁状态foo键不存在,则当前主机获取锁成功;否则,表示所述当前主机获取锁失败;当超过预设数量的主机获取锁成功后,则获取锁成功;否则,认为获取锁失败。2.如权利要求1所述的基于分布式锁的高可用服务管理方法,其特征在于,在当前主机获取锁成功之后还包括:将当前时刻写入所述键值对数据库的value中。3.如权利要求2所述的基于分布式锁的...

【专利技术属性】
技术研发人员:毕敬强
申请(专利权)人:浪潮北京电子信息产业有限公司
类型:发明
国别省市:北京;11

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

1