设置KVM DRBD群集文件系统Pacemaker CentOS 8

时间:2020-01-09 10:39:45  来源:igfitidea点击:

在本文中,将介绍在RHEL/CentOS 8中使用" Pacemaker 2.0"来配置DRBD群集文件系统的分步教程。
我们将在本文中介绍以下主题:

  • 设置DRBD群集文件系统

  • 将DRBD添加为主/从资源

  • 将DRBD添加为高可用性资源

  • 验证群集故障转移

准备工作

我希望我们熟悉高可用性群集体系结构和基本术语。

以下是在RHEL/CentOS 8中使用Pacemaker设置DRBD群集文件系统之前,必须按提供的顺序执行的强制性"前提条件"。

安装KVM

使用RHEL/CentOS 8启动物理服务器,并在物理Linux服务器上安装KVM

创建KVM虚拟机

由于我们正在使用LVM虚拟机创建DRBD群集文件系统,因此我们必须创建多个KVM虚拟机。

我们可以使用以下任何一种方法来创建KVM虚拟机:Cockpit Web控制台GUI虚拟管理器(不建议使用RHEL/CentOS 8启动)virt-install命令行工具

设置KVM高可用性集群

由于我们打算设置DRBD群集文件系统,因此我们需要一个高可用性群集。
因此,我们必须在RHEL/CentOS 8 Linux服务器上配置KVM HA群集

安装和配置DRBD

接下来,我们需要在这些KVM虚拟机上安装和配置DRBD(分布式复制块设备)以设置Linux磁盘复制。

一旦我们具有有效的DRBD配置,则只有我们可以将该配置用于HA群集上的DRBD群集文件系统。

实验室环境

我将使用已安装和配置DRBD存储的现有KVM高可用性群集

如何配置DRBD群集文件系统?

我们可以通过多种方式将DRBD添加到高可用性群集中

  • 将DRBD添加为后台服务

  • 配置主/从DRBD资源

  • 配置高可用性DRBD资源

我将在本DRBD教程中分享所有这些方案的详细示例。

方法1:在起搏器群集中将DRBD用作后台服务

在本节中,我们将看到使用"自动DRBD存储看起来就像本地存储";因此,通过将挂载点指向DRBD可以将其集成到Pacemaker集群中。

1.1:自动升级的DRBD配置

首先,我们将使用DRBD的"自动升级"功能,以便DRBD在需要时自动将其设置为"主要"。
这可能适用于所有资源,因此在公共部分中设置默认值是有意义的:

将此添加到我们现有的/etc/drbd.d/global_common.conf中,如下所示:

global {
 usage-count no;
}
common {
  options {
    auto-promote yes;
 }
 net {
  protocol C;
 }
}

接下来,在"所有群集节点"之间手动复制此文件。

[root@centos8-2 ~]# scp /etc/drbd.d/global_common.conf centos8-3:/etc/drbd.d/
[root@centos8-2 ~]# scp /etc/drbd.d/global_common.conf centos8-4:/etc/drbd.d/

执行drbdadm调整以刷新所有集群节点上的drbd配置`

# drbdadm adjust <resource>

1.2:创建DRBD群集文件系统资源

接下来,我们将为DRBD群集文件系统创建心跳资源,我已经解释了此命令各个字段的含义。

[root@centos8-2 ~]# pcs resource create fs_drbd ocf:heartbeat:Filesystem device=/dev/drbd1 directory=/share fstype=ext4

1.3:验证DRBD资源和设备状态

接下来检查DRBD资源状态

[root@centos8-2 ~]# pcs resource status
 ClusterIP      (ocf::heartbeat:IPaddr2):       Started centos8-4
 fs_drbd        (ocf::heartbeat:Filesystem):    Started centos8-2

我们的DRBD群集文件系统已在centos8-2群集节点上成功启动。

在" centos8-2"上,我们可以检查DRBD状态,它显示"主要",而其他"两个集群节点作为次要"

[root@centos8-2 ~]# drbdadm status drbd1
drbd1 role:Primary
  disk:UpToDate
  centos8-3.example.com role:Secondary
    peer-disk:UpToDate
  centos8-4.example.com role:Secondary
    peer-disk:UpToDate

DRBD设备也安装在" centso8-2"集群节点上

[root@centos8-2 ~]# df -h /share/
Filesystem      Size  Used Avail Use% Mounted on
/dev/drbd1      2.0G  6.0M  1.9G   1% /share

1.4:验证DRBD故障转移

接下来,我们将执行DRBD故障转移以验证我们的DRBD群集文件系统。
由于资源在centos8-2上处于活动状态,因此我将使该KVM群集节点成为备用节点。

[root@centos8-2 ~]# pcs node standby centos8-2

接下来,检查DRBD群集文件系统资源的状态。
它已在不同的KVM群集节点(即centos8-3)上成功启动。
因此我们的DRBD故障转移按预期工作

[root@centos8-2 ~]# pcs resource status
 ClusterIP      (ocf::heartbeat:IPaddr2):       Started centos8-4
 fs_drbd        (ocf::heartbeat:Filesystem):    Started centos8-3

我们可以验证相同

[root@centos8-3 ~]# df -h /share/
Filesystem      Size  Used Avail Use% Mounted on
/dev/drbd1      2.0G  6.0M  1.9G   1% /share

drbdadm命令还显示centos8-3为主要对象

[root@centos8-3 ~]# drbdadm status drbd1
drbd1 role:Primary
  disk:UpToDate
  centos8-2.example.com role:Secondary
    peer-disk:UpToDate
  centos8-4.example.com role:Secondary
    peer-disk:UpToDate

方法2:将DRBD添加为PCS主/从群集资源

2.1:创建DRBD克隆资源

  • 接下来,我们将使用KVM群集中的Clone资源将DRBD存储添加为Master/Slave。

  • 我们将"保留我们先前创建的集群文件系统资源",因为其中我们需要将其用于主/从配置

  • 由于我们有一个"三个节点KVM群集",因此我将" clone-max"设置为3,因此我们可以根据环境更改这些值

提示:

" pcs resource master"已被弃用,并且在RHEL 8中使用Pacemaker 2.0将主/从资源的名称更改为可升级的克隆资源,并因此更改了某些命令语法。
有关更多详细信息,请检查:如何在Pacemaker群集中创建可升级的克隆资源?

[root@centos8-2 ~]# pcs resource create web_drbd ocf:linbit:drbd drbd_resource=drbd1 promotable promoted-max=1 promoted-node-max=1 clone-max=3 clone-node-max=1 notify=true

其中我们使用我们的DRBD资源创建了一个"可推广资源" web_drbd。
我已经解释了此命令各个字段的含义。

2.2:验证DRBD资源和设备状态

检查DRBD资源状态

[root@centos8-2 ~]# pcs resource status
 ClusterIP      (ocf::heartbeat:IPaddr2):       Started centos8-4
 fs_drbd        (ocf::heartbeat:Filesystem):    Started centos8-3
 Clone Set: web_drbd-clone [web_drbd] (promotable)
     Masters: [ centos8-3 ]
     Slaves: [ centos8-2 centos8-4 ]

现在,我们有一个主服务器,其中运行web_drbd-clone资源,而其他两个集群节点是从属服务器。

drbdadm显示相同的状态,即centos8-3是我们的primary服务器

[root@centos8-2 ~]# drbdadm status drbd1
drbd1 role:Secondary
  disk:UpToDate
  centos8-3.example.com role:Primary
    peer-disk:UpToDate
  centos8-4.example.com role:Secondary
    peer-disk:UpToDate

要获取"克隆资源"的更多详细信息

[root@centos8-2 ~]# pcs resource config web_drbd-clone
 Clone: web_drbd-clone
  Meta Attrs: clone-max=3 clone-node-max=1 notify=true promotable=true promoted-max=1 promoted-node-max=1
  Resource: web_drbd (class=ocf provider=linbit type=drbd)
   Attributes: drbd_resource=drbd1
   Operations: demote interval=0s timeout=90 (web_drbd-demote-interval-0s)
               monitor interval=20 role=Slave timeout=20 (web_drbd-monitor-interval-20)
               monitor interval=10 role=Master timeout=20 (web_drbd-monitor-interval-10)
               notify interval=0s timeout=90 (web_drbd-notify-interval-0s)
               promote interval=0s timeout=90 (web_drbd-promote-interval-0s)
               reload interval=0s timeout=30 (web_drbd-reload-interval-0s)
               start interval=0s timeout=240 (web_drbd-start-interval-0s)
               stop interval=0s timeout=100 (web_drbd-stop-interval-0s)

2.3:配置资源约束

希望我们熟悉资源约束。

现在,DRBD克隆资源(web_drbd-clone)和DRBD群集文件系统资源(fs_drbd)都是独立的。

我们必须确保"两个服务都已链接"

[root@centos8-2 ~]# pcs constraint colocation add fs_drbd with web_drbd-clone INFINITY with-rsc-role=Master

同样,`DRBD克隆服务必须在启动DRBD群集文件系统服务之前首先启动。

[root@centos8-2 ~]# pcs constraint order promote web_drbd-clone then start fs_drbd
Adding web_drbd-clone fs_drbd (kind: Mandatory) (Options: first-action=promote then-action=start)

检查"适用约束"列表

[root@centos8-2 ~]# pcs constraint show
Location Constraints:
Ordering Constraints:
  promote web_drbd-clone then start fs_drbd (kind:Mandatory)
Colocation Constraints:
  fs_drbd with web_drbd-clone (score:INFINITY) (with-rsc-role:Master)
Ticket Constraints:

2.4:验证DRBD故障转移

由于我们的DRBD群集文件系统和克隆资源在centos8-3上运行,因此我将该群集节点设置为`standby'以验证DRBD故障转移

[root@centos8-2 ~]# pcs node standby centos8-3

验证集群资源状态

[root@centos8-2 ~]# pcs resource status
 ClusterIP      (ocf::heartbeat:IPaddr2):       Started centos8-4
 fs_drbd        (ocf::heartbeat:Filesystem):    Started centos8-2
 Clone Set: web_drbd-clone [web_drbd] (promotable)
     Masters: [ centos8-2 ]
     Slaves: [ centos8-4 ]
     Stopped: [ centos8-3 ]

因此,正如预期的那样,我们的DRBD资源已经迁移到了centso8-2集群节点,而centos8-3被标记为已停止

我们也可以使用drbdadm来验证这些资源状态。
因此,我们的DRBD故障转移按预期工作。

[root@centos8-2 ~]# drbdadm status drbd1
drbd1 role:Primary
  disk:UpToDate
  centos8-3.example.com connection:Connecting
  centos8-4.example.com role:Secondary
    peer-disk:UpToDate

由于我们的centos8-3被标记为stopped,因此drbdadm无法连接到该群集节点。

一旦我们的KVM群集节点centos8-3变为活动状态,drbdadm将再次重新建立连接。

我会将" centos8-3"的状态更改为"有效"。

[root@centos8-2 ~]# pcs node unstandby centos8-3

我们将集群节点" centos8-3"的状态更改为活动状态,我们看到" drbdadm"已成功地与" centos8-3"重新建立了连接。

[root@centos8-2 ~]# drbdadm status drbd1
drbd1 role:Primary
  disk:UpToDate
  centos8-3.example.com role:Secondary
    peer-disk:UpToDate
  centos8-4.example.com role:Secondary
    peer-disk:UpToDate

方法3:将DRBD添加为高可用性资源

  • 高可用性起搏器群集中的克隆资源是指可以同时在多个节点(通常在所有节点上)上运行的资源。

  • 这对于启动其他高可用性或者负载平衡的资源所需的守护程序(例如,dlm_controld(通过"受控"资源),clvmd和cmirrord(通过clvm)资源)很有用。

  • 尽管对于DRBD群集,这并不是很有用,因为在某一时间该资源仅在一个KVM群集节点上处于活动状态

我将"删除现有的DRBD资源"以演示此示例

[root@centos8-2 ~]# pcs resource delete fs_drbd
Attempting to stop: fs_drbd... Stopped
[root@centos8-2 ~]# pcs resource delete web_drbd
Attempting to stop: web_drbd... Stopped

3.1:创建DRBD克隆资源

在此示例中,我添加了"单个主节点,最多包含3个克隆节点",因为我们有一个3节点的KVM HA群集。
资源名称为" web-drbd"

创建一个drbd clone资源。
我已经解释了此命令各个字段的含义。

[root@centos8-2 ~]# pcs resource create web_drbd ocf:linbit:drbd drbd_resource=drbd1  clone master-max=1 master-node-max=1 clone-max=3 clone-node-max=1 notify=true

接下来,我们将像在前面的示例中一样创建DRBD群集文件系统。

[root@centos8-2 ~]# pcs resource create fs_drbd ocf:heartbeat:Filesystem device=/dev/drbd1 directory=/share fstype=ext4

3.2:验证DRBD资源和设备状态

检查群集资源状态,以确保两个资源都已成功启动

[root@centos8-2 ~]# pcs resource status
 ClusterIP      (ocf::heartbeat:IPaddr2):       Started centos8-4
 Clone Set: web_drbd-clone [web_drbd]
     Started: [ centos8-2 centos8-3 centos8-4 ]
 fs_drbd        (ocf::heartbeat:Filesystem):    Started centos8-2

由于DRBD群集文件系统在centos8-2上运行,因此将其视为Primary

[root@centos8-2 ~]# drbdadm status drbd1
drbd1 role:Primary
  disk:UpToDate
  centos8-3.example.com role:Secondary
    peer-disk:UpToDate
  centos8-4.example.com role:Secondary
    peer-disk:UpToDate

3.3:配置资源约束

希望我们熟悉资源约束。

我们将像配置主/从配置一样进行"配置约束"

我们将链接两个集群资源,以确保它们在同一集群节点上启动

[root@centos8-2 ~]# pcs constraint colocation add fs_drbd with web_drbd-clone

克隆资源必须优先于文件系统资源

[root@centos8-2 ~]# pcs constraint order start web_drbd-clone then fs_drbd
Adding web_drbd-clone fs_drbd (kind: Mandatory) (Options: first-action=start then-action=start)

检查已应用的"约束规则"

[root@centos8-2 ~]# pcs constraint
Location Constraints:
Ordering Constraints:
  start web_drbd-clone then start fs_drbd (kind:Mandatory)
Colocation Constraints:
  fs_drbd with web_drbd-clone (score:INFINITY)
Ticket Constraints:

3.4:验证DRBD故障转移

群集资源已成功启动,因此我们还必须验证DRBD故障转移方案以确保资源高度可用

由于我们的集群资源在centos8-2上运行,因此我们将其设为" standby"。

[root@centos8-2 ~]# pcs node standby centos8-2

接下来检查集群资源状态。
正如预期的那样,我们的DRBD资源已切换到另一个KVM群集节点,并在centos8-3上启动。

[root@centos8-2 ~]# pcs resource status
 ClusterIP      (ocf::heartbeat:IPaddr2):       Started centos8-4
 Clone Set: web_drbd-clone [web_drbd]
     Started: [ centos8-3 centos8-4 ]
     Stopped: [ centos8-2 ]
 fs_drbd        (ocf::heartbeat:Filesystem):    Started centos8-3

同样," centos8-2"的状态被标记为"已停止"

使用drbdadm检查drbd1设备的状态。
其中我们还可以看到drbd1centos8-3视为Primary,而无法连接到centos8-2

[root@centos8-3 ~]# drbdadm status drbd1
drbd1 role:Primary
  disk:UpToDate
  centos8-2.example.com connection:Connecting
  centos8-4.example.com role:Secondary
    peer-disk:UpToDate

让我们将"待机"群集节点恢复为"活动"状态

[root@centos8-2 ~]# pcs node unstandby centos8-2

接下来检查" drbd1"设备的" drbdadm"状态。
一旦群集节点处于活动状态," drbd1"设备便能够"重新连接"到相应的群集节点。
因此,DRBD故障转移正在按预期方式工作。

[root@centos8-2 ~]# drbdadm status drbd1
drbd1 role:Secondary
  disk:UpToDate
  centos8-3.example.com role:Primary
    peer-disk:UpToDate
  centos8-4.example.com role:Secondary
    peer-disk:UpToDate

我们还可以检查是否所有DRDB资源都已考虑到所有群集节点

[root@centos8-2 ~]# pcs resource status
 ClusterIP      (ocf::heartbeat:IPaddr2):       Started centos8-4
 Clone Set: web_drbd-clone [web_drbd]
     Started: [ centos8-2 centos8-3 centos8-4 ]
 fs_drbd        (ocf::heartbeat:Filesystem):    Started centos8-3

因此,现在我们有了使用"三种不同方法"的有效DRBD群集文件系统。