RHCA436-基于CentOS8pacemaker+corosync 集群逻辑卷
一、概念
- LVM
普通lVM,当在一个节点创建了LVM,LVM信息是不能实时同步到其他节点的
- HA-LVM
如果格式化的文件系统时ext4或者xfs,则使用HA-LVM,该LVM同时只能再一个节点挂载使用,因为ext4和xfs没有锁机制,如果同时挂载,可能会导致脑裂
- shared-LVM
如果格式化的文件系统时GFS2集群级文件系统,则可以使用CLuster-LVM,可以同时再所有节点挂载使用
二、HA-LVM配置
1.准备工作
[student@workstation ~]$ lab start lvm-ha
2.修改配置文件
vim /etc/lvm/lvm.conf system_id_source = "uname" 说明:用于区分卷组所在的主机
3.创建逻辑卷
pvcreate /dev/mapper/storage1 vgcreate clustervg /dev/mapper/storage1 lvcreate -L 1G -n halv clustervg mkfs.xfs /dev/clustervg/halv
4.创建逻辑卷资源
pcs resource describe LVM-activate pcs resource create halvm LVM-activate vgname=clustervg vg_access_mode=system_id --group halvmfs 说明: vg_access_mode=system_id 表示集群用system_id区分lvm运行哪个节点 lvm systemid
5.创建文件系统资源
pcs resource create xfsfs Filesystem device=/dev/clustervg/halv directory=/halvm fstype=xfs --group=halvmfs
6.查看集群状态
[root@nodea ~]# pcs resource status * Resource Group: halvmfs: * halvm (ocf::heartbeat:LVM-activate): Started nodeb.private.example.com * xfsfs (ocf::heartbeat:Filesystem): Started nodeb.private.example.com
7.查看nodeb节点挂载情况
[root@nodeb ~]# vgs VG #PV #LV #SN Attr VSize VFree clustervg 1 1 0 wz--n- <10.00g <9.00g [root@nodeb ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert halv clustervg -wi-a----- 1.00g [root@nodeb ~]# df -h ... /dev/mapper/clustervg-halv 1014M 40M 975M 4% /halvm
8.测试
[root@nodea ~]# pcs resource move halvmfs [root@nodea ~]# pcs resource status * Resource Group: halvmfs: * halvm (ocf::heartbeat:LVM-activate): Started nodea.private.example.com * xfsfs (ocf::heartbeat:Filesystem): Started nodea.private.example.com [root@nodea ~]# df -h ... /dev/mapper/clustervg-halv 1014M 40M 975M 4% /halvm
9.清除环境
[student@workstation ~]$ lab finish lvm-ha
三、LVM share volume group 配置
1.准备工作
[student@workstation ~]$ lab start lvm-shared
2.在所有节点安装软件包
yum -y install lvm2-lockd dlm dlm: 分布式锁 clvmd:clvmd 守护进程是 CLVM 的核心。clvmd 守护进程在每个集群计算机上运行,并更新 LVM 元数据,让集群的每个计算机上的 LVM 信息都保持一致 设定 clvmd 和 dlm 相依性及启动顺序。必须在 dlm 之后启动clvmd,且必须在 dlm 所在的同一节点中运行。
3.配置集群分布式锁
[root@nodea ~]# pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence --group=locking [root@nodea ~]# pcs resource create lvmlockd ocf:heartbeat:lvmlockd op monitor interval=30s on-fail=fence --group=locking [root@nodea ~]# pcs resource * Resource Group: locking: * dlm (ocf::pacemaker:controld): Started nodea.private.example.com * lvmlockd (ocf::heartbeat:lvmlockd): Started nodea.private.example.com
4.配置clone,让资源运行在集群所有节点
[root@nodea ~]# pcs resource clone locking interleave=true interleave=true, 这个设置为false的时候, constraint的order顺序的受到其他节点的影响, 为true不受其他节点影响 [root@nodea ~]# pcs status --full Full List of Resources: * Clone Set: locking-clone [locking]: * Resource Group: locking:0: * dlm (ocf::pacemaker:controld): Started nodec.private.example.com * lvmlockd (ocf::heartbeat:lvmlockd): Started nodec.private.example.com * Resource Group: locking:1: * dlm (ocf::pacemaker:controld): Started nodeb.private.example.com * lvmlockd (ocf::heartbeat:lvmlockd): Started nodeb.private.example.com * Resource Group: locking:2: * dlm (ocf::pacemaker:controld): Started nodea.private.example.com * lvmlockd (ocf::heartbeat:lvmlockd): Started nodea.private.example.com
5.创建逻辑卷,所有节点都会生效
1.创建pv [root@nodea ~]# pvcreate /dev/mapper/mpatha 2.创建共享的卷组 [root@nodea ~]# vgcreate --share sharevg /dev/mapper/mpatha 3.在其他节点执行 ssh root@nodeb vgchange --lock-start sharevg ssh root@nodec vgchange --lock-start sharevg --lock-start: Start the lockspace of a shared VG in lvmlockd 4.创建一个共享锁的逻辑卷 [root@nodea ~]# lvcreate --activate sy -L 1G -n sharelv1 sharevg
6.创建逻辑卷资源
[root@nodea ~]# pcs resource create sharelvm1 LVM-activate vgname=sharevg lvname=sharelv1 activation_mode=shared vg_access_mode=lvmlockd --group=LVMshared vg_access_mode=system_id HA-LVM vg_access_mode=lvmlockd shared-LVM
7.克隆逻辑卷资源
[root@nodea ~]# pcs resource clone LVMshared interleave=true
8.设置资源先后启动顺序,先启动locking-clone,再启动LVMshared-clone
[root@nodea ~]# pcs constraint order start locking-clone then LVMshared-clone
9.设置两个资源组运行在同一个节点
[root@nodea ~]# pcs constraint colocation add LVMshared-clone with locking-clone [root@nodea ~]# pcs constraint Location Constraints: Ordering Constraints: start locking-clone then start LVMshared-clone (kind:Mandatory) Colocation Constraints: LVMshared-clone with locking-clone (score:INFINITY) Ticket Constraints: [root@nodea ~]# pcs resource status * Clone Set: locking-clone [locking]: * Started: [ nodea.private.example.com nodeb.private.example.com nodec.private.example.com ] * Clone Set: LVMshared-clone [LVMshared]: * Started: [ nodea.private.example.com nodeb.private.example.com nodec.private.example.com ]