본문 바로가기

OS/Linux

[PaceMaker] 분석

페이스 메이커란?

- 서비스 계층의 HA 를 위한 클러스터 솔루션

- RedHat은 RHEL7 부터 자체 HA 솔루션인 RHCS를 버리고 PaceMaker를 채용 (HighAvailability add-on)

 

사용처

- 공유 SAN 기반 Oracle/DB 클러스터

- SAP 환경

- OpenStack 컨트롤 플레인( Galera, RabbitMQ, HAProxy, VIP )

- 레거시 미들웨어 HA

- k8s 환경이 아닌 전통 온프레미스 환경에서 빈번하게 사용된다.

 

구조

 

- Corosync : 노드끼리 Heartbeat 를 주고받는 계층으로 멤버십, 메시징, 쿼럼을 추적한다.

- Pacemaker : Corosync가 전달한 멤버십 정보(cib)를 바탕으로 리소스를 어느 노드에서 돌릴지 결정한다.
- Resource Agent : 서비스별 start/stop/monitor 로직을 담은 스크립트, Pacemaker 는 서비스 내부를 모르고 RA가 반환하는 리턴 코드를 보고 상태를 판단한다.

- FenceAgent : 응답없는 노드를 강제로 꺼버리는 도구로 인프라 환경에 따라 선택하여 채용해야한다.

- pcs : 위의 요소를 편하게 다루기 위한 CLI

 

동작 개념

1. 쿼럼 

- 다수결의 원칙을 통해 전체노드의 과반을 확보한 쪽만 클러스터 운영을 가진다.

예를 들어 A,B,C 3대의 클러스터에서 노드 C 가 통신이 되지않을때 쿼럼 계산을 통해 클러스터 권한을 A,B에게 주고 C는 리소스를 내리도록 한다.

- 이로써 C와 AB 가 동시에 서비스를 올리는 스플릿브레인을 예방할 수 있다.

- 2노드 일때는 펜싱을 통해 노드를 강제로 내린다.

 

2. 펜싱 / STONITH (Shoot The Other Node In The Head)

- 위에서 언급했듯 Corosync 에서 Hearbeat 통신을 통해 노드의 상태를 확인한다고 했다. 하지만, Heartbeat 통신이 끊겼다고해서 서버가 정말 죽었다는 보장은 없다(NIC 불량, 스위치문제, hang 등..). 따라서 Heartbeat가 없는 노드를 확실히 죽이기 위해서 전원을 물리적으로 꺼버리는 것이다. 그 뒤 안전하게 failover 를 진행 할 수 있다.

 

3. 리소스와 제약조건 ( Resources & Constraints )

- 리소스 : 페이스 메이커가 관리하는 대상

    - 리소스 그룹으로 묶어 관리할 수 있도록 한다.

- Constraints : 리소스의 기동순서 및 기동 위치를 지정합니다.

    - colocation : 리소스가 같은 노드에 배치 됩니다.

    - order : 리소스의 기동 순서

    - location : 선호도를 통한 기동 노드 지정

  

 

예시

서버 Spec.

- vmware VM 2대 

- 4vcpu, 8GB 

- RHEL 9.6

- firewalld 및 selinux down

 

test02 장애시 펜싱 로그
리소스가 이동한 모습