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 章 配置集群资源

不如请我吃根冰棒吧