리눅스/Pacemaker(HA Cluster)

[HA] Pacemaker Cluster (CentOS7, KVM, pacemaker) - 1

ㅎㄷㄹㅁㅇ 2023. 8. 29. 22:46
반응형

Pacemaker 구성 1

 

 

클러스터란 두대 이상의 서버들을 하나로 묶어서 하나의 서버로 동작하게 하는 것을 말합니다.

클러스터는 고가용성(High-availability, HA), 부하분산(load balance)등이 있습니다.

 

클라이언트들에게 서버 기반 정보를 지속적이고 더 높은 효율로 제공 받을 수 있게 하는 것에 목적이 있습니다.

시스템에서의 고가용성이란 운영 성능이 기준치에 맞게 충족되는 것을 말합니다. 특정 서버나 서비스의 종료 없이 지속적인 운영이 가능하게 하는 것을 말합니다. 추가로 문제가 생긴 서버나 서비스의 복구가 가능하고 정상화 할 수 있는 신뢰 높은 시스템을 뜻합니다. 

 

고가용성 클러스터는 이중화 상태에서 fail-over 기능이 제공되어 한 노드에서의 장애가 발생해도 클러스터링에 의해 서비스의 문제가 없는 것을 말합니다. Pacemaker는 고가용성 클러스터로 아래는 Pacemaker를 구성하는 방법에 대해 소개하고자 합니다. 

Pacemaker 구성에 필요한 것들

  • KVM(HOST)에서 구성KVM , VMware 등 가상화 장비에서 VM 설치 후 진행 합니다. VM은 iscsi 서버, 클러스터 노드 2대로 구성, 총 3대로 구성합니다.
  • VirtualBox에서도 구성은 가능하나, fencing 동작 추가가 어렵습니다. 
  • VM은 CentOS7.7로 구성되며, 네트워크는 Service, iscsi연동, HeartBeat로  구성했습니다.
  • 순서대로 설치 시 바로 설치가 가능합니다.  

 

  • VM / HOST IP 정보
  eth0 eth1 eth2
node1(c77_ha01) 192.168.122.184 200.200.10.184 200.200.20.184
node2(c77_ha02) 192.168.122.185 200.200.10.185 200.200.20.185
storage(iscsi server)   200.200.10.181  

 

OS 설정 파일 수정

- 클러스터 노드로 사용할 node1, node2에 모두 동일하게 구성합니다. 

[root@c77_ha01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.122.181 iscsi
192.168.122.184 c77_ha01
192.168.122.185 c77_ha02

200.200.10.184 c77_ha01.iscsi
200.200.10.185 c77_ha02.iscsi

200.200.20.184 c77_ha01.hb
200.200.20.185 c77_ha02.hb

 

 

CentOS7 local repo 구성

- ISO에 포함되어 있는 PKG 사용을 위해 local repo를 구성

[CentOS 일 경우]

# vi /etc/yum.repos.d/local.repo 

[Packages]
name=local
baseurl=file:///media
gpgcheck=0
enabled=1

# vi /etc/yum.repos.d/local.repo 
[Packages]
name=Server
baseurl=file:///media/
enabled=1
gpgcheck=0

[ResilientStorage]
name=Server
baseurl=file:///media/addons/ResilientStorage/
enabled=1
gpgcheck=0

[HighAvailability]
name=Server
baseurl=file:///media/addons/HighAvailability/
enabled=1
gpgcheck=0

 

[RHEL 일 경우]

# vi /etc/yum.repos.d/local.repo 
[Packages]
name=Server
baseurl=file:///media/
enabled=1
gpgcheck=0

[ResilientStorage]
name=Server
baseurl=file:///media/addons/ResilientStorage/
enabled=1
gpgcheck=0

[HighAvailability]
name=Server
baseurl=file:///media/addons/HighAvailability/
enabled=1
gpgcheck=0

 

방화벽 / Selinux disable

-  일반적으로 방화벽/Selinux 미사용을 기준으로 구성합니다. 

# systemctl status firewalld
# systemctl disable firewalld
# systemctl stopfirewalld
# systemctl status firewalld



# getenforce
# cat /etc/sysconfig/selinux  | grep SELINUX
SELINUX=disabled
SELINUXTYPE=targeted
# getenforce

 

시간 동기화를 위한 NTP 설정

- 클러스터에서 시간 동기화는 중요합니다. 시간 동기화가 틀어질 경우 서버 간 시간이 틀어져 리소스나 클러스터 연동의 TIME OUT이 발생 할 수 있습니다. 

# vi /etc/ntp.conf
…
server [ntp server]

# systemctl status ntpd
# systemctl restart ntpd
# systemctl status ntpd

# ntpq -pn

 

KVM(HOST) Multicast 설정

- KVM(HOST) 에서 진행

HeartBeat 네트워크로 사용하는 대역에서 multicast로 통신이 가능해야합니다. 

# cat /sys/devices/virtual/net/<virbr_interface>/bridge/multicast_querier
# echo 1 > /sys/devices/virtual/net/<virbr_interface>/bridge/multicast_querier
1
# netstat -g

 

 

 


클러스터 구성

  • Pacemaker  관련 패키지 설치 및 데몬 활성화 (VM Node 동시 진행)
# yum install pacemaker corosync pcs lvm2-cluster psmisc policycoreutils-python bash-completion fence-agents-all

 

  • Pacemaker resource 확인
# systemctl status corosync
# systemctl status pacemaker
# systemctl status pcsd

 

  • hacluster 계정 비밀번호 생성
# echo 'password' | passwd --stdin hacluster

 

  • pcsd 데몬 활성화
# systemctl enable --now pcsd
# systemctl status pcsd

 

 

 

  • NODE1 에서  hacluster 사용자 인증 진행 (VM Node1에서만 진행)
# pcs cluster auth node1.hb node2.hb -u hacluster -p password

 

  • Pacemaker 구성 (UDPU사용)
# pcs cluster setup --name ha_cluster c77_ha01.hb c77_ha02.hb --transport udpu --token 10000

 

  • Pacemaker Start
# pcs cluster start --all

 

  • Pacemaker 상태확인
[root@c77_ha01 ~]# pcs status
Cluster name: ha_cluster
Stack: corosync
Current DC: c77_ha02.hb (version 1.1.20-5.el7-3c4c782f70) - partition with quorum
Last updated: Thu Apr  4 11:11:04 2024
Last change: Tue Apr  2 17:28:37 2024 by root via cibadmin on c77_ha01.hb

2 nodes configured
1 resource configured

Online: [ c77_ha01.hb c77_ha02.hb ]

Full list of resources:

 kdump-fence	(stonith:fence_kdump):	Started c77_ha01.hb

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

 

 

  • Corosync 통신 확인 (VM Node 동시 진행)
[root@c77_ha01 ~]# corosync-cfgtool -s
Printing ring status.
Local node ID 1
RING ID 0
	id	= 200.200.20.184
	status	= ring 0 active with no faults

[root@c77_ha02 ~]# corosync-cfgtool -s
Printing ring status.
Local node ID 2
RING ID 0
	id	= 200.200.20.185
	status	= ring 0 active with no faults

[root@c77_ha01 ~]# pcs status corosync

Membership information
----------------------
    Nodeid      Votes Name
         1          1 c77_ha01.hb (local)
         2          1 c77_ha02.hb

 

 

 

여기까지 Pacemaker 구성은 완료 됐습니다. 두 노드 간 Corosync를 통해서 클러스터 Member로 등록한 상태입니다. 추가로 Stonith 추가, Resource 추가를 통해서 설정을 완료하면 됩니다. 

 

 

Ref.

https://www.redhat.com/ko/topics/linux/what-is-high-availability

 

 

반응형
TOP