Pacemaker群集存储+ DRBD(双主)+ ctdb

早上好,哈布罗夫斯克。 有一个任务-使用pacamaker + drbd(在双主模式下)+ clvmd + ctdb部署容错高可用性存储,该存储将安装在服务器上。 我将保留我第一次接触所有这些工具的资格,并乐于批评和补充/更正。 在Internet上,没有针对该捆绑软件的专门说明,或者信息已过时。 目前,这是可行的,但是有一个问题的解决方案,我希望在不久的将来能找到。 除非另有说明,否则所有操作都必须在两个节点上执行。

让我们开始吧。 我们在CentOS 7上有两个虚拟机。

1)为了可靠性,将它们介绍给/ etc / hosts

192.168.0.1 node1 192.168.0.2 node2 

2)标准存储库中没有DRBD,因此您需要连接第三方存储库。

 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 

3)安装drbd版本8.4(在双主要模式下我无法获得9.0)

 yum install -y kmod-drbd84 drbd84-utils 

4)在启动时激活并启用drbd内核模块

 modprobe drbd echo drbd > /etc/modules-load.d/drbd.conf 

5)为资源drbd /etc/drbd.d/r0.res创建配置文件

 resource r0 { protocol C; device /dev/drbd0; meta-disk internal; disk /dev/sdb; net { allow-two-primaries; } disk { fencing resource-and-stonith; } handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh"; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; } 

6)禁用drbd单元(稍后由起搏器负责),为drbd磁盘创建元数据,增加资源

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

7)在第一个节点上,将资源设为主资源

 drbdadm primary --force r0 

8)放置起搏器

 yum install -y pacemaker pcs resource-agents 

9)为用户组设置密码以在节点上进行授权

 echo CHANGEME | passwd --stdin hacluster 

10)在两个节点上运行起搏器

 systemctl enable pcsd systemctl start pcsd 

11)登录到集群。 从这一阶段开始,我们在一个节点上进行所有操作

 pcs cluster auth node1 node2 -u hacluster 

12)创建一个名为samba_cluster的集群

 pcs cluster setup --force --name samba_cluster node1 node2 

13)激活节点

 pcs cluster enable --all pcs cluster start --all 

14)由于我们将虚拟机作为服务器,因此我们关闭了STONITH机制

 pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore 

15)创建VIP

 pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=24 op monitor interval=60s 

16)创建一个drbd资源

 pcs cluster cib drbd_cfg pcs -f drbd_cfg resource create DRBD ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s pcs -f drbd_cfg resource master DRBDClone DRBD master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true interleave=true pcs cluster cib-push drbd_cfg 

17)安装clvm所需的软件包并准备clvm

 yum install -y lvm2-cluster gfs2-utils /sbin/lvmconf --enable-cluster 

18)将dlm和clvd资源添加到起搏器

 pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs constraint colocation add clvmd-clone with dlm-clone 

19)此时,启动clvmd和dlm应该会引发错误。 我们转到网络界面起搏器192.168.0.1:2224 。 如果群集未出现,则将其添加到“现有的已添加”。 接下来,转到参考资料-dlm-可选参数,并设置值allow_stonith_disabled = true

20)我们设置资源加载队列

 pcs constraint order start DRBDClone then dlm-clone pcs constraint order start dlm-clone then clvmd-clone 

21)禁止LVM写入缓存并清除它。 在两个节点上

 sed -i 's/write_cache_state = 1/write_cache_state = 0/' /etc/lvm/lvm.conf rm /etc/lvm/cache/* 

22)我们编辑/etc/lvm/lvm.conf,这样lvm不会看到/ dev / sdb。 在两个节点上

 # This configuration option has an automatic default value. # filter = [ "a|.*/|" ] filter = [ "r|^/dev/sdb$|" ] 

23)创建一个CLVM分区。 我们只做一个音符

 $ vgcreate -Ay -cy cl_vg /dev/drbd0 Physical volume "/dev/drbd0" successfully created. Clustered volume group "cl_vg" successfully created $ lvcreate -l100%FREE -n r0 cl_vg Logical volume "r0" created. 

24)我们在gfs2中标记该部分

 mkfs.gfs2 -j2 -p lock_dlm -t drbd-gfs2:r0 /dev/cl_vg/r0 

25)接下来,在起搏器中添加此部分的安装,并告诉它在clvmd之后启动

 pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cl_vg/r0" directory="/mnt/" fstype="gfs2" --clone pcs constraint order start clvmd-clone then fs-clone 

26)现在轮到ctdb了,它将运行samba

 yum install -y samba ctdb cifs-utils 

27)编辑配置/etc/ctdb/ctdbd.conf

 CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" CTDB_NODES=/etc/ctdb/nodes CTDB_MANAGES_SAMBA=yes CTDB_LOGGING=file:/var/log/ctdb.log CTDB_DEBUGLEVEL=NOTICE 

28)创建一个带有节点列表的文件。 注意! 在节点列表中的每个IP之后,都应存在换行符。 否则,该节点将在初始化期间失败。

 cat /etc/ctdb/nodes 192.168.0.1 192.168.0.2 

29)添加到配置/etc/samba/smb.conf

 [global] clustering = yes private dir = /mnt/ctdb lock directory = /mnt/ctdb idmap backend = tdb2 passdb backend = tdbsam [test] comment = Cluster Share path = /mnt browseable = yes writable = yes 

30)最后,创建ctdb资源并指示应在之后加载

 pcs constraint order start fs-clone then samba 

现在,关于我尚未决定的问题。 如果重新启动节点,那么整个集群将崩溃,因为drbd需要时间来激活/ dev / drbd0。 DLM无法看到该分区,因为该分区尚未激活并且无法启动,等等。 解决方法是手动激活分区并重新启动起搏器资源

 vgchage -ay pcs resource refresh 

Source: https://habr.com/ru/post/zh-CN435906/


All Articles