一种利用资源环实现高可用存储的方法转让专利

申请号 : CN201410222718.5

文献号 : CN104052799B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 叶佑群

申请人 : 上海爱数信息技术股份有限公司

摘要 :

本发明涉及一种利用资源环实现高可用存储的方法,该方法通过在多个结点间形成多个不同的资源环,通过相应的心跳技术实现这些资源在这资源环上的自动切换,实现存储高可用,包括以下步骤:1)启动实例,各实例获得配置文件并读取;2)各实例获取网络锁对象,并通过取得的锁对象发送取得锁的尝试;3)各实例判断是否取得锁,若是,则执行步骤4),若否,则执行步骤5);4)主实例以设定的心跳间隔时间持续发送心跳信息,逐个启动并执行所配置的资源服务;5)从实例启动定时器,判断是否在超时时间内接收到所在资源环的主实例发出的心跳信息。与现有技术相比,本发明具有节省投资、配置简单等优点。

权利要求 :

1.一种利用资源环实现高可用存储的方法,其特征在于,该方法通过在多个结点间形成多个不同的资源环,通过相应的心跳技术实现这些资源在这个资源环上的自动切换,实现存储高可用,具体包括以下步骤:

1)启动实例,各实例获得配置文件并读取,所述配置文件包括心跳间隔时间、切换延迟、资源环标识和资源配置;

2)各实例获取网络锁对象,并通过取得的锁对象发送取得锁的尝试,所述网络锁是一种利用相应的算法实现的,模拟本地进程之间同步锁行为的一种锁实现;

3)各实例判断是否取得锁,若是,则执行步骤4),若否,则执行步骤5);

4)取得锁的实例为主实例,主实例以设定的心跳间隔时间持续发送心跳信息,根据所在资源环的资源配置,逐个启动并执行所配置的资源服务,运行直到主实例失效;

5)未取得锁的实例为从实例,从实例启动定时器,判断是否在超时时间内接收到所在资源环的主实例发出的心跳信息,若是,则重置定时器,若否,则返回步骤2),进入重新选举的阶段;

所述的心跳信息包括资源状态信息、心跳顺序号和实例运行状态数据。

2.根据权利要求1所述的一种利用资源环实现高可用存储的方法,其特征在于,所述的超时时间为心跳间隔时间的整数倍。

3.根据权利要求1所述的一种利用资源环实现高可用存储的方法,其特征在于,还包括实例添加步骤,在该步骤中,新添加的实例启动后,获得所在资源环的配置文件并读取,执行步骤5)。

4.根据权利要求1所述的一种利用资源环实现高可用存储的方法,其特征在于,还包括主实例手动切换步骤,在该步骤中,主实例接收切换命令后停止心跳信息的发送,并停止所有配置的资源服务,则从实例不会在超时时间到达前收到心跳信息,因而执行重新选举步骤,即执行步骤2)。

说明书 :

一种利用资源环实现高可用存储的方法

技术领域

[0001] 本发明涉及一种存储备份技术,尤其是涉及一种利用资源环实现高可用存储的方法。

背景技术

[0002] 随着人类生活与计算机结合得越来越紧密,计算机的稳定运行决定着人类生产与生活的效率与质量,所以,计算机运行时的稳定性是关键因素,特别是作为计算机的核心部件之一的存储系统,起着存储数据的作用。因为计算机所有的部件都是为了处理、传输、计算、运用这些存储在存储系统中的数据。而这些数据有可能是个人与企业的业务数据、金融信息、客户资料、操作日志等,这些数据丢失与暂时的不可得,都有可能造成不可挽回的损失。
[0003] 但是作为单独计算机设备来讲,其总是存在着天然的、不可解决的缺陷以及不可控的外部影响因素。这些缺陷及外部因素包括设备老化、电力失效、火灾、施工损坏等等,而这些因素往往会导致设备在一段时间内不能提供服务,从而导致的情况可能数据的丢失、损坏、无法读取等结果,而这将进一步导致企业无法正常运行,医院中断服务,银行无法及时处理用户的金融需求等等,由此所造成的损失与不便是巨大的。
[0004] 为了解决类似的问题,直接的方法就是提供多个服务设备,并在其中一个或者多个设备失效时,其他的冗余设备能够承担原来的业务并存储由此产生的数据,这样可以尽可能地保证业务不中断,数据不丢失。当前也有较多的方法来解决这样的问题。一种是完全的镜像,即两台设备处于主备工作方式,在主设备失效时,备份设备能够承担原来主设备的工作。这种方式的一个缺点是,在正常情况下,只有一个设备提供服务,即所有的服务都通过一台设备来完成,这样就没有完全利用所有设备所提供的服务能力。这种方案下,无论是新部署系统,还是升级原有的系统,都需要两份投资,这将会造成成本的上升。
[0005] 另外一种实现方式,就是通过一台中转设备,将所有的请求分发到其他的工作结点来平衡工作负载,并且在某个设备失效后,能够停止向其发送服务请求。但是这种方案的明显缺点就是这个“中转设备”会成为整个服务系统的单点故障。即这个设备失效后,整个服务系统都不能使用了,即使还有其他可用的结点能够提供服务。为了保证系统中没有单点故障,就需要再部署一台相同的“中转设备”与原来的设备形成多通道,以规避单点故障的问题。这毫无疑问造成投资的上升,因此不适合预算有限的企业与组织。并且这种方案一般来说,技术复杂度较高,部署难度较大,不适用于一般的存储设备多数的高可用的场景。
[0006] 为了充分利用各个存储设备,并且又能够做到多个设备之间高可用,使设备间所组成的设备群能够对外提供持续的存储服务,本发明提供了一种利用资源环实现高可用的方法,使得在充分利用硬件资源的同时实现高可用服务,同时能够节省投资,减轻部署难度。

发明内容

[0007] 本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种能够节省投资、配置简单的利用资源环实现高可用存储的方法。
[0008] 本发明的目的可以通过以下技术方案来实现:
[0009] 一种利用资源环实现高可用存储的方法,该方法通过在多个结点间形成多个不同的资源环,通过相应的心跳技术实现这些资源在这资源环上的自动切换,实现存储高可用,具体包括以下步骤:
[0010] 1)启动实例,各实例获得配置文件并读取,根据配置文件取得资源的配置情况,所述配置文件包括心跳间隔时间、切换延迟、资源环标识和资源配置;
[0011] 2)各实例获取网络锁对象,并通过取得的锁对象发送取得锁的尝试;
[0012] 其中,网络锁是一种利用相应的算法实现的,模拟本地进程之间同步锁行为的一种锁实现。其基本特性就是,每次只能有一个实例取得锁,而后来者无法再次取得锁。只有当已经取得锁的实例主动释放锁,其他的实例才有机会再次取得这个锁。为了应对实例突然失效而导致无法释放锁的情形,这个锁只会被持有一段时间。如果实例要持续持有锁,就必须不断续约。当没有续约时,就会被自动释放。因此,其他的实例就可以有机会取得锁。
[0013] 3)各实例判断是否取得锁,若是,则执行步骤4),若否,则执行步骤5);
[0014] 4)取得锁的实例为主实例,对于每一个资源环中,都存在一个且仅一个主实例,主实例以设定的心跳间隔时间持续发送心跳信息,在发送心跳的过程中,根据所在资源环的资源配置,逐个启动所配置的资源,当资源启动完成后,该资源环即可向外部提供资源服务,并且持续执行,直到本实例失效;
[0015] 5)未取得锁的实例为从实例,从实例启动定时器,判断是否在超时时间内接收到所在资源环的主实例发出的心跳信息,超时时间为心跳间隔时间的整数倍,若是,则重置定时器,若否,则说明主实例已经失效,返回步骤2),进入重新选举的阶段。
[0016] 还包括实例添加步骤,在该步骤中,新添加的实例启动后,获得所在资源环的配置文件并读取,由于锁的特点,新实例加入到资源环时,已经存在主实例,锁由主实例持有,因此新实例一定无法取得锁,而成为从实例,因此执行步骤5)。
[0017] 还包括主实例手动切换步骤,在该步骤中,主实例接收切换命令后停止心跳信息的发送,并停止所有配置的资源服务,则从实例未在超时时间内收到心跳信息,执行步骤2)。
[0018] 所述的心跳信息包括资源状态信息、心跳顺序号、实例运行状态数据等必要的状态信息。
[0019] 为了保证资源环中的资源一致,配置相同,因此在启动实例之前必须通过相应的手段同步资源环中各个实例的配置文件。
[0020] 与现有技术相比,本发明可以达到如下有益效果:
[0021] 1)通过资源环的配置,可以在两个结点之间配置两个资源环,并且控制每个环中的启动顺序,即可以实现两个结点之间互为主从结点,达到分散负载的功能,从而可以减少设备投资的情况下达到一样的负载水平。
[0022] 2)由于同一个结点可以运行多个实例,因此可以在多个集群环境中只设置一个备用结点。在这个备用结点上运行多个实例,即可达到一个结点对多个集群进行高可用保护的目的,也可以减少设备的投资。
[0023] 3)由于资源环是以普通的网络组播地址标识,并且以配置文件控制实例的执行,因此配置简单,可以应用在各种服务环境中。而心跳以组播的方式发送,占用很少的资源,不会影响正常业务的执行。
[0024] 4)为了进一步保证集群的可靠性,需要增加新的结点时,只需要简单地同步配置文件,启动实例即可完成,且不影响正常的业务执行。因此可以做到线性地添加集群结点,减少业务的中断时间。

附图说明

[0025] 图1为本发明资源环逻辑示意图;
[0026] 图2为本发明资源环配置示意图;
[0027] 图3为本发明实例启动与运行流程图。

具体实施方式

[0028] 下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0029] 对外提供相同存储服务的存储设备所组成的计算机网络称为存储集群。其中每个物理设备,称之为结点。同时,在这个集群中所有结点上的物理设备、软件设施以及网络地址等,统称为集群资源,简称为资源,资源所处的结点也称为资源服务器。在本发明中,为了管理与切换这些资源,需要有一个软件设施去跟踪、控制以及检测这些资源的可用性。这个软件设施需要运行在资源服务器上,称为进程。这样的一个进程称为一个实例。对外提供服务的实例称之为主实例,同一个资源环中的其他实例则称为从实例。
[0030] 资源环定义如下:在计算机网络地址形式中,有一种地址称为组播地址。通过组播地址发送的数据,在这个组播地址中的结点都可以接收。而组播地址一般由组播网络IP地址以及相应的端口组成。组播网络地址IP由不同的IP协议定义,而端口则是一个整数。由这样的组播网络IP地址与端口组成的地址形式,称为资源环标识。每个实例均可以通过资源环标识来加入同一个资源环。为了保证真正起到高可用的功能,资源环中的实例必须运行在不同的设备结点上,但是同一个设备结点上可以运行多个不在同一个资源环中的实例。不同的资源环中管理的资源不能重复,否则会有冲突。最终,不同的结点形成的资源环的逻辑结构如图1所示。
[0031] 典型地,当两个结点之间分别配置两个资源环,并且每个结点运行两个实例,并且加入不同的环,就可以在两个结点之间平均地分配负载压力,同时又能够起到高可用的效果,如图2所示。相应地,可以配置成两个结点以上的方式。
[0032] 如图3所示,本发明的一个具体的实施例如下:
[0033] 1.为了使各个结点加入到对应的资源环中,需要各个结点有相同的配置文件。配置文件中记录心跳间隔时间,切换延迟,资源环标识等。在本实施例中,配置文件为RES_CIRCLE.conf。为了使相应的结点可以加入到资源环中,首先将RES_CIRCLE.conf文件复制到各个结点中。
[0034] 2.在各个结点的设备上,启动资源监控进程,即实例,并且指定配置文件为RES_CIRCLE.conf,然后进入下一步骤。
[0035] 3.实例进程首先从配置文件中取得资源环标识,即取得GROUP_ADDR在配置文件中的值,作为广播地址,以及取得GROUP_PORT在配置文件中的值,作为广播端口。两者同时组成相应的资源环标识CIRCLE_ID。同时还从配置文件中取得心跳间隔HEARTBEAT,以及切换延迟DELAY,然后进入下一步。
[0036] 4.取得网络锁对象。网络锁对象一个实例只有一份,并与CIRCLE_ID绑定,并通过取得的锁对象去尝试取得锁,如果返回的值为LOCK_BY_ME,则表示本实例取得锁,则进入步骤4.1,如果返回的是其他的值,则表示其他的实例取得了锁。则进入步骤4.2。
[0037] 4.1进入到本步骤,则说明本实例已经取得锁,则以主实例的角色运行。首先以HEARTBEAT配置间隔持续发送心跳。心跳信息中包含必要的状态值,如主实例中资源的状态等相关信息。然后进入步骤4.1.1。
[0038] 4.1.1通过从配置文件中取得的资源配置信息,依次启动相应的资源。在存储集群中,相应的资料可能包括统一的访问IP地址、以iSCSI方式或者以FCoE方式输出给客户端使用的存储介质等。完成后,即完成了主实例的启动,并持续运行,直至结束。
[0039] 4.2进入到本步骤,说明本实例是以从实例的角色运行的。首先加入CIRCLE_ID为标识的环,并启动一个超时定时器,其超时时间为心跳间隔HEARTBEAT与切换延迟DELAY的乘积。如果在这个超时时间内,实例收到来自主实例的心跳,则重置这个超时定时器。如果超时发生,则说明在设置的时间内,实例已经失效。则需要重新选举主实例,因此进入步骤4。
[0040] 由于特定需要(如维护系统的目的),有时需要手工切换,无需等待主实例失效,即可以切换资源环中的主实例。因此需要进入步骤5。
[0041] 我们只需要通知主实例停止心跳发送,并停止所有配置的资源服务。其他的从实例由于在一定的时间内,无法收到心跳则自动发生切换。
[0042] 5.为了手工切换主实例,首先给主实例发送SWITCH命令,主实例在接收到这个命令后,首先停止心跳发送,并停止所有与本实例相关的资源服务,然后退出即可,只要在步骤4.2所述的超时时间内不重启实例,即可完成手工切换。当停止的实例重新加入到资源环时,不会影响原来环中的资源服务,其只会作为一个从实例运行。
[0043] 6.为了进一步保证存储集群能够持提供服务,有时需要添加新实例。当需要添加一个新的实例到已有的资源环中,只需要将相应的配置文件RES_CIRCLE.conf复制到该实例所在设备,然后启动实例,由于新加入实例是无法取得资源环中的锁的,因此新的实例将执行步骤4.2。