서버 설정 · 6 min read · Dec 06, 2025

CentOS 7에서 Pacemaker와 Corosync로 Nginx 고가용성 설정하기

이 튜토리얼에서는 Pacemaker, Corosync 및 Pcsd를 사용하여 고가용성 클러스터 Nginx 웹 서버를 만드는 방법을 단계별로 안내합니다. CentOS 7 시스템에서 Pacemaker를 사용하여 Active-Passive 클러스터 또는 Failover-cluster Nginx 웹 서버를 생성합니다.

Pacemaker는 서비스의 최대 고가용성을 달성하는 오픈 소스 클러스터 관리 소프트웨어입니다. ClusterLabs에서 배포하는 고급 및 확장 가능한 HA 클러스터 관리자입니다.

Corosync 클러스터 엔진은 새로운 BSD 라이선스 하에 OpenAIS 프로젝트에서 파생된 오픈 소스 프로젝트입니다. 애플리케이션 내에서 고가용성을 구현하기 위한 추가 기능을 갖춘 그룹 통신 시스템입니다.

Pacemaker 인터페이스에 대한 몇 가지 응용 프로그램이 있습니다. Pcsd는 Pacemaker를 관리하기 위한 Pacemaker 명령줄 인터페이스 및 GUI 중 하나입니다. pcsd 명령 pcs를 사용하여 클러스터에 새 노드를 생성, 구성 또는 추가할 수 있습니다.

전제 조건

  • 2개 이상의 CentOS 7 서버 - web01 10.0.15.10
  • web02 10.0.15.11
  • web03 10.0.15.12
  • 플로팅 IP 주소 10.0.15.15
  • 루트 권한

우리가 할 일:

  1. 호스트 파일 매핑
  2. Epel 리포지토리 및 Nginx 설치
  3. Pacemaker, Corosync 및 Pcsd 설치 및 구성
  4. 클러스터 생성 및 구성
  5. STONITH 비활성화 및 쿼럼 정책 무시
  6. 플로팅-IP 및 리소스 추가
  7. 클러스터에 규칙 추가
  8. Firewalld 구성
  9. 설정 테스트

1단계 - 호스트 파일 매핑

참고: 모든 서버 web01, web02 및 web03에서 1단계 - 3단계를 실행합니다.

우리가 해야 할 첫 번째 단계는 모든 서버의 호스트 이름을 매핑하기 위해 각 서버에서 호스트 파일을 편집하는 것입니다. ‘web01’, ‘web02’ 및 ‘web03’ 서버가 있으므로 ssh 계정으로 각 서버에 로그인합니다.

ssh root@web[01,02,03]

vim으로 ‘/etc/hosts’ 파일을 편집합니다.

vim /etc/hosts

다음 구성을 붙여넣습니다.

10.0.15.10      web01  
10.0.15.11      web02  
10.0.15.12      web03

저장하고 종료합니다.

이제 호스트 매핑 구성을 테스트합니다.

ping -c 3 web01  
ping -c 3 web02  
ping -c 3 web03

‘web01’, ‘web02’ 및 ‘web03’이 올바른 IP 주소에 매핑되었는지 확인합니다.

ping으로 서버 상호 연결 확인

2단계 - Epel 리포지토리 및 Nginx 설치

이 단계에서는 epel 리포지토리를 설치한 다음 Nginx 웹 서버를 설치합니다. EPEL 또는 Enterprise Linux를 위한 추가 패키지 리포지토리는 Nginx 패키지를 설치하는 데 필요합니다.

다음 yum 명령을 사용하여 EPEL 리포지토리를 설치합니다.

yum -y install epel-release

이제 EPEL 리포지토리에서 Nginx 웹 서버를 설치합니다.

yum -y install nginx

설치가 완료되면 각 서버의 기본 index.html 페이지를 새 페이지로 변경합니다.

# 'web01'에서 명령 실행  
echo '

web01 - hakase-labs

' > /usr/share/nginx/html/index.html # 'web02'에서 명령 실행 echo '

web02 - hakase-labs

' > /usr/share/nginx/html/index.html # 'web03'에서 명령 실행 echo '

web03 - hakase-labs

' > /usr/share/nginx/html/index.html

epel 리포 및 nginx 설치

EPEL 리포지토리와 Nginx 웹 서버가 이제 시스템에 설치되었습니다.

3단계 - Pacemaker, Corosync 및 Pcsd 설치 및 구성

Pacemaker, Corosync 및 Pcsd는 기본 시스템 리포지토리에서 사용할 수 있습니다. 따라서 다음 yum 명령을 사용하여 CentOS 리포지토리에서 모두 설치할 수 있습니다.

yum -y install corosync pacemaker pcs

설치가 완료되면 아래 systemctl 명령을 사용하여 모든 서비스가 시스템 부팅 시 자동으로 시작되도록 활성화합니다.

systemctl enable pcsd  
systemctl enable corosync  
systemctl enable pacemaker

이제 모든 서버에서 pcsd Pacemaker 명령줄 인터페이스를 시작합니다.

systemctl start pcsd

다음으로 ‘hacluster’ 사용자에 대한 새 비밀번호를 생성하고 모든 서버에서 동일한 비밀번호를 사용합니다. 이 사용자는 소프트웨어 설치 중에 자동으로 생성되었습니다.

‘hacluster’ 사용자에 대한 비밀번호를 구성하는 방법은 다음과 같습니다.

passwd hacluster  
새 비밀번호 입력:

고가용성 소프트웨어 스택 Pacemaker, Corosync 및 Pcsd가 시스템에 설치되었습니다.

Pacemaker, Corosync 및 Pcsd 설치 및 구성

4단계 - 클러스터 생성 및 구성

참고: ‘web01’에서만 4단계 - 7단계를 실행합니다.

이 단계에서는 3개의 CentOS 서버로 새 클러스터를 생성합니다. 그런 다음 플로팅 IP 주소를 구성하고 새로운 Nginx 리소스를 추가합니다.

클러스터를 생성하려면 pcs 명령과 hacluster 사용자로 모든 서버를 인증해야 합니다.

pcs 명령과 hacluster 사용자 및 비밀번호로 모든 서버를 인증합니다.

pcs cluster auth web01 web02 web03  
사용자 이름: hacluster  
비밀번호: aqwe123@

클러스터 생성 및 구성

이제 클러스터를 설정할 시간입니다. 클러스터 이름과 클러스터의 일부가 될 모든 서버를 정의합니다.

pcs cluster setup --name hakase_cluster web01 web02 web03

이제 모든 클러스터 서비스를 시작하고 활성화합니다.

pcs cluster start --all  
pcs cluster enable --all

클러스터 시작

다음으로 클러스터 상태를 확인합니다.

pcs status cluster

클러스터 상태 확인

5단계 - STONITH 비활성화 및 쿼럼 정책 무시

우리는 펜싱 장치를 사용하지 않기 때문에 STONITH를 비활성화합니다. STONITH 또는 Shoot The Other Node In The Head는 Pacemaker에서의 펜싱 구현입니다. 프로덕션 환경에서는 STONITH를 활성화하는 것이 좋습니다.

다음 pcs 명령으로 STONITH를 비활성화합니다.

pcs property set stonith-enabled=false

다음으로 쿼럼 정책을 무시합니다.

pcs property set no-quorum-policy=ignore

속성 목록을 확인하고 stonith 및 쿼럼 정책이 비활성화되었는지 확인합니다.

pcs property list

STONITH 비활성화 및 쿼럼 정책 무시

STONITH 및 쿼럼 정책이 비활성화되었습니다.

6단계 - 플로팅-IP 및 리소스 추가

플로팅 IP는 동일한 데이터 센터 내에서 한 서버에서 다른 서버로 자동으로 이동할 수 있는 IP 주소입니다. 우리는 이미 Pacemaker 고가용성을 위해 플로팅 IP 주소를 ‘10.0.15.15’로 정의했습니다. 이제 ‘virtual_ip’라는 이름의 플로팅 IP 주소 리소스와 ‘webserver’라는 이름의 Nginx 웹 서버에 대한 새 리소스를 추가하고자 합니다.

다음 pcs 명령을 사용하여 새로운 리소스 플로팅 IP 주소 ‘virtual_ip’를 추가합니다.

pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30s

다음으로 Nginx ‘webserver’에 대한 새 리소스를 추가합니다.

pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"

오류 결과가 없으면 사용 가능한 리소스를 확인합니다.

pcs status resources

‘virtual_ip’와 ‘webserver’라는 두 개의 리소스가 표시됩니다. 플로팅 IP 및 Nginx 웹 서버에 대한 새로운 리소스가 추가되었습니다.

7단계 - 클러스터에 제약 규칙 추가

이 단계에서는 고가용성 규칙을 설정하고 pcs 명령줄 인터페이스로 리소스 제약을 설정합니다.

webserver 및 virtual_ip 리소스에 대해 점수 ‘INFINITY’로 콜로케이션 제약을 설정합니다. 또한 webserver 및 virtual_ip 리소스를 모든 서버 노드에서 동일하게 설정합니다.

pcs constraint colocation add webserver virtual_ip INFINITY

‘virtual_ip’ 및 ‘webserver’ 리소스가 항상 동일한 노드 서버에 있도록 설정합니다.

pcs constraint order virtual_ip then the webserver

다음으로 클러스터를 중지한 다음 다시 시작합니다.

pcs cluster stop --all  
pcs cluster start --all

클러스터에 제약 규칙 추가

이제 리소스를 다시 확인하면 ‘web01’ 서버에서 상태가 ‘Started’로 표시됩니다.

pcs status resources

virtual_ip 및 webserver 리소스가 동일한 서버/노드 ‘web01’에서 시작되었습니다.

8단계 - Firewalld 구성

HA-클러스터는 firewalld 방화벽 구성 하에 실행됩니다. 패키지가 없는 경우 설치합니다.

yum -y install firewalld

firewalld를 시작하고 아래 systemctl 명령을 사용하여 시스템 부팅 시 자동으로 실행되도록 활성화합니다.

systemctl start firewalld  
systemctl enable firewalld

다음으로 firewall-cmd 명령으로 firewalld에 새로운 서비스를 추가합니다 - 고가용성 서비스, HTTP 및 Nginx의 HTTPS 서비스를 추가합니다.

firewall-cmd --permanent --add-service=high-availability  
firewall-cmd --permanent --add-service=http  
firewall-cmd --permanent --add-service=https

방화벽 구성을 다시 로드하고 모든 서비스를 확인합니다.

firewall-cmd --reload  
firewall-cmd --list-all

ha 서비스와 HTTP 및 https가 목록에 있는지 확인합니다.

방화벽 다시 로드 및 방화벽 규칙 집합 확인

9단계 - 테스트

이 단계에서는 클러스터에 대한 몇 가지 테스트를 수행합니다. 노드 상태(‘온라인’ 또는 ‘오프라인’)를 테스트하고, corosync 멤버 및 상태를 테스트한 다음, 플로팅 IP 주소에 액세스하여 Nginx 웹 서버의 고가용성을 테스트합니다.

다음 명령으로 노드 상태를 테스트합니다.

pcs status nodes

설정 테스트

모든 노드가 ‘온라인’ 상태입니다.

corosync 멤버를 테스트합니다.

corosync-cmapctl | grep members

Corosync 멤버 IP 주소를 얻을 수 있습니다.

Corosync 멤버 IP 주소

Corosync 멤버를 확인하면 아래와 같은 결과를 볼 수 있습니다.

pcs status corosync

Corosync 상태

마지막으로 웹 서버 고가용성을 확인합니다. 웹 브라우저를 열고 플로팅 IP 주소 ‘10.0.15.15’를 입력합니다.

‘web01’ 서버의 웹 페이지를 볼 수 있습니다.

다음으로 ‘web01’ 서버에서 클러스터를 중지하는 명령을 실행합니다.

pcs cluster stop web01

페이지를 다시 확인하면 ‘web02’ 서버의 페이지를 볼 수 있습니다.

추가:

아래 명령으로 클러스터 상태를 확인합니다.

pcs status

아래와 같은 결과를 얻을 수 있습니다.

pcs 상태 확인

CentOS 7 서버에서 Pacemaker, Corosync 및 Pcsd로 Nginx 웹 서버 고가용성 설정이 성공적으로 완료되었습니다.

참고

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.