掌桥专利:专业的专利平台
掌桥专利
首页

基于zfs的双机集群高可用的实现方法、装置及计算机设备

文献发布时间:2024-04-18 20:01:23


基于zfs的双机集群高可用的实现方法、装置及计算机设备

技术领域

本发明涉及计算机存储技术领域,特别是涉及一种基于zfs的双机集群高可用的实现方法、装置及计算机设备。

背景技术

现有的存储系统为了提供连续稳定的存储服务,都使用了高可用,高可用指的是通过尽量缩短因日常维护操作和突发的系统崩溃所导致的停机时间,以提高系统和应用的可用性。存储高可用是高可用的一种,能够避免服务器软件或硬件故障而导致的存储业务中断,实现在一台存储服务器故障时另一台服务器可以及时的监测到故障,并接替故障服务器对外提供服务,以达到存储服务不中断的要求。

zfs(zettabyte file system)是一种先进的文件系统,具有许多强大的功能,如数据完整性保护、快照、克隆和可扩展性等。在构建存储系统时,zfs通常被用作底层文件系统,以提供更可靠的数据存储和管理。DRBD是一种基于Linux的软件组件,可在两个或多个网络服务器之间提供块级数据复制。它通过实时同步服务器之间的数据更改,允许创建高可用性存储集群。DRBD通过在群集中的每个服务器上创建块设备,然后使用网络连接将其复制到其他服务器来工作。当在一个服务器上执行写操作时,数据会复制到其他服务器,确保每个服务器始终具有相同的数据。

现有技术中,使用send和receive方法以及将DRBD和zfs结合使用能够实现基于zfs的存储集群的高可用。但是,send和receive方法进行数据复制时需要先将所有数据发送到接收端,然后再进行数据写入,占用了额外的存储空间。另外,在读写带宽达到瓶颈时,end和receive方法以及将DRBD和zfs结合的方式会导致CPU占用率过高,出现同步延迟问题。

发明内容

基于此,有必要针对上述技术问题,提供一种基于zfs的双机集群高可用的实现方法、装置及计算机设备,在实现基于zfs的双机集群高可用的同时,不占用额外存储空间,且没有同步延迟的问题。

第一方面,本发明提供了一种基于zfs的双机集群高可用的实现方法,方法包括以下步骤:

初始化双机集群共享存储环境;

在双机集群的任意一个服务器上基于zfs模块创建存储池,并给存储池设置多主机属性;

将双机集群的两个服务器组成一个集群系统;

在集群系统中添加存储池对应的存储池资源,给存储池资源设置监控周期并将存储池资源托管给集群系统监控;

对双机集群的两个服务器进行心跳监控,当其中一个服务器出现故障时,另一个服务器向集群系统发送故障报告;

集群系统控制没有出现故障的服务器启动存储池资源。

在其中一个实施例中,双机集群的存储设备为共享存储设备,初始化双机集群共享存储环境包括:

将两个服务器分别与共享存储设备直接连接;

在两个服务器上均安装pcs模块、zfs模块、pacemaker模块和corosync模块。

在其中一个实施例中,双机集群的存储设备为非共享存储设备,初始化双机集群共享存储环境包括:

将非共享存储设备与任意存储节点连接;

在存储节点上使用iscsi协议将非共享存储设备的硬盘映射出分别挂载到两个服务器;

在两个服务器上均安装pcs模块、zfs模块、pacemaker模块和corosync模块。

在其中一个实施例中,将双机集群的两个服务器组成一个集群系统为通过任意一个服务器的pcs模块操作同一服务器的pacemaker模块将两个服务器组成一个pacemaker集群系统。

在其中一个实施例中,在集群系统中添加存储池对应的存储池资源,给存储池资源设置监控周期并将存储池资源托管给集群系统监控包括:

通过创建存储池的服务器上的pcs模块执行pcs resource命令在pacemaker集群系统中添加存储池对应的pcs资源;

给pcs资源设置监控周期;

将pcs资源托管给pacemaker集群系统监控。

在其中一个实施例中,对双机集群的两个服务器进行心跳监控,当其中一个服务器出现故障时,另一个服务器向集群系统发送故障报告为:

每个服务器的corosync模块均对两个服务器同时进行心跳监控,当任意一个corosync模块监控到其中一个服务器出现故障时,没有出现故障的服务器的corosync模块向pacemaker集群系统报告另一个服务器故障。

在其中一个实施例中,集群系统控制没有出现故障的服务器启动存储池资源为pacemaker集群系统调用没有出现故障的服务器的pcs模块中的启动命令在没有出现故障的服务器启动pcs资源。

在其中一个实施例中,故障为服务器离线或者存储池资源在服务器启动失败。

第二方面,本发明还提供了一种基于zfs的双机集群高可用的实现装置,装置包括:

初始化模块,用于初始化双机集群共享存储环境;

创建模块,用于在双机集群的任意一个服务器上基于zfs模块创建存储池,并给存储池设置多主机属性;

组成模块,用于将双机集群的两个服务器组成一个集群系统;

添加模块,用于在集群系统中添加存储池对应的存储池资源,给存储池资源设置监控周期并将存储池资源托管给集群系统监控;

监控模块,用于对双机集群的两个服务器进行心跳监控,当其中一个服务器出现故障时,另一个服务器向集群系统发送故障报告;

启动模块,用于集群系统控制没有出现故障的服务器启动存储池资源。

第三方面,还提供了一种计算机设备。计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:

初始化双机集群共享存储环境;

在双机集群的任意一个服务器上基于zfs模块创建存储池,并给存储池设置多主机属性;

将双机集群的两个服务器组成一个集群系统;

在集群系统中添加存储池对应的存储池资源,给存储池资源设置监控周期并将存储池资源托管给集群系统监控;

对双机集群的两个服务器进行心跳监控,当其中一个服务器出现故障时,另一个服务器向集群系统发送故障报告;

集群系统控制没有出现故障的服务器启动存储池资源。

本发明的有益效果是:

(1)本发明通过对双机集群中两个服务器进行心跳监控,集群系统能够在一个服务器出现故障时控制没有出现故障的服务器启动存储池资源,即将存储池资源从出现故障的服务器自动切换到另一个正常服务器,实现基于zfs的双机集群的高可用。

(2)本发明中双机集群的两个服务器共享存储,利用共享存储的方式,可以直接将数据存储到共享存储设备连接的硬盘上,在实现存储高可用时不需要将数据由集群中一个服务器同步至集群的另一服务器,也无需在另一个服务器生成额外的接收副本,不会产生同步延迟,也没有占用额外的存储空间。

附图说明

图1为本发明实施例提供的基于zfs的双机集群高可用的实现方法的流程示意图之一;

图2是本发明实施例提供的一种双机集群共享存储环境的结构示意图;

图3是本发明实施例提供的另一种双机集群共享存储环境的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例提供的基于zfs的双机集群高可用的实现方法、装置及计算机设备,旨在实现不占用额外存储空间,没有兼容性和同步延迟的基于zfs的双机集群高可用的实现。下面将通过实施例并结合附图具体地对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体地实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

需要说明的是,本发明实施例提供的基于zfs的双机集群高可用的实现方法,其执行主体可以是基于zfs的双机集群高可用的实现装置,该基于zfs的双机集群高可用的实现装置可以通过软件、硬件或者软硬件结合的方式实现成为计算机设备的部分或者全部,计算机设备可以是用于基于zfs的双机集群高可用的实现的终端。下述方法实施例中,均以执行主体是计算机设备为例来进行说明。可以理解的是,下述方法实施例提供的基于zfs的双机集群高可用的实现方法,也可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。

在一个实施例中,如图1所示,图1是本发明实施例提供的基于zfs的双机集群高可用的实现方法的流程示意图之一,以该方法应用于计算机设备,包括以下步骤:

S101、初始化双机集群共享存储环境。

具体的,双机集群包括两个服务器和一个存储设备。存储设备可以是共享存储设备也可以是非共享存储设备。双机集群共享存储环境为两个服务器共享一个存储设备。

S102、在双机集群的任意一个服务器上基于zfs模块创建存储池,并给存储池设置多主机属性。给存储池设置多主机属性为两个服务器均可使用该存储池。

S103、将双机集群的两个服务器组成一个集群系统。集群系统是在软件层次方面讲两个服务器组成一个集群。

S104、在集群系统中添加存储池对应的存储池资源,给存储池资源设置监控周期并将存储池资源托管给集群系统监控。

具体的,集群系统能够控制存储池资源的启动、停止和监控。

S105、对双机集群的两个服务器进行心跳监控,当其中一个服务器出现故障时,另一个服务器向集群系统发送故障报告。

本实施例中,故障为服务器离线或者存储池资源在服务器启动失败。

S106、集群系统控制没有出现故障的服务器启动存储池资源。

出现故障的服务器不能完成和集群系统之间的信号传输,所以在一个服务器出现故障时,没有出现故障的服务器向集群系统发送故障报告告知集群系统另一个服务器出现故障了,此时集群系统就会控制没有出现故障的服务器启动存储池资源,以达到存储服务不中断的要求,实现基于zfs的双机集群的高可用。

此外,本实施例中双机集群的两个服务器共享一个存储设备,可以直接将数据存储到共享存储设备连接的硬盘上,在实现存储高可用时不需要将存储池资源数据由集群中一个服务器同步至集群的另一服务器,也无需在另一个服务器生成额外的接收副本,不会产生同步延迟,也没有占用额外的存储空间。

在一个实施例中,如图2所示,图2是本发明实施例提供的一种双机集群的共享存储环境的结构示意图,本实施例中,双机集群的存储设备为共享存储设备,初始化双机集群共享存储环境包括:将两个服务器分别与共享存储设备直接连接;在两个服务器上均安装pcs模块、zfs模块、pacemaker模块和corosync模块。

具体的,在任意一个服务器上安装pcs模块、zfs模块、pacemaker模块和corosync模块时执行的具体代码之一为

#安装软件模块

yuminstall zfs

yuminstall pacemaker corosync pcs

其中,pacemaker模块用于在Linux集群环境中管理和监控集群资源,可以将多个服务器组成一个集群系统。corosync模块能够在Linux集群环境中实现服务器间通信和协调,corosync模块通常与pacemaker模块配合使用,实现对集群资源的监控和管理。pcs模块是一个用于管理pacemaker集群的命令行工具,pcs模块可以配置、启动、停止和监视pacemaker管理和控制的集群。

在一个实施例中,如图3所示,图3是本发明实施例提供的另一种双机集群共享存储环境的结构示意图。本实施例中,双机集群的存储设备为非共享存储设备,初始化双机集群共享存储环境包括:将非共享存储设备与任意存储节点连接;在存储节点上使用iscsi协议将非共享存储设备的硬盘映射出分别挂载到两个服务器;在两个服务器上均安装pcs模块、zfs模块、pacemaker模块和corosync模块。

现有能够实现基于zfs的集群高可用方法中DRBD是一种Linux内核模块,需要在操作系统内核中加载并运行,在不同平台和操作系统之间容易出现兼容性问题。而本发明中,共享存储设备不需要考虑兼容性问题,非共享存储设备可以通过iscsi协议转换为共享存储,iscsi协议可用于各种操作系统,在实现存储高可用时也没有兼容性问题。

在其中一个实施例中,在双机集群的任意一个服务器上基于zfs模块创建存储池之前需要现在该服务器上加载zfs模块,然后创建存储池,再给存储池设置多主机属性。具体的实现代码之一如下:

#加载zfs模块

modprobe zfs

#创建一个zfs存储池

zpool create pool scsi-3000fdcff5a207410scsi-3000f0ae3c6b32fdd

#设置多主机属性

zfs set multihost=on pool。

在其中一个实施例中,将双机集群的两个服务器组成一个集群系统为通过任意一个服务器的pcs模块操作同一服务器的pacemaker模块将两个服务器组成一个pacemaker集群系统。

本实施例中,指定两个服务器分别为服务器A和服务器B,将两个服务器组成一个pacemaker集群系统的实现代码之一为

#配置两个服务器加入集群系统

systemctl start pacemaker

pcs cluster auth nodeA nodeB

pcs cluster setup--name mycluster nodeA nodeB--start--enable。

其中,第一行代码指的是启动pacemaker模块,第二行和第三行代码指的是pcs模块操作pacemaker模块将两个服务器组成一个pacemaker集群系统。

在其中一个实施例中,在集群系统中添加存储池对应的存储池资源,给存储池资源设置监控周期并将存储池资源托管给集群系统监控包括:通过创建存储池的服务器上的pcs模块执行pcs resource命令在pacemaker集群系统中添加存储池对应的pcs资源;给pcs资源设置监控周期;将pcs资源托管给pacemaker集群系统监控。

本实施例的实现代码之一为

#添加zfs存储池资源到pacemaker集群中托管

pcs resource create pool_zfs ocf:heartbeat:zfs

poolname=pool op monitor interval=60s。

其中,ocf:heartbeat:zfs中集成了pcs资源的启动、停止和监控命令。

在其中一个实施例中,对双机集群的两个服务器进行心跳监控,当其中一个服务器出现故障时,另一个服务器向集群系统发送故障报告为:

每个服务器的corosync模块均对两个服务器同时进行心跳监控,当任意一个corosync模块监控到其中一个服务器出现故障时,没有出现故障的服务器的corosync模块向pacemaker集群系统报告另一个服务器故障。

心跳监控的具体实现代码之一为

#使用corosync查看服务器之间的通信状态及健康状态

systemctl start corosync

corosync-quorumtool。

需要说明的是,由于本发明方法针对的是双机集群,如果两个服务器都离线,对应的各种包括心跳监控等服务没有运行环境,不会运行。所以本实施例中心跳监控最多只能监控到一个服务器出现故障。

在其中一个实施例中,集群系统控制没有出现故障的服务器启动存储池资源为pacemaker集群系统调用没有出现故障的服务器的pcs模块中的启动命令在没有出现故障的服务器启动pcs资源。

具体的,启动命令为zpool import pool。

需要说明的是,pacemaker集群系统调用没有出现故障的服务器的pcs模块中的启动命令在没有出现故障的服务器启动pcs资源之后,即存储池资源迁移后,心跳监控持续进行,因为切换后出现故障的服务器可能会进行修复,修复完成后会迁移回去或者当前运行的服务器出现故障后迁移回去,持续监控能够保证基于zfs的双机集群的高可用稳定性。

基于同样的发明构思,本发明实施例还提供了一种基于zfs的双机集群高可用的实现方法的基于zfs的双机集群高可用的实现装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个基于zfs的双机集群高可用的实现装置实施例中的具体限定可以参见上文中对于基于zfs的双机集群高可用的实现方法的限定,在此不再赘述。

在一个实施例中,提供了一种基于zfs的双机集群高可用的实现装置,该装置包括:

初始化模块,用于初始化双机集群共享存储环境;

创建模块,用于在双机集群的任意一个服务器上基于zfs模块创建存储池,并给存储池设置多主机属性;

组成模块,用于将双机集群的两个服务器组成一个集群系统;

添加模块,用于在集群系统中添加存储池对应的存储池资源,给存储池资源设置监控周期并将存储池资源托管给集群系统监控;

监控模块,用于对双机集群的两个服务器进行心跳监控,当其中一个服务器出现故障时,另一个服务器向集群系统发送故障报告;

启动模块,用于集群系统控制没有出现故障的服务器启动存储池资源。

本发明的基于zfs的双机集群高可用的实现装置,在能够实现基于zfs的双机集群高可用的同时不占用额外存储空间,没有兼容性和同步延迟的问题。

基于同样的发明构思,本发明实施例还提供了一种计算机设备。计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:

初始化双机集群共享存储环境;

在双机集群的任意一个服务器上基于zfs模块创建存储池,并给存储池设置多主机属性;

将双机集群的两个服务器组成一个集群系统;

在集群系统中添加存储池对应的存储池资源,给存储池资源设置监控周期并将存储池资源托管给集群系统监控;

对双机集群的两个服务器进行心跳监控,当其中一个服务器出现故障时,另一个服务器向集群系统发送故障报告;

集群系统控制没有出现故障的服务器启动存储池资源。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。

相关技术
  • 一种手性化合物R-(+)-2-甲基-3-苯基-1-丙醇的合成方法
  • 一种(R)-2-(2,5-二氟苯基)吡咯烷或其盐的制备方法
  • 一种(S)-N-(2,5-二(吡啶-4-基-苯基)吡咯烷-2-甲酰胺的制备方法
  • 一种手性2-苯基吡咯烷的合成方法
  • 一种手性2-苯基吡咯烷的合成方法
技术分类

06120116551099