서버 클러스터링에서 Heartbeat와 Pacemaker의 역할 분석

서버 클러스터링에서 Heartbeat와 Pacemaker의 역할 분석

서버 클러스터링 환경에서는 장애 발생 시 서비스를 안정적으로 유지하기 위해 노드 간 상태 감시와 리소스 제어가 필수적이다. 이때 핵심 구성 요소가 바로 HeartbeatPacemaker다. 두 구성 요소는 함께 동작하면서 고가용성(HA) 클러스터를 구성하는 기반을 제공하지만, 담당하는 역할은 명확히 구분된다. 본 글에서는 Heartbeat와 Pacemaker의 구조, 역할, 동작 방식의 차이를 기술적으로 정리한다.

1. 서버 클러스터링 환경에서 필요한 핵심 기능

고가용성(HA) 클러스터의 기본 목적은 다음과 같다.

  • 노드 장애 발생 시 자동으로 Failover 수행
  • 서비스·IP·스토리지와 같은 리소스를 안정적으로 이전
  • 클러스터 구성 노드 간 상태 동기화
  • Split-brain 방지

Heartbeat와 Pacemaker는 이러한 기능을 분담하며 HA 환경의 신뢰성을 확보한다.

2. Heartbeat의 역할

Heartbeat는 노드 간 통신 및 상태 감지를 담당하는 메시지 기반 데몬이다. 이름 그대로 노드들이 서로 “생존 신호”를 주고받는 구조다.

Heartbeat의 주요 기능

  • 노드 생존 여부 확인
  • 노드 간 통신 링크 유지
  • Failover 판단의 기본 데이터 제공
  • STONITH(Fencing) 수행 트리거 제공

Heartbeat는 클러스터의 감시 계층에 해당하며, 단독으로 Failover 로직을 담당하지 않는다. 상태 정보를 Pacemaker에게 전달하고 Pacemaker가 이를 바탕으로 리소스를 제어한다.

3. Pacemaker의 역할

Pacemaker는 클러스터 리소스 관리(Resource Manager, CRM) 역할을 담당하는 시스템이다.
클러스터 내 서비스, 가상 IP, 파일 시스템, 데이터베이스 등을 어떤 노드에서 실행할지 결정하고 Failover·Failback을 수행한다.

Pacemaker 주요 기능

  • 리소스 시작/중지/이동(Failover) 제어
  • 리소스 의존성 규칙 처리
  • 정책 기반 노드 선택
  • STONITH 실행
  • Split-brain 방지 로직 수행

Pacemaker는 리소스를 어떻게 운영할지 결정하는 “두뇌” 역할이며, Heartbeat는 그 결정을 위한 상태 데이터를 제공하는 “감각 기관” 역할이라고 볼 수 있다.

4. Heartbeat + Pacemaker의 결합 구조

과거에는 Heartbeat가 메시징과 리소스 관리를 모두 담당했지만, HA 구성의 복잡도가 증가하면서 책임을 분리하는 형태로 발전했다.

현재의 구조는 다음과 같다.

  • Heartbeat(또는 Corosync): 메시징 및 멤버십 관리
  • Pacemaker: 리소스 관리 및 Failover 조정

즉, Heartbeat는 노드 상태 감지에 특화되고 Pacemaker는 리소스 제어에 특화된 구조다.
최근 고가용성 환경에서는 Heartbeat 대신 Corosync를 메시징 계층으로 사용하는 경우가 많다.

5. STONITH(Fencing)의 중요성

Heartbeat와 Pacemaker 모두 STONITH를 통해 Split-brain을 방지한다.
Split-brain이란 두 노드가 서로 자신이 정상이라고 주장하며 리소스를 동시에 운영하는 위험한 상황이다.

STONITH의 역할은 다음과 같다.

  • 문제가 있는 노드를 강제로 재부팅 또는 차단
  • 리소스 손상 및 데이터 무결성 문제 예방
  • Pacemaker의 안정적 Failover 보장

Pacemaker는 STONITH 정책을 기반으로 리소스를 보호하며, Heartbeat는 해당 노드의 생존 여부를 정확하게 전달한다.

6. Heartbeat와 Pacemaker의 실제 동작 흐름

  1. Heartbeat가 각 노드 간 상태 메시지를 주고받아 생존 여부 파악
  2. 이상 징후 감지 시 Pacemaker에게 이벤트 전달
  3. Pacemaker는 정책에 따라
    • 리소스를 다른 노드로 이동
    • STONITH 실행 여부 결정
  4. 리소스가 정상적으로 이전되었는지 확인
  5. 클러스터 상태 안정화 후 정상 운영 재개

즉, 감시 → 판단 → 조치 순서의 구조로 움직인다.

전문가 견해

Heartbeat와 Pacemaker는 HA 클러스터의 감시 계층과 제어 계층을 명확하게 분리함으로써 안정성과 유연성을 동시에 확보하는 구조를 제공한다. Heartbeat는 노드 상태를 신속하고 정확하게 감지하는 데 최적화되어 있으며, Pacemaker는 복잡한 리소스 의존성과 고가용성 정책을 기반으로 Failover를 정교하게 수행한다. 이러한 역할 분리는 단순한 클러스터 환경에서 고급 HA 구성으로 발전하기 위해 필수적인 구조적 기반이며, 안정적인 운영 환경을 요구하는 서버 인프라에서는 사실상 표준적인 설계 방식으로 자리 잡았다.

댓글 남기기