本发明涉及分布式存储系统技术领域,具体涉及一种分布式存储系统故障切换方法、系统、终端及存储介质。
背景技术:
在一套分布式存储系统中,包含多个物理节点,共同组成分布式存储集群,对外提供存储服务。用户如果想要使用分布式存储系统存储数据,需要知道存储系统中任意一个节点的ip,通过访问这个ip即可使用对应的存储协议访问存储。由于是存储系统分布式的特性,所以客户端访问集群中任意一个存储节点,均能够获得完全一致的内容。分布式存储系统还具有高可用的特性,即允许若干个节点同时发生故障,只要不超过故障域,存储系统中剩余的存储节点仍然能够正常提供服务。但是,如果客户端访问的是存储集群中某个节点的物理ip,该节点发生故障后,显然这个节点的ip也会不通,所以客户端无法再通过这个ip继续访问存储集群,只能换用另一个没有发生故障的节点的ip继续访问存储集群。如果这个ip的切换过程需要手动完成,显然分布式存储系统高可用的特性会大打折扣。所以就需要设计一种故障自动切换系统,当某个存储节点发生故障时,原本连接这个节点的客户端能够自动将连接的ip切换到另外一个正常的存储节点上。
现有的故障自动切换方法是使用虚拟ip自动漂移的方法。即在每个存储节点都额外配置一个虚拟ip,客户端使用节点的虚拟ip而不是物理ip来访问存储节点。集群存储节点间运行着监控程序,一旦监控到某个节点发生故障,则会将原先在这个节点上的虚拟ip漂移到其他正常的节点上,从而使客户端仍然能够通过这个ip继续访问存储集群。
该现有技术仍然使用ip地址的访问方式,不够灵活。随着目前分布式存储集群规模越来越大,一个存储集群可能就有上百个存储节点,每个节点都创建新的虚拟ip,则就会产生上百个ip。客户想要访问存储系统的话,就必须记住这上百个ip,这显然是不方便的。如果客户只用其中一个ip的话,就会造成负载不均衡的现象,压力全都在这个ip所在的节点上,不能发挥出存储系统的最大效能。另外,随着ip资源越来越紧张,这些多余的虚拟ip也会占用客户的ip地址,造成不必要的浪费和维护成本。
技术实现要素:
针对现有技术的上述不足,本发明提供一种分布式存储系统故障切换方法、系统、终端及存储介质,以解决上述技术问题。
第一方面,本发明提供一种分布式存储系统故障切换方法,包括:
在分布式存储系统的域名系统服务器上为所述分布式存储系统创建域名;
将所述分布式存储系统的物理节点ip绑定至所述域名;
获取所述分布式存储系统的物理节点状态;
在接收到客户端请求后,将处于正常状态的物理节点的ip返回至发送请求的客户端。
进一步的,所述获取所述分布式存储系统的物理节点状态,包括:
预先将所述分布式存储系统的所有物理节点ip保存至ip列表;
向所述分布式存储系统的所有物理节点发送建立通信连接请求;
判断是否与接收所述通信连接请求的物理节点建立通信连接:
若是,则判定所述物理节点处于正常状态;
若否,则判定所述物理节点ip处于异常状态。
进一步的,所述方法还包括:
对物理节点ip进行状态标记;
设置物理节点状态刷新间隔时间;
根据所述间隔时间定期获取所述分布式存储系统的物理节点状态,并根据获取结果对各物理节点ip进行状态标记更新。
进一步的,所述在接收到客户端请求后,将处于正常状态的物理节点的ip返回至发送请求的客户端,包括:
预先设置物理节点轮询顺序;
根据所述轮询顺序对处于正常状态的物理节点ip进行排序,得到执行顺序;
根据前次向客户端返回的物理节点ip和所述执行顺序,得到目标物理节点ip;
将所述目标物理节点ip返回至发送请求的客户端。
第二方面,本发明提供一种分布式存储系统故障切换系统,包括:
域名创建单元,配置用于在分布式存储系统的域名系统服务器上为所述分布式存储系统创建域名;
域名绑定单元,配置用于将所述分布式存储系统的物理节点ip绑定至所述域名;
状态获取单元,配置用于获取所述分布式存储系统的物理节点状态;
地址返回单元,配置用于在接收到客户端请求后,将处于正常状态的物理节点的ip返回至发送请求的客户端。
进一步的,所述状态获取单元包括:
列表保存模块,配置用于预先将所述分布式存储系统的所有物理节点ip保存至ip列表;
通信请求模块,配置用于向所述分布式存储系统的所有物理节点发送建立通信连接请求;
连接判断模块,配置用于判断是否与接收所述通信连接请求的物理节点建立通信连接;
正常判定模块,配置用于若与接收所述通信连接请求的物理节点建立通信连接,则判定所述物理节点处于正常状态;
异常判定模块,配置用于若未与接收所述通信连接请求的物理节点建立通信连接,则判定所述物理节点ip处于异常状态。
进一步的,所述系统还包括:
状态标记模块,配置用于对物理节点ip进行状态标记;
时间设置模块,配置用于设置物理节点状态刷新间隔时间;
状态更新模块,配置用于根据所述间隔时间定期获取所述分布式存储系统的物理节点状态,并根据获取结果对各物理节点ip进行状态标记更新。
进一步的,所述地址返回单元包括:
顺序设置模块,配置用于预先设置物理节点轮询顺序;
顺序生成模块,配置用于根据所述轮询顺序对处于正常状态的物理节点ip进行排序,得到执行顺序;
目标锁定模块,配置用于根据前次向客户端返回的物理节点ip和所述执行顺序,得到目标物理节点ip;
目标下发模块,配置用于将所述目标物理节点ip返回至发送请求的客户端。
第三方面,提供一种终端,包括:
处理器、存储器,其中,
该存储器用于存储计算机程序,
该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。
第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本发明的有益效果在于,
本发明提供的分布式存储系统故障切换方法、系统、终端及存储介质,通过增设域名系统服务器,为分布式存储系统创建域名,从而实现对分布式存储系统的物理节点的有效管控,及时发现故障节点,从而实现故障切换。本发明增加了分布式存储系统的可用性,在向客户端分配物理节点时实现了客户端连接分布式存储系统时的负载均衡,能够使不同客户端的压力均匀的分布在不同的存储节点上,且不需要配置额外的虚拟ip,不占用客户的ip资源。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的系统的示意性框图。
图3为本发明实施例提供的一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
下面对本发明中出现的关键术语进行解释。
英文缩写:dns
英文全称:domainnamesystem
中文全称:域名系统
图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种分布式存储系统故障切换系统。
如图1所示,该方法包括:
步骤110,在分布式存储系统的域名系统服务器上为所述分布式存储系统创建域名;
步骤120,将所述分布式存储系统的物理节点ip绑定至所述域名;
步骤130,获取所述分布式存储系统的物理节点状态;
步骤140,在接收到客户端请求后,将处于正常状态的物理节点的ip返回至发送请求的客户端。
具体的,所述分布式存储系统故障切换方法包括:
s1、在分布式存储系统的域名系统服务器上为所述分布式存储系统创建域名。
正确部署分布式存储系统集群,如部署一个三节点,三副本冗余策略的存储集群,对外提供基于s3协议的对象存储服务。这三个节点的物理ip分别是100.1.1.1、100.1.1.2、100.1.1.3。
正确部署本发明所述的dns域名解析服务器,假设该dns服务器的地址是100.2.1.1。然后在该服务器上创建一个域名www.object.com。
s2、将所述分布式存储系统的物理节点ip绑定至所述域名。
将存储系统三个节点的物理ip100.1.1.1、100.1.1.2、100.1.1.3,绑定至域名www.object.com。
s3、获取所述分布式存储系统的物理节点状态。
预先将分布式存储系统的所有物理节点ip保存至ip列表。向分布式存储系统的三个物理节点发送建立通信连接请求,判断是否与接收所述通信连接请求的物理节点建立通信连接,即是否与三个物理节点均建立通信连接,若是,则判定所有物理节点均处于正常状态;若存在未建立通信连接的物理节点,则判定该物理节点ip处于异常状态。例如,存储节点100.1.1.1发生了故障宕机。则dns服务器的节点ip状态检测机制会检测到该ip无法连通,故将该ip标记为异常。
在本地对各物理节点进行状态标记(正常或异常),此外需要实时更新各物理节点,即每隔2s获取一次各物理节点的状态,然后根据获取的状态结果更新各物理节点的状态标记。
s4、在接收到客户端请求后,将处于正常状态的物理节点的ip返回至发送请求的客户端。
将客户端的dns地址设置为100.2.1.1。然后在客户端通过www.object.com向存储发送一个上传对象的请求,首先客户端会向dns服务器100.2.1.1申请解析域名www.object.com。由于此时三个节点都是正常的,所以dns服务器向客户端返回了其中一个节点的ip100.1.1.1。客户端收到解析结果后,使用100.1.1.1与存储进行通信并且成功上传了对象。然后客户端又通过www.object.com向存储发送了一个上传对象的请求,此时dns服务器依据轮询策略,返回了ip100.1.1.2。接下来的请求也是如此。
如果此时存储节点100.1.1.1发生了故障宕机。则dns服务器的节点ip状态检测机制会检测到该ip无法连通,故将该ip标记为异常。客户端继续向dns服务器发出域名解析请求时,dns服务器只会将剩余的两个正常的节点100.1.1.2、100.1.1.3的ip返回给客户端。所以客户端能够正常将链路切换到没有发生故障的节点上进行。如果此时存储节点100.1.1.1的故障又恢复了,则dns服务器会将该节点ip再次标记为正常。域名解析时也会返回该节点的ip。从而实现了故障时的自动切换,正常时的负责均衡。
如图2所示,该系统200包括:
域名创建单元210,配置用于在分布式存储系统的域名系统服务器上为所述分布式存储系统创建域名;
域名绑定单元220,配置用于将所述分布式存储系统的物理节点ip绑定至所述域名;
状态获取单元230,配置用于获取所述分布式存储系统的物理节点状态;
地址返回单元240,配置用于在接收到客户端请求后,将处于正常状态的物理节点的ip返回至发送请求的客户端。
可选地,作为本发明一个实施例,所述状态获取单元包括:
列表保存模块,配置用于预先将所述分布式存储系统的所有物理节点ip保存至ip列表;
通信请求模块,配置用于向所述分布式存储系统的所有物理节点发送建立通信连接请求;
连接判断模块,配置用于判断是否与接收所述通信连接请求的物理节点建立通信连接;
正常判定模块,配置用于若与接收所述通信连接请求的物理节点建立通信连接,则判定所述物理节点处于正常状态;
异常判定模块,配置用于若未与接收所述通信连接请求的物理节点建立通信连接,则判定所述物理节点ip处于异常状态。
可选地,作为本发明一个实施例,所述系统还包括:
状态标记模块,配置用于对物理节点ip进行状态标记;
时间设置模块,配置用于设置物理节点状态刷新间隔时间;
状态更新模块,配置用于根据所述间隔时间定期获取所述分布式存储系统的物理节点状态,并根据获取结果对各物理节点ip进行状态标记更新。
可选地,作为本发明一个实施例,所述地址返回单元包括:
顺序设置模块,配置用于预先设置物理节点轮询顺序;
顺序生成模块,配置用于根据所述轮询顺序对处于正常状态的物理节点ip进行排序,得到执行顺序;
目标锁定模块,配置用于根据前次向客户端返回的物理节点ip和所述执行顺序,得到目标物理节点ip;
目标下发模块,配置用于将所述目标物理节点ip返回至发送请求的客户端。
图3为本发明实施例提供的一种终端300的结构示意图,该终端300可以用于执行本发明实施例提供的分布式存储系统故障切换方法。
其中,该终端300可以包括:处理器310、存储器320及通信单元330。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,该存储器320可以用于存储处理器310的执行指令,存储器320可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器320中的执行指令由处理器310执行时,使得终端300能够执行以下上述方法实施例中的部分或全部步骤。
处理器310为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integratedcircuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器310可以仅包括中央处理器(centralprocessingunit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。
通信单元330,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。
因此,本发明通过增设域名系统服务器,为分布式存储系统创建域名,从而实现对分布式存储系统的物理节点的有效管控,及时发现故障节点,从而实现故障切换。本发明增加了分布式存储系统的可用性,在向客户端分配物理节点时实现了客户端连接分布式存储系统时的负载均衡,能够使不同客户端的压力均匀的分布在不同的存储节点上,且不需要配置额外的虚拟ip,不占用客户的ip资源,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
1.一种分布式存储系统故障切换方法,其特征在于,包括:
在分布式存储系统的域名系统服务器上为所述分布式存储系统创建域名;
将所述分布式存储系统的物理节点ip绑定至所述域名;
获取所述分布式存储系统的物理节点状态;
在接收到客户端请求后,将处于正常状态的物理节点的ip返回至发送请求的客户端。
2.根据权利要求1所述的方法,其特征在于,所述获取所述分布式存储系统的物理节点状态,包括:
预先将所述分布式存储系统的所有物理节点ip保存至ip列表;
向所述分布式存储系统的所有物理节点发送建立通信连接请求;
判断是否与接收所述通信连接请求的物理节点建立通信连接:
若是,则判定所述物理节点处于正常状态;
若否,则判定所述物理节点ip处于异常状态。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对物理节点ip进行状态标记;
设置物理节点状态刷新间隔时间;
根据所述间隔时间定期获取所述分布式存储系统的物理节点状态,并根据获取结果对各物理节点ip进行状态标记更新。
4.根据权利要求1所述的方法,其特征在于,所述在接收到客户端请求后,将处于正常状态的物理节点的ip返回至发送请求的客户端,包括:
预先设置物理节点轮询顺序;
根据所述轮询顺序对处于正常状态的物理节点ip进行排序,得到执行顺序;
根据前次向客户端返回的物理节点ip和所述执行顺序,得到目标物理节点ip;
将所述目标物理节点ip返回至发送请求的客户端。
5.一种分布式存储系统故障切换系统,其特征在于,包括:
域名创建单元,配置用于在分布式存储系统的域名系统服务器上为所述分布式存储系统创建域名;
域名绑定单元,配置用于将所述分布式存储系统的物理节点ip绑定至所述域名;
状态获取单元,配置用于获取所述分布式存储系统的物理节点状态;
地址返回单元,配置用于在接收到客户端请求后,将处于正常状态的物理节点的ip返回至发送请求的客户端。
6.根据权利要求5所述的系统,其特征在于,所述状态获取单元包括:
列表保存模块,配置用于预先将所述分布式存储系统的所有物理节点ip保存至ip列表;
通信请求模块,配置用于向所述分布式存储系统的所有物理节点发送建立通信连接请求;
连接判断模块,配置用于判断是否与接收所述通信连接请求的物理节点建立通信连接;
正常判定模块,配置用于若与接收所述通信连接请求的物理节点建立通信连接,则判定所述物理节点处于正常状态;
异常判定模块,配置用于若未与接收所述通信连接请求的物理节点建立通信连接,则判定所述物理节点ip处于异常状态。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括:
状态标记模块,配置用于对物理节点ip进行状态标记;
时间设置模块,配置用于设置物理节点状态刷新间隔时间;
状态更新模块,配置用于根据所述间隔时间定期获取所述分布式存储系统的物理节点状态,并根据获取结果对各物理节点ip进行状态标记更新。
8.根据权利要求5所述的系统,其特征在于,所述地址返回单元包括:
顺序设置模块,配置用于预先设置物理节点轮询顺序;
顺序生成模块,配置用于根据所述轮询顺序对处于正常状态的物理节点ip进行排序,得到执行顺序;
目标锁定模块,配置用于根据前次向客户端返回的物理节点ip和所述执行顺序,得到目标物理节点ip;
目标下发模块,配置用于将所述目标物理节点ip返回至发送请求的客户端。
9.一种终端,其特征在于,包括:
处理器;
用于存储处理器的执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-4任一项所述的方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的方法。
技术总结