设置KVM DRBD群集文件系统Pacemaker CentOS 8
在本文中,将介绍在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
设备的状态。
其中我们还可以看到drbd1
将centos8-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群集文件系统。