목차

RHEL8 Cluster 구성

기본구성

패키지 설치

[root@rhcs1 ~]# yum install pcs pacemaker fence-agents-all

방화벽 설정

[root@rhcs1 ~]# firewall-cmd --permanent --add-service=high-availability
[root@rhcs1 ~]# firewall-cmd --reload

클러스터 계정 설정

[root@rhcs1 ~]# passwd hacluster
Changing password for user hacluster.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

서비스 설정

[root@rhcs1 ~]# systemctl start pcsd.service
[root@rhcs1 ~]# systemctl enable pcsd.service

클러스터 구성

호스트 인증

[root@z1 ~]# pcs host auth z1.example.com z2.example.com
Username: hacluster
Password:
z1.example.com: Authorized
z2.example.com: Authorized

클러스터 생성

[root@z1 ~]# pcs cluster setup my_cluster --start z1.example.com z2.example.com

클러스터 시작

[root@z1 ~]# pcs cluster enable --all
[root@z1 ~]# systemctl enable pacemaker
[root@z1 ~]# systemctl enable corosync

클러스터 상태 확인

[root@z1 ~]# pcs cluster status
Cluster Status:
 Stack: corosync
 Current DC: z2.example.com (version 2.0.0-10.el8-b67d8d0de9) - partition with quorum
 Last updated: Thu Oct 11 16:11:18 2018
 Last change: Thu Oct 11 16:11:00 2018 by hacluster via crmd on z2.example.com
 2 Nodes configured
 0 Resources configured

...

클러스터 구성 확인

[root@z1 ~]# pcs cluster status
Cluster Status:
 Stack: corosync
 Current DC: z1.example.com (version 2.0.0-10.el8-b67d8d0de9) - partition with quorum
 Last updated: Thu Oct 11 16:11:18 2018
 Last change: Thu Oct 11 16:11:00 2018 by hacluster via crmd on z1.example.com
 2 nodes configured
 0 resources configured

PCSD Status:
  z1.example.com: Online
  z2.example.com: Online

STONITH 비활성화(테스트용)

이 설정은 구축/테스트 시에만 설정하고 실 운영시에는 반드시 enable로 해야한다.

fence 장치를 구성하기 전에는 STONITH를 비활성화 해야 한다.

[root@z1 ~]# pcs property set stonith-enabled=false

LVM Resource 구성

LVM Resource를 구성하는 방법에는 아래와같은 방법들이 있다.

과거에는 tagging방식을 주로 사용하였으나 현재는 system_id방식을 권장한다.

system_id 를 이용한 LVM Resource 제어

먼저 시스템 내의 /etc/lvm/lvm.conf파일 내에 system_id_source 구성 옵션을 uname으로 설정한다.

# Configuration option global/system_id_source.
system_id_source = "uname"

노드의 LVM 시스템 ID가 노드의 uname 과 일치하는지 확인합니다.

# lvm systemid
  system ID: z1.example.com
  
# uname -n
  z1.example.com

이후 볼륨을 생성한다.

[root@z1 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

볼륨그룹 생성시 해당 볼륨그룹의 --setautoactivation n 속성을 추가한다.

[root@z1 ~]# vgcreate --setautoactivation n my_vg /dev/sdb1
  Volume group "my_vg" successfully created
  
[root@z1 ~]# vgs -o+systemid
  VG    #PV #LV #SN Attr   VSize  VFree  System ID
  my_vg   1   0   0 wz--n- <1.82t <1.82t z1.example.com

위의 System ID항목에 현재 호스트의 uname -n값이 나타나야 한다. 만약 나오지 않는다면 아래 명령어로 수동으로 설정해준다.

# vgchange --systemid $(uname -n) <vg name>

이후 계속해서 논리 볼륨을 구성한다.

[root@z1 ~]# lvcreate -L450 -n my_lv my_vg
  Rounding up size to full physical extent 452.00 MiB
  Logical volume "my_lv" created
  
[root@z1 ~]# lvs
  LV      VG      Attr      LSize   Pool Origin Data%  Move Log Copy%  Convert
  my_lv   my_vg   -wi-a---- 452.00m
  ...

[root@z1 ~]# mkfs.xfs /dev/my_vg/my_lv
meta-data=/dev/my_vg/my_lv       isize=512    agcount=4, agsize=28928 blks
         =                       sectsz=512   attr=2, projid32bit=1
...

이후 클러스터의 모든 노드에서 마운트 할 경로를 생성하고 서비스 할 경로 및 설정을 완료한다.

[root@z1 ~]# mkdir /nfsshare

[root@z1 ~]# lvchange -ay my_vg/my_lv
[root@z1 ~]# mount /dev/my_vg/my_lv /nfsshare

[root@z1 ~]# mkdir -p /nfsshare/exports
[root@z1 ~]# mkdir -p /nfsshare/exports/export1
[root@z1 ~]# mkdir -p /nfsshare/exports/export2

[root@z1 ~]# touch /nfsshare/exports/export1/clientdatafile1
[root@z1 ~]# touch /nfsshare/exports/export2/clientdatafile2

[root@z1 ~]# umount /dev/my_vg/my_lv
[root@z1 ~]# vgchange -an my_vg

마지막에 반드시 umountvgchange -an my_vg 작업을 수행하여 해당 vg를 비활성화 해준다.
이후 클러스터가 구동되면서 자동으로 마운트가 동작한다.

STONITH Fence Device 구성

2-node구성일 경우 반드시 한쪽에(가급적 primary노드에) delay 속성값을 지정해서 서로 fence를 날리는 일이 없도록 한다.

# pcs stonith create fence-node1 fence_ipmilan ip=192.168.0.33 ipport=7061 lanplus=1 username=admin password=admin pcmk_host_list=host1 delay=10
# pcs stonith create fence-node2 fence_ipmilan ip=192.168.0.33 ipport=7062 lanplus=1 username=admin password=admin pcmk_host_list=host2

참조링크