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
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 서버에 위의 명령어로 동일한 패키지를 설치
Step 3. Server set up hosts, service, firewall
/etc/hosts 설정파일 수정 [IP 호스트명]
/etc/hosts : IP 주소 <-> 호스트 이름 매핑을 포함하는 Linux 시스템의 파일
# nano /etc/hosts
pcsd 데몬 시작 및 등록
#systemctl start pcsd
#systemctl enable pcsd
A1, A2 동일하게 진행 재부팅 시 자동 시작을 위해 pcsd 서비스 enable
이중화 계정 hacluster 비밀번호 설정
# passwd 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 3121 | pacemaker Remote 데몬과 통신을 위해 필요 |
TCP 5403 | 생략 |
TCP 9929 | 생략 |
TCP 21064 | 생략 |
UDP 5404 | 생략 |
UDP 5405 | 생략 |
UDP 9929 | 생략 |
방화벽 오픈 후 A1, A2 서버의 방화벽 상태 확인 동일하게 오픈 되어 있어야함.
hacluster 계정 클러스터 노드에 인증 + 클러스터 생성
A1(Master) 서버에서만 적용 A2는 자동으로 적용됨
아래 사진과 같이 인증되었다는 문구가 나오면 정상적으로 설정된 것
# pcs cluster auth admin1 admin2
# pcs cluster setup --name hacluster admin1 admin2
# pcs cluster start --all
이렇게 인증, 생성, 실행 과정이 위 사진과 같이 정상적으로 되면 됩니다.
pcs status 명령어를 통해서 상태 확인이 됩니다.
정상적으로 설정이 되면 아래와 같이 online에 A1, A2 서버의 호스트 이름이 나오게 됩니다.
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
가상 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에서도 가상 아이피 설정이 된 것을 확인 가능
Failover 테스트
A1 서버의 클러스터를 종료하게 되면 VIP가 A2로 이동된 것을 볼 수 있다.