원본출처 : http://www.unixarena.com/2016/01/rhel7-configuring-gfs2-on-pacemakercorosync-cluster.html
이 기사에서는 두 개의 클러스터 노드간에 GFS2 파일 시스템을 구성하는 방법에 대해 간략하게 설명합니다. GFS2는 클러스터 파일 시스템이며 한 번에 둘 이상의 서버에 마운트 될 수 있음을 알고 있습니다. 여러 서버가 동일한 파일 시스템을 마운트 할 수 있으므로 DLM (Dynamic Lock Manager)을 사용하여 데이터 손상을 방지합니다. GFS2에는 구성 및 관리 할 수있는 클러스터 제품군이 필요합니다. RHEL 7에서 Pacemaker / corosync는 클러스터 인프라를 제공합니다. GFS2는 Linux 커널 파일 시스템 인터페이스 (VFS 계층)와 직접 인터페이스하는 기본 파일 시스템입니다. Red Hat은 고 가용성 추가 기능 (클러스터)에서만 구현 된 GFS2 파일 시스템의 사용을 지원합니다.
다음은 두 노드 클러스터 (Pacemaker) 사이에서 GFS2를 구성하기위한 활동 목록입니다.
[root@Node2-LAB ~]# pcs status Cluster name: GFSCLUS Last updated: Thu Jan 21 18:00:25 2016 Last change: Wed Jan 20 16:12:24 2016 via cibadmin on Node1 Stack: corosync Current DC: Node1 (1) - partition with quorum Version: 1.1.10-29.el7-368c726 2 Nodes configured 5 Resources configured Online: [ Node1 Node2 ] Full list of resources: xvmfence (stonith:fence_xvm): Started Node1 PCSD Status: Node1: Online Node2: Online Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled [root@Node2-LAB ~]#
1. 두 클러스터 노드에 모두 로그인하고 gfs2 및 lvm2 클러스터 패키지를 설치합니다.
[root@Node2-LAB ~]# yum -y install gfs2-utils lvm2-cluster Loaded plugins: product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Package gfs2-utils-3.1.6-13.el7.x86_64 already installed and latest version Package 7:lvm2-cluster-2.02.105-14.el7.x86_64 already installed and latest version Nothing to do [root@Node2-LAB ~]# ssh Node1 yum -y install gfs2-utils lvm2-cluster Loaded plugins: product-id, subscription-manager Package gfs2-utils-3.1.6-13.el7.x86_64 already installed and latest version Package 7:lvm2-cluster-2.02.105-14.el7.x86_64 already installed and latest version Nothing to do [root@Node2-LAB ~]#
1. 두 클러스터 ndoes에서 LVM에 대해 클러스터 된 잠금을 활성화합니다.
[root@Node2-LAB ~]# lvmconf --enable-cluster [root@Node2-LAB ~]# ssh Node1 lvmconf --enable-cluster [root@Node2-LAB ~]# cat /etc/lvm/lvm.conf |grep locking_type |grep -v "#" locking_type = 3 [root@Node2-LAB ~]#
2. 클러스터 노드를 리부팅합니다.
1. 클러스터 노드 중 하나에 로그인하십시오.
2. DLM 및 CLVMD의 복제 자원을 만듭니다. 복제 옵션을 사용하면 리소스가 두 노드에서 모두 실행될 수 있습니다.
[root@Node1-LAB ~]# pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true [root@Node1-LAB ~]# pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true
3. 클러스터의 상태를 확인하십시요
[root@Node1-LAB ~]# pcs status Cluster name: GFSCLUS Last updated: Thu Jan 21 18:15:48 2016 Last change: Thu Jan 21 18:15:38 2016 via cibadmin on Node1 Stack: corosync Current DC: Node2 (2) - partition with quorum Version: 1.1.10-29.el7-368c726 2 Nodes configured 5 Resources configured Online: [ Node1 Node2 ] Full list of resources: xvmfence (stonith:fence_xvm): Started Node1 Clone Set: dlm-clone [dlm] Started: [ Node1 Node2 ] Clone Set: clvmd-clone [clvmd] Started: [ Node1 Node2 ] PCSD Status: Node1: Online Node2: Online Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled [root@Node1-LAB ~]#
리소스가 두 노드 모두에서 온라인임을 확인할 수 있습니다.
1. 리소스 순서를 구성하십시오 (기동 순서)
[root@Node1-LAB ~]# pcs constraint order start dlm-clone then clvmd-clone Adding dlm-clone clvmd-clone (kind: Mandatory) (Options: first-action=start then-action=start) [root@Node1-LAB ~]#
2. 리소스 코로케이션을 구성하십시오
[root@Node1-LAB ~]# pcs constraint colocation add clvmd-clone with dlm-clone [root@Node1-LAB ~]#
3. 제한 조건을 확인하십시오.
[root@Node1-LAB ~]# pcs constraint Location Constraints: Ordering Constraints: start dlm-clone then start clvmd-clone Colocation Constraints: clvmd-clone with dlm-clone [root@Node1-LAB ~]#
1. 클러스터 노드 중 하나에 로그인하고 필요한 LVM 객체를 만듭니다.
2. 이 설정에서 /dev/sda는 두 노드 사이의 공유 LUN입니다.
3. 새 볼륨 그룹을 만듭니다.
[root@Node1-LAB ~]# vgcreate -Ay -cy gfsvg /dev/sda Physical volume "/dev/sda" successfully created Clustered volume group "gfsvg" successfully created [root@Node1-LAB ~]# [root@Node1-LAB kvmpool]# vgs VG #PV #LV #SN Attr VSize VFree gfsvg 1 1 0 wz--nc 996.00m 96.00m rhel 1 2 0 wz--n- 7.51g 0 [root@Node1-LAB kvmpool]#
4. 논리 볼륨을 만듭니다.
[root@Node1-LAB ~]# lvcreate -L 900M -n gfsvol1 gfsvg Logical volume "gfsvol1" created [root@Node1-LAB ~]# [root@Node1-LAB kvmpool]# lvs -o +devices gfsvg LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert Devices gfsvol1 gfsvg -wi-ao---- 900.00m /dev/sda(0) [root@Node1-LAB kvmpool]#
5. 새 볼륨에 파일 시스템을 만듭니다.
[root@Node1-LAB ~]# mkfs.gfs2 -p lock_dlm -t GFSCLUS:gfsvolfs -j 3 /dev/gfsvg/gfsvol1 /dev/gfsvg/gfsvol1 is a symbolic link to /dev/dm-2 This will destroy any data on /dev/dm-2 Are you sure you want to proceed? [y/n]y Device: /dev/gfsvg/gfsvol1 Block size: 4096 Device size: 0.88 GB (230400 blocks) Filesystem size: 0.88 GB (230400 blocks) Journals: 2 Resource groups: 4 Locking protocol: "lock_dlm" Lock table: "GFSCLUS:gfsvolfs" UUID: 8dff8868-3815-d43c-dfa0-f2a9047d97a2 [root@Node1-LAB ~]#
GFSCLUS - 클러스터 이름
gfsvolfs - 파일 시스템 이름
“-j 3”=Journal- 두 노드가 액세스합니다. 저널 갯수인데 노드수 + 1 권장 (즉 2노드라면 3)
1. 클러스터 노드 중 하나에 로그인하십시오.
2. GFS2 파일 시스템 용 새 클러스터 리소스를 만듭니다.
[root@Node1-LAB ~]# pcs resource create gfsvolfs_res Filesystem device="/dev/gfsvg/gfsvol1" directory="/kvmpool" fstype="gfs2" options="noatime,nodiratime" op monitor interval=10s on-fail=fence clone interleave=true [root@Node1-LAB ~]#
3. 볼륨 상태를 확인하십시오. 두 클러스터 노드에 모두 마운트해야합니다.
[root@Node1-LAB ~]# df -h /kvmpool Filesystem Size Used Avail Use% Mounted on /dev/mapper/gfsvg-gfsvol1 900M 259M 642M 29% /kvmpool [root@Node1-LAB ~]# ssh Node2 df -h /kvmpool Filesystem Size Used Avail Use% Mounted on /dev/mapper/gfsvg-gfsvol1 900M 259M 642M 29% /kvmpool [root@Node1-LAB ~]#
4. 리소스 순서 및 코로케이션을 구성하십시오.
[root@Node1-LAB ~]# pcs constraint order start clvmd-clone then gfsvolfs_res-clone Adding clvmd-clone gfsvolfs_res-clone (kind: Mandatory) (Options: first-action=start then-action=start) [root@Node1-LAB ~]# pcs constraint order Ordering Constraints: start clvmd-clone then start gfsvolfs_res-clone start dlm-clone then start clvmd-clone [root@Node1-LAB ~]# pcs constraint colocation add gfsvolfs_res-clone with clvmd-clone [root@Node1-LAB ~]# pcs constraint colocation Colocation Constraints: clvmd-clone with dlm-clone gfsvolfs_res-clone with clvmd-clone [root@Node1-LAB ~]#
5. 두 노드 모두 읽기 / 쓰기 모드에서 동일한 파일 시스템을 볼 수 있습니다.
[root@Node1-LAB ~]# cd /kvmpool/ [root@Node1-LAB kvmpool]# ls -lrt total 0 [root@Node1-LAB kvmpool]# touch test1 test2 test3 [root@Node1-LAB kvmpool]# ls -lrt total 12 -rw-r--r-- 1 root root 0 Jan 21 18:38 test1 -rw-r--r-- 1 root root 0 Jan 21 18:38 test3 -rw-r--r-- 1 root root 0 Jan 21 18:38 test2 [root@Node1-LAB kvmpool]# ssh Node2 ls -lrt /kvmpool/ total 12 -rw-r--r-- 1 root root 0 Jan 21 18:38 test1 -rw-r--r-- 1 root root 0 Jan 21 18:38 test3 -rw-r--r-- 1 root root 0 Jan 21 18:38 test2 [root@Node1-LAB kvmpool]#
RHEL 7 클러스터 노드에서 GFS2를 성공적으로 구성했습니다.
No Quorum Policy 설정 :
GFS2를 사용할 때는 no-quorum-policy 를 구성해야합니다 . freeze 로 설정한다면 시스템이 정족수를 잃어 버리면 정족수가 회복 될 때까지 시스템이 아무 것도 할수 없게 됩니다. 이렇게 해야지만 비정상 상태에서 데이터 유실을 방지 할 수 있습니다.
[root@Node1-LAB ~]# pcs property set no-quorum-policy=freeze [root@Node1-LAB ~]#
OCFS2 (Oracle Cluster File System 2)는 Red Hat Enterprise Linux에서 실행될 수 있지만 Red Hat에서는 출하, 유지 관리 또는 지원하지 않습니다.