[Linux] How to set up Pacemaker cluster for High Availability

CentOS 7 : how to Settings Linux Server Pacemaker Cluster for HA

CentOS 7 서버를 corosync, pacemaker를 활용해서 이중화

서버이중화 이론

corosync

  • Linux-HA(Heartbeat) 및 Pacemaker를 포함하되 이에 국한되지 않는 고가용성 클러스터에 대한 클러스터 멤버십 및 메시징 기능을 제공하는 소프트웨어 프로그램
  • 고가용성 솔루션 구축을 위한 안정적이고 확장 가능한 클러스터 인프라로 설계되었습니다.
  • Corosync의 주요 기능은 클러스터 노드에 대한 메시징 및 멤버십 서비스를 제공하여 고가용성 솔루션을 제공하기 위해 조정하고 함께 작업할 수 있도록 하는 것

Pacemaker

  • ClusterLabs에서 개발한 Linux용 고가용성 클러스터 소프트웨어
  • 클러스터로 알려진 서버 그룹에서 실행되는 서비스 및 응용 프로그램에 대한 중앙 집중식 관리 및 리소스 오케스트레이션을 제공
  • Pacemaker의 주요 기능은 상태를 모니터링하고 장애 발생 시 복구 조치를 자동화하여 중요한 서비스 및 애플리케이션의 지속적인 가용성을 보장
  • Corosync와 같은 다른 클러스터 기술과 함께 작동하여 완벽한 고가용성 솔루션을 제공

Step 1. Server Pacemake cluster for HA

Master : admin1 [192.168.65.189]

Slave : admin2 [192.168.65.190]

사용 중인 서버의 버전 정보 확인

# cat /etc/*release*

CentOS Linux 7 Version + Release 7.9.2009(core)

서버별 버전 정보 확인

Master, Slave 서버의 IP정보 확인

# ifconfig 
서버별 IP정보 확인

Step 2. ( pacemaker, corosync, pcs ) Package Install

PCS(Pacemaker Configuration System) : Linux에서 Pacemaker 클러스터 리소스 관리자를 관리하고 구성하는 데 사용되는 명령줄 및 웹 기반 도구 PCS는 또한 클러스터 상태를 관리하고 클러스터 노드 시작, 중지 및 관리와 같은 관리 작업을 수행하는 방법을 제공

# yum install -y pacemaker corosync pcs

Master서버를 A1 | Slave서버를 A2라고 하겠습니다.

A1, A2 서버에 위의 명령어로 동일한 패키지를 설치

A1, A2 서버에 위의 명령어로 동일한 패키지를 설치

Step 3. Server set up hosts, service, firewall

/etc/hosts 설정파일 수정 [IP 호스트명]

/etc/hosts : IP 주소 <-> 호스트 이름 매핑을 포함하는 Linux 시스템의 파일

# nano /etc/hosts
Server set up hosts, service, firewall

pcsd 데몬 시작 및 등록

#systemctl start pcsd
#systemctl enable pcsd

A1, A2 동일하게 진행 재부팅 시 자동 시작을 위해 pcsd 서비스 enable

pcsd 데몬 시작 및 등록

이중화 계정 hacluster 비밀번호 설

# passwd hacluster
이중화 계정 hacluster 비밀번호 설정

서버 방화벽 오픈

# firewall-cmd --zone=public --permanent --add-port=2224/tcp;
# firewall-cmd --zone=public --permanent --add-port=5403/tcp;
# firewall-cmd --zone=public --permanent --add-port=21064/tcp;
# firewall-cmd --zone=public --permanent --add-port=3121/tcp;
# firewall-cmd --zone=public --permanent --add-port=9929/tcp;
# firewall-cmd --zone=public --permanent --add-port=5404/udp;
# firewall-cmd --zone=public --permanent --add-port=5405/udp;
# firewall-cmd --zone=public --permanent --add-port=9929/udp;
# firewall-cmd --reload
# firewall-cmd --zone=public --list-all

pacemaker 설정 시 주 Port는 TCP 2224, 3121이며 나머지는 개인환경 및 설정 방법에 따라서 달라질수 있음.

Port 설명
TCP 2224클러스터 내의 노드 간 통신을 위해 필요
TCP 3121pacemaker Remote 데몬과 통신을 위해 필요
TCP 5403생략
TCP 9929생략
TCP 21064생략
UDP 5404생략
UDP 5405생략
UDP 9929생략

방화벽 오픈 후 A1, A2 서버의 방화벽 상태 확인 동일하게 오픈 되어 있어야함.

방화벽 오픈 후 A1, A2 서버의 방화벽 상태 확인

hacluster 계정 클러스터 노드에 인증 + 클러스터 생성

A1(Master) 서버에서만 적용 A2는 자동으로 적용됨

아래 사진과 같이 인증되었다는 문구가 나오면 정상적으로 설정된 것

# pcs cluster auth admin1 admin2

# pcs cluster setup --name hacluster admin1 admin2
hacluster 계정 클러스터 노드에 인증, 클러스터 생성, 실행
# pcs cluster start --all
pcs cluster start -all

이렇게 인증, 생성, 실행 과정이 위 사진과 같이 정상적으로 되면 됩니다.

pcs status 명령어를 통해서 상태 확인이 됩니다.

정상적으로 설정이 되면 아래와 같이 online에 A1, A2 서버의 호스트 이름이 나오게 됩니다.

pcs status 명령어를 통해서 상태 확인

pacemaker, corosync 이중화 서비스 시작

# systemctl start corosync.service
# systemctl enable corosync.service
# systemctl start pacemaker.service
# systemctl enable pacemaker.service

# systemctl list-unit-files | grep corosync.service
# systemctl list-unit-files | grep pacemaker.service
# systemctl list-unit-files | grep pcsd.service

A1, A2 서버에서 서비스 시작 및 등록

서버에서 이중화 서비스 시작 및 등록

Active/Passive 클러스터 생성

처음부터 crm 명령어를 입력 시 리소스 오류가 나오게 되는데 데이터의 무결성을 확보하기 위하여 기본으로 STONITH가 활성화가 되어 있음, pcs 명령어를 통해서 stonith를 비활성화

# pcs property set stonith-enabled=false
# crm_verify -L -V
Active/Passive 클러스터 생성

가상 IP VIP생성

해당 가상 IP는 A1서버가 다운 시 A2 노드로 이동하며 실제 서비스에 이용되는 IP주소로 이용한다.

# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=[가상 IP] cidr_netmask=[subnet] nic=[NIC] op monitor interval=30s

pcs status에서도 가상 아이피 설정이 된 것을 확인 가능

가상 IP VIP 생성 및 확인 작업

Failover 테스트

A1 서버의 클러스터를 종료하게 되면 VIP가 A2로 이동된 것을 볼 수 있다.

Failover 테스트

By Low ahn

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다