Change The World

沉默是一种力量,嘶吼就不是力量了?

0%

构建 PACEMAKER 集群共享存储 [CLVM + GFS2]

本文主要记录构建 pacemaker 集群的共享存储的学习过程,如有疑问还请查看官方文档,主要内容就是把集群分配的 iscsi 存储使用 clvm + GFS2 进行管理,使得此存储设备成功集群的共享存储

准备

  1. 配置集群,请参考 通过 PACEMAKER 创建高可用集群

  2. ISCSI 共享存储

  3. 所有的集群节点接入 ISCSI 共享存储

安装

  1. 安装 lvm2-cluster 和 gfs2-utils 软件包 [所有节点]
1
# yum install lvm2-cluster gfs2-utils
  1. 将全局 Pacemaker 参数 no_quorum_policy 设置为 freeze
1
# pcs property set no-quorum-policy=freeze

注意

默认情况下会将 no-quorum-policy 值设定为 stop,说明丢失一个仲裁,同时将停止剩余分区中的所有资源。通常这个选项是最安全同时也是最佳选项,但与大多数资源不同,GFS2 需要仲裁功能。丢失仲裁后,使用 GFS2 挂载的应用程序及 GFS2 挂载本身都将正常停止。所有在无仲裁的情况下停止执行资源的尝试都将失败,并最终造成每次丢失仲裁时都 fence 整个集群。

为解决这个问题,您可以在使用 GFS2 时设置 no-quorum-policy=freeze。这意味着丢失仲裁时,重新获得仲裁钱剩余分区不会做任何操作。

  1. 设置 dlm 资源。这是 clvmd 和 GFS2 的必需依赖项 [单节点]
1
# pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true
  1. 执行以下命令以启用集群。此命令将 /etc/lvm/lvm.conf 文件中的 locking_type 参数设置为 3 [所有节点]
1
# lvmconf --enable-cluster
  1. 将 clvmd 设置为集群资源 [单节点]
1
# pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true
  1. 设置 clvmd 和 dlm 依赖项并启动顺序,clvmd 必须在 dlm 之后启动,并且必须与 dlm 在同一节点上运行 [单节点]
1
2
# pcs constraint order start dlm-clone then clvmd-clone
# pcs constraint colocation add clvmd-clone with dlm-clone
  1. 创建集群逻辑卷 [单节点]
1
2
3
# pvcreate /dev/vdb
# vgcreate -Ay -cy cluster_vg /dev/vdb
# lvcreate -L5G -n cluster_lv cluster_vg

注:/dev/vdb iscsi 共享存储

  1. 使用 GFS2 文件系统格式化逻辑卷 [单节点]
1
# mkfs.gfs2 -j2 -p lock_dlm -t rhel7-demo:gfs2-demo /dev/cluster_vg/cluster_lv
  1. 配置 clusterfs 资源 [单节点]
1
# pcs resource create clusterfs Filesystem device="/dev/cluster_vg/cluster_lv" directory="/var/mountpoint" fstype="gfs2" options="noatime" op monitor interval=10s on-fail=fence clone interleave=true
  1. 设置 GFS2 和 clvmd 依赖关系和启动顺序 [单节点]
1
2
# pcs constraint order start clvmd-clone then clusterfs-clone
# pcs constraint colocation add clusterfs-clone with clvmd-clone
  1. 查看资源信息
1
# pcs resource show #查看资源信息
  1. 验证是否按预期安装了 GFS2
1
2
# mount |grep /mnt/gfs2-demo
/dev/mapper/cluster_vg-cluster_lv on /mnt/gfs2-demo type gfs2 (rw,noatime,seclabel)
  1. 扩展 GFS2 文件系统空间
1
2
# lvextend -L +2G /dev/cluster_vg/cluster_lv
# gfs2_grow /var/mountpoint
  1. 添加 GFS2 日志数量
1
# gfs2_jadd -j 1 /var/mountpoint

注:如果节点需要使用此共享存储,必选保证日志数量大于或者等于集群节点,集群节点数小于或等于 GFS2 文件系统日志数

  1. 添加挂载点

完成以上操作后,就已经成功构建了集群的共享存储,具体参数含义还望请参考官方文档介绍

参考

CHAPTER 5. CONFIGURING A GFS2 FILE SYSTEM IN A CLUSTER

第 5 章 配置集群资源

不如请我吃根冰棒吧