主从服务系统、主节点故障恢复方法及装置与流程

文档序号:16198471发布日期:2018-12-08 06:22阅读:225来源:国知局
主从服务系统、主节点故障恢复方法及装置与流程

本发明涉及计算机技术领域,特别是涉及主从服务系统、主节点故障恢复方法、装置、电子设备以及计算机可读存储介质。

背景技术

数据库(database)是按照数据结构来组织、存储和管理数据的仓库;数据库可以用单节点提供数据存取服务,但是,如果该单节点发生故障,则数据库的存储服务无法继续提供,所以现有技术中,为保证数据库的高可用性,可以采用主从服务系统提供数据存取服务,例如对于redis数据库(一种开源的key-value数据库),其可以采用主从服务系统提供数据缓存服务。

现有的主从服务系统包含控制器、一个主服务节点,简称主节点,以及至少一个从服务节点,简称从节点,主节点与各个从节点之间建立有主从复制关系,即主节点与各个从节点之间存储着相同的数据,当主节点中的数据更新时,各个从节点会及时复制主节点中所更新的数据;另外,上述主节点用于提供数据写入服务,而所有的从节点则用于共同提供数据读取服务。在主从服务系统中,控制器控制主节点和从节点,当主节点失效时,为了保证数据写入服务的正常提供,控制器会从各个从节点中选择一个从节点作为新的主节点,由新的主节点继续对外提供数据写入服务。

主从服务系统提供数据读取服务的能力与其中的从节点数量有关,从节点数量越多,提供数据读取服务的能力越强;但是由上可知,在现有技术中,当主节点失效时,会从各个从节点中选择一个从节点作为新的主节点,所以在主节点故障的恢复过程中,从节点数量减少,主从服务系统提供数据读取服务的能力下降,极端情况下,主从服务系统仅有一个从节点,当主节点失效时,该从节点被作为新的主节点,此时不再有可以提供数据读取服务的从节点。



技术实现要素:

本发明实施例的目的在于提供一种主从服务系统、主节点故障恢复方法、装置、电子设备以及计算机可读存储介质,以在主节点故障的恢复过程中,保证主从服务系统提供数据读取服务的能力不变。具体技术方案如下:

为达上述目的,第一方面,本发明实施例公开了一种主从服务系统,包括:用于提供数据写入服务的主节点、对应于所述主节点的备份节点、至少一个用于提供数据读取服务的从节点,以及用于控制主节点、从节点及备份节点的控制器;

其中,所述控制器,用于在感知到所述主节点发生故障时,切换所述备份节点为新的主节点。

优选的,所述主从服务系统还包括请求转发器,所述请求转发器中记录有第一虚拟ip地址与主节点mac地址的目标对应关系,

所述请求转发器,用于在接收到目的ip地址为第一虚拟ip地址的数据写入请求后,根据本地记录的所述目标对应关系,将所述数据写入请求转发给主节点;

所述控制器,具体用于在感知到所述主节点发生故障时,更新所述目标对应关系中所述第一虚拟ip地址对应的mac地址为所述备份节点的mac地址;建立新的主节点与各个从节点之间的主从复制关系,完成切换所述备份节点为新的主节点的操作。

优选的,所述控制器,还用于在所述备份节点被切换为新的主节点后,新建一个备份节点。

优选的,所述控制器,具体用于在所述备份节点被切换为新的主节点后,创建一个节点;建立新的主节点与所创建节点之间的主从复制关系,完成新建一个备份节点的操作。

优选的,所述控制器,还用于在感知到所述主从服务系统中的任一从节点发生故障时,新建一个从节点。

优选的,所述主从服务系统还包括负载均衡器,所述负载均衡器中记录有所述第二虚拟ip地址与各个从节点的对应关系,

所述负载均衡器,用于在接收到目的ip地址为所述第二虚拟ip地址的数据读取请求后,根据所述第二虚拟ip地址与各个从节点的对应关系,从所述第二虚拟ip地址对应的各个从节点中选择一个目标从节点,并将所述数据读取请求转发给所述目标从节点。

优选的,所述控制器,具体用于在感知到所述主从服务系统中的任一从节点发生故障时,删除所述第二虚拟ip地址与该从节点之间的对应关系;创建一个节点,并在所述负载均衡器中记录所述第二虚拟ip地址与所创建节点之间的对应关系,建立当前的主节点与所创建节点之间的主从复制关系,得到一个新的从节点。

优选的,所述控制器,还用于在所述主从服务系统中新增从节点后,于所述负载均衡器中记录所述第二虚拟ip地址与新增从节点之间的对应关系;在所述主从服务系统中的任一从节点被删除后,删除所述负载均衡器中所记录的所述第二虚拟ip地址与被删除从节点之间的对应关系。

优选的,所述控制器,还用于在感知到所述主从服务系统中的备份节点发生故障时,新建一个备份节点。

第二方面,本发明实施例公开了一种主节点故障恢复方法,应用于上述任意一种主从服务系统中的控制器,所述方法包括:

在感知到所述主节点发生故障时,切换所述备份节点为新的主节点。

优选的,所述主从服务系统还包括请求转发器,所述请求转发器中记录有第一虚拟ip地址与主节点mac地址的目标对应关系,

所述请求转发器,用于在接收到目的ip地址为第一虚拟ip地址的数据写入请求后,根据本地记录的所述目标对应关系,将所述数据写入请求转发给主节点;

所述在感知到所述主节点发生故障时,切换所述备份节点为新的主节点的步骤,包括:

在感知到所述主节点发生故障时,更新所述目标对应关系中所述第一虚拟ip地址对应的mac地址为所述备份节点的mac地址;

建立新的主节点与各个从节点之间的主从复制关系,完成切换所述备份节点为新的主节点的操作。

优选的,所述方法还包括:

在所述备份节点被切换为新的主节点后,新建一个备份节点。

优选的,所述在所述备份节点被切换为新的主节点后,新建一个备份节点的步骤,包括:

在所述备份节点被切换为新的主节点后,创建一个节点;

建立新的主节点与所创建节点之间的主从复制关系,完成新建一个备份节点的操作。

第三方面,本发明实施例公开了一种主节点故障恢复装置,应用于上述任意一种主从服务系统中的控制器,所述装置包括:

切换模块,用于在感知到所述主节点发生故障时,切换所述备份节点为新的主节点。

优选的,所述主从服务系统还包括请求转发器,所述请求转发器中记录有第一虚拟ip地址与主节点mac地址的目标对应关系,

所述请求转发器,用于在接收到目的ip地址为第一虚拟ip地址的数据写入请求后,根据本地记录的所述目标对应关系,将所述数据写入请求转发给主节点;

所述切换模块包括:

更新子模块,用于在感知到所述主节点发生故障时,更新所述目标对应关系中所述第一虚拟ip地址对应的mac地址为所述备份节点的mac地址;

第一建立子模块,用于建立新的主节点与各个从节点之间的主从复制关系,完成切换所述备份节点为新的主节点的操作。

优选的,所述装置还包括:

创建模块,用于在所述备份节点被切换为新的主节点后,新建一个备份节点。

优选的,所述创建模块,包括:

创建子模块,用于在所述备份节点被切换为新的主节点后,创建一个节点;

第二建立子模块,用于建立新的主节点与所创建节点之间的主从复制关系,完成新建一个备份节点的操作。

第四方面,本发明实施例公开了一种电子设备,所述电子设备为主从服务系统中的控制器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任意一种主节点故障恢复方法所述的方法步骤。

第五方面,本发明实施例公开了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现述任意一种主节点故障恢复方法所述的方法步骤。

由以上可见,本发明实施例提供方案中,整个主从服务系统包括用于提供数据写入服务的主节点、对应于主节点的备份节点、至少一个用于提供数据读取服务的从节点,以及用于控制主节点、从节点及备份节点的控制器;其中,该控制器,用于在感知到主节点发生故障时,切换备份节点为新的主节点。与现有技术相比,本发明实施例提供的方案中,在主节点发生故障时,备份节点被切换为新的主节点,而主从服务系统中的任意一个从节点均可以正常的提供数据读取服务;所以在主节点故障恢复的过程中,从节点提供数据读取服务的能力没有受到任何影响;同时,该过程中仅需要切换备份节点为新的主节点,操作过程简单,不需要整个主从服务系统进行大量的调整。

附图说明

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

图1为本发明实施例提供的主从服务系统的第一种结构示意图;

图2为本发明实施例提供的主从服务系统的第二种结构示意图;

图3为本发明实施例提供的主从服务系统的第三种结构示意图;

图4为本发明实施例提供的主从服务系统的框图;

图5为本发明实施例提供的主节点故障恢复方法的第一种流程示意图;

图6为本发明实施例提供的主节点故障恢复方法的第二种流程示意图;

图7为本发明实施例提供的主节点故障恢复方法的第三种流程示意图;

图8为本发明实施例提供的主节点故障恢复方法的第一种结构示意图;

图9为本发明实施例提供的主节点故障恢复方法的第二种结构示意图;

图10为本发明实施例提供的主节点故障恢复方法的第三种结构示意图;

图11为本发明实施例提供的电子设备的结构示意图。

具体实施方式

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

下面首先对本发明涉及的技术术语进行简单介绍。

备份节点:如前背景技术所述,如果数据库以单节点方式存在,那么该单节点必然同时提供数据读取服务和数据写入服务,当该单节点发生故障时,会导致所有服务不可用,更有甚者,像redis数据库等数据库,是一种内存数据库,如果单节点发生故障,还会使该单节点中保存的数据丢失;所以,为保证数据库的高可用性,现有技术中提供了一种主备服务系统。主备服务系统包含一个主节点,以及对应该主节点的冗余节点,即备份节点。

主备服务系统中,数据读取服务和数据写入服务请求都由主节点提供,在主节点发生故障的时候,备份节点被切换为新的主节点,并由新的主节点提供数据读取服务和数据写入服务,同时再重新创建一个新的冗余节点作为新的备份节点,以保证数据库的高可用性。

并且,主备服务系统中,主节点和备份节点中所存储的数据相同;主节点中存储的数据更新时,备份节点会根据主节点中数据的更新内容更新本地存储的数据,达到备份节点与主节点数据同步的目的。

现有技术中,除了利用主备服务系统来提高数据库的可用性,还有一种主从服务系统,其同样可以提高数据库的可用性。

主从服务系统,包含一个主节点,以及对应于该主节点的多个从节点,当主节点失效时,该时刻数据最新的从节点会被切换为新的主节点,同时主从服务系统还会重新创建一个从节点,以接替被切换为主节点的从节点;其中,应该说明,每个从节点同步主节点中的数据存在时延,所以此处应切换数据最新的从节点为主节点,以保证新切换的主节点中的数据与原主节点中的数据尽可能相同。

主从服务系统中,主节点和各个从节点中所存储的数据相同;另外,如果想更新各个节点中的数据,可以更改该主节点中存储的数据,然后各个从节点会根据主节点中数据的更新内容更新本地存储的数据,达到从节点与主节点数据同步的目的。

本领域技术人员公知的是,在主备服务系统中,主节点与备份节点之间建立有一种关系,可以保证主节点数据更新时,备份节点根据主节点的更新操作同步本地数据;同样的,主节点与从节点之间也建立有一种关系,可以保证主节点数据更新时,从节点根据主节点的更新操作同步本地数据。上述两种关系均可以称为主从复制关系,即主节点与备份节点之间以及主节点与从节点之间均存在主从复制关系。

例如,主节点和各个从节点中存储有数据a,在某一时刻,主节点中存储的数据a被删除,则各个从节点在感知到主节点中的数据a被删除的情况下,将本地存储的数据a删除。

可以理解,主从服务系统中,数据写入服务由主节点提供,数据读取服务同样可以仅由主节点提供,但是,主节点同时提供数据写入服务和数据读取服务,主节点承受的负载通常会很大,例如,在电商的商品秒杀活动中,会有大量的数据读取请求发送给提供数据读取服务的节点,而单个节点提供数据读取服务的能力是有限的,如果由主节点来单独提供数据读取服务,主节点可能不能满足这样的性能要求,承担不了过高的负载。

为了减小主节点的负载,并提高主从服务系统的数据读取能力,整个主从服务系统中,主节点用来提供数据写入服务,并且可以用来提供数据读取服务,而所有的从节点均用来提供数据读取服务;由于从节点的数目较多,每个从节点均可以提供数据读取服务,这样可以大大地增强整个主从服务系统提供数据读取服务的能力。

应该说明的是,无论是主备服务系统,还是主从服务系统,节点的切换都可以是由系统中的控制器完成,并且,该控制器可以感知到各个节点是否发生故障,当然,控制器感知节点故障的方式属于现有技术,本发明实施例在此不做详细介绍。

例如,在主从服务系统中,该控制器为一种openstack(一种开源的云计算管理平台项目)控制器,当控制器感知主节点故障时,控制器首先确定当前所有的从节点中数据最新的从节点,然后将所确定的从节点切换为新的主节点。

为了解决现有技术的主从服务系统在恢复主节点故障的过程中,切换从节点为新的主节点导致的:主从服务系统提供数据读取服务能力下降的问题,本发明实施例提供了主从服务系统、主节点故障恢复方法及装置。应该说明的是,主节点的故障恢复过程,是指主从服务系统中的主节点发生故障至新的主节点产生的过程。

具体的,参见图1,图1为本发明实施例提供的主从服务系统的第一种结构示意图。如图1所示,主从服务系统包括用于提供数据写入服务的主节点、对应于主节点的备份节点、用于提供数据读取服务的从节点1~n,以及用于控制主节点、从节点及备份节点的控制器。其中的控制器,用于在感知到主节点发生故障时,切换备份节点为新的主节点。可以理解,本发明实施例提供的方案中,在主节点发生故障时,备份节点被切换为新的主节点,从节点提供数据读取服务的能力没有受到任何影响;同时,该过程中仅需要切换备份节点为新的主节点,操作过程简单,不需要整个主从服务系统进行大量的调整。

下面通过具体实施例来对本发明进行详细介绍。

本发明实施例提供的主从服务系统,如图1所示,包括:用于提供数据写入服务的主节点、对应于该主节点的备份节点、至少一个用于提供数据读取服务的从节点,以及用于控制主节点、从节点及备份节点的控制器。

应该说明的是,本发明实施例中的控制器可以是任何一种可以感知到主节点、从节点及备份节点否发生故障的控制器,例如上述openstack控制器;另外,在本发明实施例中,根据实际需要,主节点同样可以提供数据读取服务,主节点正常处理其所接收到的数据读取请求。

在本发明实施例中,主节点与各个从节点之间均建立有主从复制关系,同时,主节点与备份节点之间也建立有主从复制关系。可以理解的是,备份节点与从节点相同的地方在于:当主节点中的数据更新时,备份节点以及各个从节点都会根据主节点中的数据更新内容,同步各自本地的数据;例如,主节点中新增数据a,则备份节点及各个从节点感知到主节点中新增了数据a后,均会从主节点中将数据a复制到本地,达到与主节点数据同步的目的。

本发明实施例提供的主从服务系统中,上述控制器,用于在感知到主节点发生故障时,切换备份节点为新的主节点。

由此可知,备份节点与从节点不同的地方在于:从节点对外提供数据读取服务,而备份节点对外不提供任何服务,仅在主节点发生故障时,控制器会切换该主节点为新的主节点。例如,主从服务系统中,存在备份节点b,以及从节点c~f,则从节点c~f对外提供数据读取服务,当主从服务系统中的主节点出现故障而失效后,控制器切换该备份节点b为新的主节点。

现有技术的主从服务系统中,当主节点失效时,控制器会从该时刻各个从节点中选择数据最新的从节点,并将所选的从节点切换为新的主节点。

可以理解,主从服务系统提供数据读取服务的能力与主从服务系统中从节点的数量是正相关的,主从服务系统中从节点的数量越多,主从服务系统提供数据读取服务的能力越强,所以在切换所选的从节点为新的主节点后,主从服务系统中从节点的数量减少,主从服务系统提供数据读取服务的能力降低。

例如,主从服务系统中包含有3个从节点,每个从节点最大可以同时处理1000个数据读取请求,则整个主从服务系统中的所有从节点最大可以同时处理3000个数据读取请求,如果其中一个从节点被切换为主节点,则主从服务系统中的所有从节点最大可以同时处理2000个数据读取请求,整个主从服务系统提供数据读取服务的能力明显降低。

对于作为数据读取请求的发送端而言,外部设备在主从服务系统提供数据读取服务的能力降低时,会出现数据读取请求不成功、请求反馈延迟等问题,用户体验效果差。

另一方面,由于从节点在被切换为主节点前,还需要对外提供数据读取服务,而从节点在被切换为主节点后,其可能不再提供数据读取服务,而是仅对外提供数据写入服务,所以为了避免切换后,仍然存在一些数据读取请求发送给该从节点,还必须调整网络配置,保证数据读取请求不再发送给该从节点。可以理解,由于网络配置的更改使得切换从节点为主节点的操作变得复杂。

当然,现有技术中,为了尽快恢复主从服务系统原有的提供数据读取服务的能力,控制器还需要执行额外的复杂操作:新建一个从节点,以代替切换为主节点的从节点。可以理解,在切换所选的从节点为新的主节点,到控制器新建一个主节点这段时间内,主从服务系统提供数据读取服务的能力减弱。

而且,新建的从节点想要代替切换为主节点的从节点,同样需要更改网络配置,以使得一部分数据读取请求可以被该从节点处理,显然的,再次更改网络配置同样会增加切换从节点为主节点的操作的复杂性。

相较于现有技术,本发明实施例中的主从服务系统还包括有一个备份节点,在主节点发生故障时,控制器切换备份节点为新的主节点,保证了主从服务系统的高可用性。与现有技术相比,主节点发生故障时,备份节点被切换为新的主节点,而主从服务系统中的任意一个从节点均可以正常的提供数据读取服务;所以在主节点故障恢复的过程中,从节点提供数据读取服务的能力没有受到任何影响;同时,该过程中仅需要切换备份节点为新的主节点,操作过程简单,主节点故障恢复速度快,不需要整个主从服务系统进行大量的调整。

在本发明实施例中,为了保证备份节点到新的主节点的无缝切换,如图2所示,上述主从服务系统还可以包括请求转发器,该请求转发器中记录有第一虚拟ip(internetprotocol,网络之间互连的协议)地址与主节点mac(mediaaccesscontrol,媒体访问控制)地址的目标对应关系。

其中,该请求转发器,用于在接收到目的ip地址为第一虚拟ip地址的数据写入请求后,根据本地记录的目标对应关系,将数据写入请求转发给主节点。

可以理解,主从服务系统对外提供数据写入服务,对于有数据写入需求的外部设备而言,其会向主从服务系统发送一个数据写入请求,在本发明实施例中,该数据写入请求的目的ip地址即为该第一虚拟ip地址,外部设备向主从服务系统发送数据写入请求时,首先由请求转发器所获得,由于请求转发器中记录有第一虚拟ip地址与主节点mac地址的目标对应关系,请求转发器根据该目标对应关系,确定当前该第一虚拟ip地址对应的mac地址为当前的主节点的mac地址,所以,请求转发器会将该数据写入请求发送给当前的主节点,以使得当前的主节点来处理数据写入请求。

当然,如果请求转发器接收到目的ip地址为第一虚拟ip地址的数据读取请求,同样将该数据读取请求发送给主节点,由主节点处理该数据读取请求。

相应的,上述控制器,具体用于在感知到主节点发生故障时,更新目标对应关系中第一虚拟ip地址对应的mac地址为备份节点的mac地址;建立新的主节点与各个从节点之间的主从复制关系,完成切换备份节点为新的主节点的操作。

可以理解,在备份节点被切换为新的主节点后,数据写入服务由新的主节点提供,即主从服务系统所接收到的数据写入请求应该由新的主节点即该备份节点来提供,所以控制器在感知到主节点发生故障时,需要更新目标对应关系中第一虚拟ip地址对应的mac地址为备份节点的mac地址,以使得请求转发器在此后再接到数据写入请求时,都会将数据写入请求发送给新的主节点,由新的主节点来处理数据写入请求。

例如,原有的主节点的mac地址为mac1,备份节点的mac地址为mac2,请求转发器记录第一虚拟ip地址对应的mac地址为mac1,当原有的主节点因故障而失效时,控制器会将请求转发器中记录的第一虚拟ip地址对应的mac地址更改为mac2。

在本发明实施例中,备份节点要想成为一个新的主节点,除了需要处理数据写入请求外,控制器还要建立新的主节点与各个从节点之间的主从复制关系,以使得所有的从节点能够与新的主节点之间保持数据同步。应该说明的是,当原主节点发生故障时,原主节点与各个从节点之间的主从复制关系、以及原主节点与备份节点之间的主从复制关系已经不复存在,控制器建立新的主节点与各个从节点之间的主从复制关系后,各个从节点仅与新的主节点之间存在主从复制关系。

在本发明实施例中,可以理解,由于控制器在感知到主节点发生故障时,会更新目标对应关系中第一虚拟ip地址对应的mac地址为备份节点的mac地址,此后的数据写入请求都将由新的主节点来处理;对于外部设备而言,其发送的数据写入请求的目的ip地址始终是上述第一虚拟ip地址,外部设备并不能感知到备份节点被切换为新的主节点这一切换过程,对外部设备的用户而言,其无法感知到此切换过程,因而对于外部设备的用户而言,这是一种无缝切换,用户体验好。

在本发明实施例中,上述控制器,还可以用于在备份节点被切换为新的主节点后,新建一个备份节点。

可以理解,当主从服务系统中的备份节点被切换为新的主节点后,主从服务系统中已经不再存在新的主节点所对应的备份节点,所以此时,控制器还需要再创建一个新的备份节点,以代替原来的备份节点,并且在新的主节点失效时,由控制器将该新的备份节点被切换为新的主节点,以保证整个主从服务系统的正常工作。

应当说明的是,主节点发生故障后,主节点同样可以被修复,而主节点在被修复后,不再属于主从服务系统中的节点,除非控制器将修复的主节点重新作为一个新的备份节点。

例如,节点b当前为主节点,在a时刻,节点b因故障而失效,控制器切换a时刻时主从服务系统的备份节点c为新的主节点,然后,在切换完成后,节点b同时被成功修复,则控制器可以将该节点b作为新的备份节点。

在本发明实施例中,上述控制器,具体用于在备份节点被切换为新的主节点后,创建一个节点;建立新的主节点与所创建节点之间的主从复制关系,完成新建一个备份节点的操作。

可以理解,新建备份节点,首先需要有对应的可以被作为备份节点的节点,所以在本发明实施例中,需要首先创建一个节点,然后建立新的主节点与所创建节点之间的主从复制关系,以使得所创建的节点能够与新的主节点保持数据同步。

例如,在备份节点被切换为新的主节点后,控制器新建一个节点,并在该新建的节点与新的主节点之间建立主从复制关系,此后,该新建节点会复制新的主节点中的数据内容,并与主节点同步数据,该新建节点成为新的主节点对应的备份节点。

与现有技术相比,本实施例提供的方案中,在主节点发生故障时,备份节点被切换为新的主节点,而主从服务系统中的任意一个从节点均可以正常的提供数据读取服务;所以在主节点故障恢复的过程中,从节点提供数据读取服务的能力没有受到任何影响;同时,该过程中仅需要切换备份节点为新的主节点,操作过程简单,不需要整个主从服务系统进行大量的调整。

在本发明实施例中,除了主节点会发生故障外,同样会出现从节点故障而至其无法提供数据读取服务的情况,所以在本发明实施例中,上述控制器,还可以用于在感知到主从服务系统中的任一从节点发生故障时,新建一个从节点。

可以理解,主从服务系统中的任一从节点发生故障时,可以切换主从服务系统中的备份节点为从节点,以代替该发生故障的从节点,但是,如果备份节点被切换为从节点时,主节点又发生了故障,此时由于备份节点被切换为从节点,主从服务系统中没有可以切换为新主节点的备份节点。故,在本发明实施例中,当从节点发生故障时,会新建一个节点,然后建立当前的主节点与新建节点之间的主从复制关系,使得新建节点能够与当前的主节点数据同步,同时该新建节点开始对外提供数据读取服务,新建节点成为一个从节点。

本发明实施例的主从服务系统包含有多个从节点,并且每个从节点都可以对外提供数据读取服务,而在实际的应用中,为使所有的数据读取请求尽可能被均匀分配给每个从节点进行处理,保证资源的最大化利用,本发明实施例中,如图3所示,主从服务系统还可以包括负载均衡器,该负载均衡器中记录有第二虚拟ip地址与各个从节点的对应关系,

该负载均衡器,用于在接收到目的ip地址为第二虚拟ip地址的数据读取请求后,根据第二虚拟ip地址与各个从节点的对应关系,从第二虚拟ip地址对应的各个从节点中选择一个目标从节点,并将数据读取请求转发给目标从节点。

可以理解,负载均衡器接收到一个目的ip地址为该第二虚拟ip地址数据读取请求后,会从各个从节点中选择一个从节点,并将该数据读取请求转发给所选择的从节点。

此处所述的对应关系可以是一个关系表,该关系表中记录有第二虚拟ip地址及其对应的各个从节点的标识信息,如下表1所示,此标识信息为从节点的mac地址。

表1

在实际应用中,作为实现数据读取请求均匀分配的第一种实现方式,负载均衡器每接收到一个数据读取请求,可以随机选择一个从节点,再将所接收到的数据读取请求转发给所选择的从节点;例如,主从服务系统中包含有从节点a~e,负载均衡器接收到一个数据读取请求x,然后负载均衡器从从节点a~e中随机选择了从节点c,则此时,负载均衡器将数据读取请求x转发给从节点c,由从节点c处理该数据读取请求x。

作为实现数据读取请求均匀分配的第二种实现方式,负载均衡器还可以针对每一个收到的数据读取请求,按序循环发送给每一个从节点,例如,主从服务系统中包含有从节点a~e,负载均衡器接收到第一个数据读取请求时,将该数据读取请求转发给从节点a,接收到第二个数据读取请求时,将该数据读取请求转发给从节点b,接收到第三个数据读取请求时,将该数据读取请求转发给从节点c,以此类推,将数据读取请求按序循环的发给5个从节点。

应该说明的是,图3所示的主从服务系统中,请求转发器和负载均衡器可以为同一设备。

在负载均衡器中记录有第二虚拟ip地址与各个从节点的对应关系的情况下,上述控制器,可以具体用于在感知到主从服务系统中的任一从节点发生故障时,删除第二虚拟ip地址与该从节点之间的对应关系;创建一个节点,并在负载均衡器中记录第二虚拟ip地址与所创建节点之间的对应关系,建立当前的主节点与所创建节点之间的主从复制关系,得到一个新的从节点。

例如,当前主从服务系统包含有从节点a~f,如上表1,从节点a~f的mac地址分别为mac1~6,假设某一时刻,从节点d因故障而失效,则此时控制器删除第二虚拟ip地址与该从节点之间的对应关系,即在上表1中删除mac4;另外,创建一个节点,并在负载均衡器中记录第二虚拟ip地址与所创建节点之间的对应关系,假设该新创建的节点的mac地址为mac7,则在上表1中增加一个记录,最终得到的关系表如表2所示。

表2

可以理解,由于负载均衡器的存在,在从节点数量具有至少两个的情况下,当某一从节点故障,发送数据读取请求的外部设备无法感知到该从节点的故障,所以对于外部设备而言,本发明实施例可以屏蔽从节点故障迁移的细节,用户体验好,其中,从节点故障迁移指的是才能从节点发生故障至新的从节点接替发生故障的从节点的过程。

在本发明实施例中,上述控制器,还可以用于在主从服务系统中新增从节点后,于负载均衡器中记录第二虚拟ip地址与新增从节点之间的对应关系;在主从服务系统中的任一从节点被删除后,删除负载均衡器中所记录的第二虚拟ip地址与被删除从节点之间的对应关系。

可以理解,主从服务系统提供数据读取服务的能力与从节点的数量有关,所以在实际应用中,主从服务系统中的从节点数量是根据实际的对整个主从服务系统提供数据读取服务能力的需求而动态调整的,而本发明实施例中,由于负载均衡器的存在,在主从服务系统中动态增加从节点或删除从节点十分方便。

例如,当前主从服务系统包含有从节点a~f,如上表1,从节点a~f的mac地址分别为mac1~6,当前的主从服务系统新增一个从节点m,其对应的mac地址为mac8,则如下表3,控制器可以在关系表中增加一个记录,使得负载均衡器在此之后,再接收到数据读取请求时,可以将数据读取请求转发给从节点m。

表3

同理,当前主从服务系统包含有从节点a~f,如上表1,从节点a~f的mac地址分别为mac1~6,当前的主从服务系统需要删除从节点a,则如下表4,控制器可以在关系表中删除mac1,则负载均衡器在此之后,再接收到数据读取请求时,不再将数据读取请求转发给从节点a。

表4

在此需要强调的是,在存在负载均衡器的情况下,如果主节点发生故障,控制器切换某一个从节点为新的主节点,不但需要控制器删除负载均衡器中记录的第二虚拟ip地址与被切换从节点的对应关系,还需要在负载均衡器中新增第二虚拟ip地址与新增从节点的对应关系,操作执行繁琐。而在本发明实施例中,在主节点发生故障时,切换备份节点为新的主节点,控制器不需要调整负载均衡器中记录的第二虚拟ip地址与各个从节点的对应关系,主节点故障恢复过程操作简单,执行速度快,占用控制器的运行资源少。

另外,在本发明的各个实施例中,上述控制器,还可以用于在感知到主从服务系统中的备份节点发生故障时,新建一个备份节点。

具体的,当该控制器感知到备份节点发生故障时,首先新建一个节点,然后建立当前的主节点与该新建节点之间的主从复制关系,使得新建的节点与当前的主节点保持数据同步。

可见,在本发明实施例中,主节点故障时,由主节点对应的备份节点来接替;从节点故障时,则控制器会新建从节点来接替故障的从节点;备份节点故障时,控制器会新建备份节点来接替故障的备份节点。所以,在本发明实施例中,任何一个节点的故障都可以由控制器完成自动恢复。

下面通过一个具体实例来对本发明进行简单介绍。

如图4所示,主从服务系统中包含有请求转发器、负载均衡器、主节点、备份节点以及从节点1~n。其中,请求转发器中记录有第一虚拟ip地址与主节点mac地址的目标对应关系,请求转发器用于在接收到目的ip地址为第一虚拟ip地址的数据写入请求后,根据本地记录的目标对应关系,将数据写入请求转发给主节点,由主节点处理数据写入请求。

负载均衡器中记录有第二虚拟ip地址与各个从节点的对应关系,其用于在接收到目的ip地址为第二虚拟ip地址的数据读取请求后,根据第二虚拟ip地址与各个从节点的对应关系,从第二虚拟ip地址对应的各个从节点中选择一个目标从节点,并将数据读取请求转发给目标从节点,由目标从节点处理自身所接收到的数据读取请求。

另外,备份节点与主节点之间,以及各个从节点与主节点之间数据同步。

主从服务系统中还包含有一个openstack控制器(图4中未示出),openstack控制器感知主从服务系统中每个节点的状态,当感知到当前的主节点发生故障时,更新前述目标对应关系中第一虚拟ip地址对应的mac地址为备份节点的mac地址;建立新的主节点与各个从节点之间的主从复制关系,完成主节点的故障恢复;并且在备份节点被切换为新的主节点后,创建一个节点;建立新的主节点与所创建节点之间的主从复制关系,完成新建一个备份节点的操作。

另一方面,openstack控制器在感知到主从服务系统中的任一从节点发生故障时,删除述第二虚拟ip地址与该发生故障的从节点之间的对应关系;创建一个节点,并在负载均衡器中记录第二虚拟ip地址与所创建节点之间的对应关系,建立当前的主节点与所创建节点之间的主从复制关系,得到一个新的从节点,以代替发生故障的从节点。

再一方面,openstack控制器在感知到备份节点发生故障时,新建一个节点,然后建立当前的主节点与该新建节点之间的主从复制关系,使得新建的节点与当前的主节点保持数据同步,完成新建备份节点的目的。

相应于系统实施例,本发明实施例还提供了一种主节点故障恢复方法,应用于图1~3所示任一种主从服务系统中的控制器,上述方法包括:

在感知到主节点发生故障时,切换备份节点为新的主节点。

具体的,在实际应用中,上述主从服务系统还可以包括请求转发器,该请求转发器中记录有第一虚拟ip地址与主节点mac地址的目标对应关系,

上述请求转发器,用于在接收到目的ip地址为第一虚拟ip地址的数据写入请求后,根据本地记录的目标对应关系,将数据写入请求转发给主节点;

如图5所示,上述在感知到主节点发生故障时,切换备份节点为新的主节点的步骤,可以包括:

s1011:在感知到主节点发生故障时,更新目标对应关系中第一虚拟ip地址对应的mac地址为备份节点的mac地址;

s1012:建立新的主节点与各个从节点之间的主从复制关系,完成切换备份节点为新的主节点的操作。

在实际应用中,具体的,如图6所示,上述方法还可以包括:

s102:在备份节点被切换为新的主节点后,新建一个备份节点。

在实际应用中,具体的,如图7所示,上述在备份节点被切换为新的主节点后,新建一个备份节点的步骤,可以包括:

s1021:在备份节点被切换为新的主节点后,创建一个节点;

s1022:建立新的主节点与所创建节点之间的主从复制关系,完成新建一个备份节点的操作。

与现有技术相比,本实施例提供的方案中,在主节点发生故障时,备份节点被切换为新的主节点,而主从服务系统中的任意一个从节点均可以正常的提供数据读取服务;所以在主节点故障恢复的过程中,从节点提供数据读取服务的能力没有受到任何影响;同时,该过程中仅需要切换备份节点为新的主节点,操作过程简单,不需要整个主从服务系统进行大量的调整。

相应于系统实施例,本发明实施例还提供了一种主节点故障恢复装置,应用于图1~3所示任一种主从服务系统中的控制器,所述装置包括:

切换模块,用于在感知到所述主节点发生故障时,切换所述备份节点为新的主节点。

在实际应用中,具体的,所述主从服务系统还可以包括请求转发器,所述请求转发器中记录有第一虚拟ip地址与主节点mac地址的目标对应关系,

所述请求转发器,用于在接收到目的ip地址为第一虚拟ip地址的数据写入请求后,根据本地记录的所述目标对应关系,将所述数据写入请求转发给主节点;

如图8所示,所述切换模块可以包括:

更新子模块1101,用于在感知到所述主节点发生故障时,更新所述目标对应关系中所述第一虚拟ip地址对应的mac地址为所述备份节点的mac地址;

第一建立子模块1102,用于建立新的主节点与各个从节点之间的主从复制关系,完成切换所述备份节点为新的主节点的操作。

在实际应用中,具体的,如图9所示,所述装置还可以包括:

创建模块120,用于在所述备份节点被切换为新的主节点后,新建一个备份节点。

在实际应用中,具体的,如图10所示,所述创建模块,可以包括:

创建子模块1201,用于在所述备份节点被切换为新的主节点后,创建一个节点;

第二建立子模块1202,用于建立新的主节点与所创建节点之间的主从复制关系,完成新建一个备份节点的操作。

与现有技术相比,本实施例提供的方案中,在主节点发生故障时,备份节点被切换为新的主节点,而主从服务系统中的任意一个从节点均可以正常的提供数据读取服务;所以在主节点故障恢复的过程中,从节点提供数据读取服务的能力没有受到任何影响;同时,该过程中仅需要切换备份节点为新的主节点,操作过程简单,不需要整个主从服务系统进行大量的调整。

相应于图5~7所示的任一种主节点故障恢复方法,本发明实施例还提供了一种电子设备,所述电子设备为主从服务系统中的控制器,如图11所示,包括处理器410、通信接口420、存储器430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信,

存储器430,用于存放计算机程序;

处理器410,用于执行存储器430上所存放的程序时,实现如下步骤:

在感知到主节点发生故障时,切换备份节点为新的主节点。

关于该方法各个步骤的具体实现以及相关解释内容可以参见上述的方法实施例对应的系统实施例,在此不做赘述。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

与现有技术相比,本实施例提供的方案中,在主节点发生故障时,备份节点被切换为新的主节点,而主从服务系统中的任意一个从节点均可以正常的提供数据读取服务;所以在主节点故障恢复的过程中,从节点提供数据读取服务的能力没有受到任何影响;同时,该过程中仅需要切换备份节点为新的主节点,操作过程简单,不需要整个主从服务系统进行大量的调整。

相应于前述主节点故障恢复方法,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现图5~7所示的任一种主节点故障恢复方法所述的方法步骤。

与现有技术相比,本实施例提供的方案中,在主节点发生故障时,备份节点被切换为新的主节点,而主从服务系统中的任意一个从节点均可以正常的提供数据读取服务;所以在主节点故障恢复的过程中,从节点提供数据读取服务的能力没有受到任何影响;同时,该过程中仅需要切换备份节点为新的主节点,操作过程简单,不需要整个主从服务系统进行大量的调整。

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

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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