차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

pacemaker_corosync_클러스터에서_gfs2구성 [2017/03/17 14:46] (현재)
koov 만듦
줄 1: 줄 1:
 +====== Pacemaker/​Corosync 클러스터에서 GFS2구성 ======
 +
 +원본출처 : 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를 구성하기위한 활동 목록입니다.
 +
 +  * GFS2 및 lvm2 클러스터 패키지를 설치하십시오.
 +  * LVM에서 클러스터 된 잠금 사용
 +  * 맥박 조정기에 DLM 및 CLVMD 리소스 생성
 +  * 자원의 순서와 코 로케이션을 설정한다.
 +  * LVM 개체 구성 및 GFS2 파일 시스템 만들기
 +  * 논리 볼륨 및 파일 시스템을 페이스 메이커 컨트롤에 추가하십시오. (gfs2는 / etc / fstab을 사용하지 않습니다).
 +
 +===== 구성환경 =====
 +  * RHEL 7.x
 +  * 노드 이름 : Node1 & Node2.
 +  * Fencing / STONITH : GFS2의 필수 사항.
 +  * 공유 LUN "/​dev/​sda"​
 +  * 클러스터 상태 :
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +===== 패키지 설치 =====
 +1. 두 클러스터 노드에 모두 로그인하고 gfs2 및 lvm2 클러스터 패키지를 설치합니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +===== Clustered Locking LVM사용 =====
 +1. 두 클러스터 ndoes에서 LVM에 대해 클러스터 된 잠금을 활성화합니다.
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +2. 클러스터 노드를 리부팅합니다.
 +
 +===== DLM 및 CLVMD 클러스터 리소스 작성 =====
 +1. 클러스터 노드 중 하나에 로그인하십시오.
 +
 +2. DLM 및 CLVMD의 복제 자원을 만듭니다. 복제 옵션을 사용하면 리소스가 두 노드에서 모두 실행될 수 있습니다.
 +<WRAP prewrap>
 +<code bash>
 +[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
 +</​code>​
 +</​WRAP>​
 +
 +3. 클러스터의 상태를 확인하십시요
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +리소스가 두 노드 모두에서 온라인임을 확인할 수 있습니다.
 +
 +===== 리소스 순서 및 코로케이션 =====
 +1. 리소스 순서를 구성하십시오 (기동 순서)
 +
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]# 
 +</​code>​
 +</​WRAP>​
 +
 +2. 리소스 코로케이션을 구성하십시오
 +
 +<WRAP prewrap>
 +<code bash>
 +[root@Node1-LAB ~]# pcs constraint colocation add clvmd-clone with dlm-clone
 +[root@Node1-LAB ~]#
 +</​code>​
 +</​WRAP>​
 +
 +3. 제한 조건을 확인하십시오.
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +===== LVM 객체 구성 =====
 +
 +1. 클러스터 노드 중 하나에 로그인하고 필요한 LVM 객체를 만듭니다.
 +
 +2. 이 설정에서 /dev/sda는 두 노드 사이의 공유 LUN입니다.
 +
 +3. 새 볼륨 그룹을 만듭니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[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]#
 +</​code>​
 +</​WRAP>​
 +
 +4. 논리 볼륨을 만듭니다.
 +<WRAP prewrap>
 +<code bash>
 +[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]#
 +</​code>​
 +</​WRAP>​
 +
 +5. 새 볼륨에 파일 시스템을 만듭니다.
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +GFSCLUS - 클러스터 이름
 +gfsvolfs - 파일 시스템 이름
 +"-j 3"​=Journal- 두 노드가 액세스합니다. 저널 갯수인데 노드수 + 1 권장 (즉 2노드라면 3)
 +
 +===== Pacemaker에 마운트 설정 =====
 +1. 클러스터 노드 중 하나에 로그인하십시오.
 +
 +2. GFS2 파일 시스템 용 새 클러스터 리소스를 만듭니다.
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +3. 볼륨 상태를 확인하십시오. 두 클러스터 노드에 모두 마운트해야합니다.
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +4. 리소스 순서 및 코로케이션을 구성하십시오.
 +<WRAP prewrap>
 +<code bash>
 +[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 ~]#
 +</​code>​
 +</​WRAP>​
 +
 +5. 두 노드 모두 읽기 / 쓰기 모드에서 동일한 파일 시스템을 볼 수 있습니다.
 +<WRAP prewrap>
 +<code bash>
 +[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]#
 +</​code>​
 +</​WRAP>​
 +
 +RHEL 7 클러스터 노드에서 GFS2를 성공적으로 구성했습니다.
 +
 + 
 +===== 참고사항 =====
 +No Quorum Policy 설정 :
 +
 +GFS2를 사용할 때는 no-quorum-policy 를 구성해야합니다 . freeze 로 설정한다면 시스템이 정족수를 잃어 버리면 정족수가 회복 될 때까지 시스템이 아무 것도 할수 없게 됩니다. 이렇게 해야지만 비정상 상태에서 데이터 유실을 방지 할 수 있습니다.
 +<WRAP prewrap>
 +<code bash>
 +[root@Node1-LAB ~]# pcs property set no-quorum-policy=freeze
 +[root@Node1-LAB ~]#
 +</​code>​
 +</​WRAP>​
 +
 +
 +<WRAP center round info 60%>
 +OCFS2 (Oracle Cluster File System 2)는 Red Hat Enterprise Linux에서 실행될 수 있지만 Red Hat에서는 출하, 유지 관리 또는 지원하지 않습니다.
 +</​WRAP>​
 +
  
  • pacemaker_corosync_클러스터에서_gfs2구성.txt
  • 마지막으로 수정됨: 2017/03/17 14:46
  • 저자 koov