Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

Pacemaker (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.22 10:24

Pacemaker

정의

고가용성 클러스터 리소스 관리자

개발자

Linux-HA 프로젝트 커뮤니티

주요 용도

리눅스 클러스터의 장애 조치 및 리소스 관리

관련 분야

클러스터 관리

고가용성

리눅스

상세 정보

1. 개요

페이스메이커는 리눅스 기반 고가용성 클러스터의 자원을 관리하는 클러스터 리소스 관리자이다. 주된 목적은 클러스터에 속한 서비스와 자원의 가용성을 최대한 보장하는 것으로, 서버나 서비스에 장애가 발생했을 때 이를 감지하고 다른 정상 노드로 자동으로 옮겨주는 장애 조치 기능을 핵심으로 한다.

이 소프트웨어는 Linux-HA 프로젝트 커뮤니티에 의해 개발 및 유지보수되며, 클러스터 관리 분야에서 널리 사용되는 표준 솔루션 중 하나이다. 페이스메이커 자체는 자원을 직접 모니터링하고 제어하는 역할을 하지만, 클러스터 구성원 간의 통신과 멤버십 관리에는 주로 코로싱크 같은 메시징 계층 소프트웨어와 함께 사용된다.

페이스메이커를 통해 관리되는 자원은 매우 다양하여, 가상 IP 주소, 스토리지, 데이터베이스, 웹 서버 등 거의 모든 애플리케이션 서비스를 포함할 수 있다. 관리자는 자원 간의 의존 관계, 실행 위치 제약 조건, 장애 발생 시의 복구 정책 등을 유연하게 정의하여 복잡한 클러스터 토폴로지를 구성할 수 있다.

이러한 특성 덕분에 페이스메이커는 금융, 통신, 클라우드 컴퓨팅 인프라 등 중단 없는 서비스 운영이 필수적인 엔터프라이즈 환경에서 중요한 기반 기술로 자리 잡고 있다.

2. 역사

페이스메이커는 리눅스 기반 고가용성 클러스터 관리를 위한 핵심 소프트웨어로, 그 역사는 Linux-HA 프로젝트와 밀접하게 연결되어 있다. 초기 하트비트 프로젝트에서 파생된 이 프로젝트는 더욱 강력하고 유연한 클러스터 리소스 관리자의 필요성에 의해 탄생했다. 페이스메이커는 기존의 단순한 장애 감지 및 조치 메커니즘을 넘어, 복잡한 리소스 의존성 관리와 클러스터 전역의 상태를 고려한 의사 결정을 가능하게 하는 것을 목표로 개발되었다.

페이스메이커의 개발은 주로 커뮤니티 주도로 진행되었으며, 레드햇과 SUSE를 비롯한 여러 주요 리눅스 배포판 벤더들의 지원과 기여를 받아 성장했다. 이는 페이스메이커가 다양한 엔터프라이즈 환경에서 표준적인 고가용성 솔루션으로 자리 잡는 데 기여했다. 시간이 지남에 따라 페이스메이커는 독립적인 데몬으로 진화하며, 클러스터 통신 계층(주로 코로싱크)과 리소스 제어 계층(자원 에이전트)을 명확히 분리하는 모듈식 아키텍처를 갖추게 되었다.

이러한 발전을 통해 페이스메이커는 단순한 장애 조치를 넘어 부하 분산, 스토리지 관리, 가상 머신 고가용성 등 다양한 고급 클러스터 관리 기능을 지원하는 포괄적인 플랫폼으로 성장했다. 현재 페이스메이커는 전 세계 수많은 데이터센터에서 중요한 IT 인프라의 가용성을 보장하는 데 핵심적인 역할을 하고 있다.

3. 아키텍처

3.1. 핵심 구성 요소

페이스메이커의 핵심 구성 요소는 클러스터 관리자, 자원 관리자, 클러스터 정보 베이스로 구분된다. 이들은 각각 고유한 책임을 지며 상호작용하여 클러스터의 상태를 유지하고 자원을 관리한다.

클러스터 관리자는 클러스터 멤버십과 쿼럼을 담당하는 구성 요소이다. 이는 코로싱크나 하트비트 같은 메시징 계층과 통신하여 노드의 가용성을 추적하고, 노드가 클러스터에 참여하거나 이탈할 때 이를 감지한다. 또한 쿼럼 계산을 통해 클러스터의 의사 결정이 정족수에 기반하도록 보장하여 스플릿 브레인 상황을 방지하는 역할을 수행한다.

자원 관리자는 실제 애플리케이션이나 서비스를 제어하는 핵심 엔진이다. 이 구성 요소는 자원 에이전트를 통해 자원의 시작, 중지, 모니터링을 실행하며, 사전 정의된 정책에 따라 자원 간의 의존성과 배치 제약 조건을 관리한다. 노드 장애 발생 시, 자원 관리자는 자원을 정상 노드로 신속하게 재배치하는 장애 조치를 수행한다.

클러스터 정보 베이스는 클러스터의 모든 구성 정보와 런타임 상태를 저장하는 분산 데이터베이스이다. 여기에는 자원 정의, 제약 조건, 각 자원의 현재 위치 및 상태 기록이 포함된다. 이 정보는 모든 클러스터 노드에 복제되어 일관성을 유지하며, 관리자가 CRM 쉘이나 하우토스 같은 도구를 통해 클러스터를 구성하고 모니터링할 수 있는 기반을 제공한다.

3.2. 자원 에이전트

자원 에이전트는 Pacemaker 클러스터에서 관리하는 서비스나 애플리케이션을 제어하기 위한 스크립트 또는 프로그램이다. 페이스메이커 자체는 리소스를 직접 관리하지 않으며, 모든 시작, 중지, 모니터링 작업은 이러한 자원 에이전트를 통해 수행된다. 자원 에이전트는 리소스의 상태를 확인하고, 문제 발생 시 적절한 조치를 취하도록 페이스메이커에 정보를 제공하는 핵심 인터페이스 역할을 한다.

자원 에이전트는 주로 셸 스크립트로 작성되며, 표준화된 동작과 반환 코드를 따라야 한다. 주요 동작으로는 start, stop, status, monitor 등이 있으며, 각 동작은 성공, 실패, 관리자 개입 필요 등을 나타내는 미리 정의된 종료 코드를 반환한다. 이 표준화된 인터페이스를 통해 페이스메이커는 웹 서버, 데이터베이스, 파일 시스템, 가상 머신 등 다양한 유형의 리소스를 일관된 방식으로 관리할 수 있다.

페이스메이커 생태계에는 여러 종류의 자원 에이전트가 존재한다. 가장 일반적인 것은 리눅스-하이 어베일러빌리티 프로젝트에서 제공하는 표준 OCF 에이전트와, 시스템 V 계열의 LSB 초기화 스크립트, 그리고 시스템드 유닛 파일을 활용하는 systemd 에이전트 등이다. 이 중에서도 가장 유연하고 권장되는 것은 OCF 에이전트로, 풍부한 매개변수와 메타데이터를 지원하여 복잡한 클러스터 구성에 적합하다.

사용 가능한 자원 에이전트의 목록과 상세 정보는 pcs resource agents 또는 crm ra list와 같은 클러스터 관리 명령어를 통해 확인할 수 있다. 새로운 애플리케이션을 클러스터 리소스로 추가하려면 해당 애플리케이션을 제어할 수 있는 호환되는 자원 에이전트가 반드시 필요하다.

3.3. 클러스터 정보 베이스

클러스터 정보 베이스는 페이스메이커 클러스터의 구성, 상태, 제약 조건 등 모든 정보를 저장하는 중앙 저장소이다. 이는 클러스터의 "단일 진실 공급원" 역할을 하여 모든 노드가 일관된 정보를 바탕으로 의사 결정을 내릴 수 있게 한다. 정보는 XML 형식으로 저장되며, 클러스터의 모든 노드에 복제되어 고가용성을 보장한다.

클러스터 정보 베이스에 저장되는 주요 정보는 다음과 같다.

정보 유형

설명

노드 구성

클러스터에 속한 각 노드의 상태와 속성

리소스 구성

관리되는 자원 에이전트의 정의, 매개변수, 시작 순서

제약 조건

리소스 배치, 순서, 위치를 제어하는 규칙

클러스터 상태

각 리소스의 현재 상태와 실행 중인 노드 정보

이 정보는 crm 명령줄 도구나 웹 기반 관리 도구인 Hawk을 통해 실시간으로 조회하고 수정할 수 있다. 모든 변경 사항은 클러스터 내에서 자동으로 동기화되어 구성의 일관성을 유지한다. 클러스터 정보 베이스의 무결성과 가용성은 페이스메이커가 안정적으로 장애 조치와 리소스 관리를 수행하는 데 필수적이다.

4. 기능

4.1. 고가용성 클러스터 관리

페이스메이커는 리눅스 기반 고가용성 클러스터를 구성하고 관리하는 핵심 소프트웨어이다. 이는 클러스터 내에서 실행되는 애플리케이션과 서비스(이를 자원이라고 함)의 상태를 지속적으로 모니터링하며, 노드나 서비스에 장애가 발생했을 때 이를 다른 정상 노드로 자동으로 옮겨서 서비스 중단 시간을 최소화하는 것을 주요 목표로 한다.

이러한 고가용성 클러스터 관리를 위해 페이스메이커는 클러스터의 구성원 정보, 자원 상태, 제약 조건 등을 저장하는 클러스터 정보 베이스를 유지 관리한다. 또한 코로싱크나 킵얼라이브드와 같은 메시징 계층과 협력하여 노드 간의 통신과 멤버십을 확인하며, 이를 바탕으로 클러스터의 현재 상태를 파악하고 의사 결정을 내린다.

관리자는 자원의 시작, 정지 순서나 위치 선호도 등을 정의하는 제약 조건을 설정할 수 있다. 예를 들어, 특정 데이터베이스 서비스와 웹 서버가 항상 같은 노드에서 실행되도록 위치 제약을 걸거나, 두 서비스가 특정 순서로 시작되도록 순서 제약을 설정하는 것이 가능하다. 페이스메이커는 이러한 정책과 제약 조건을 바탕으로 클러스터의 이상 상태를 감지하고, 사전 정의된 정책에 따라 자동으로 복구 작업을 수행한다.

4.2. 자원 모니터링 및 장애 조치

자원 모니터링 및 장애 조치는 페이스메이커의 핵심 기능이다. 이 기능은 클러스터에 등록된 모든 자원의 상태를 지속적으로 추적하고, 장애 발생 시 자동으로 복구 조치를 수행하여 서비스의 연속성을 보장한다.

자원 모니터링은 각 자원 에이전트에 정의된 상태 확인 작업을 주기적으로 실행하여 이루어진다. 예를 들어, 웹 서버 자원의 경우 정기적으로 HTTP 요청을 보내 응답을 확인하고, 데이터베이스 자원의 경우 프로세스 실행 여부나 포트 연결 가능성을 점검한다. 이 모니터링 결과는 클러스터 정보 베이스에 실시간으로 기록되며, 모든 클러스터 노드가 이를 공유한다.

장애가 감지되면 페이스메이커는 사전에 정의된 정책에 따라 장애 조치를 시작한다. 일반적인 조치는 장애가 발생한 자원을 중지하고, 클러스터 내 다른 정상 노드에서 해당 자원을 다시 시작하는 것이다. 이 과정은 완전히 자동화되어 있으며, 관리자의 개입 없이도 서비스 중단 시간을 최소화한다. 장애 조치 정책은 자원 간의 의존성, 위치 제약 조건, 시작 및 정지 순서 등을 고려하여 세밀하게 구성할 수 있다.

이러한 모니터링과 장애 조치 메커니즘은 단순한 서비스 재시작을 넘어선다. 페이스메이커는 장애가 일시적인지 지속적인지를 판단하기 위해 재시도 횟수를 설정할 수 있으며, 특정 노드에 반복적으로 장애가 발생하면 해당 노드에서 모든 자원을 제거하고 격리하는 펜싱 작업을 유발할 수도 있다. 이를 통해 전체 고가용성 클러스터의 안정성을 한층 더 강화한다.

4.3. 부하 분산

Pacemaker의 부하 분산 기능은 단순한 장애 조치를 넘어서 클러스터 내의 자원을 효율적으로 분배하여 성능을 최적화하는 역할을 한다. 이는 여러 노드에 걸쳐 서비스 부하를 분산시킴으로써 단일 노드에 과도한 부담이 집중되는 것을 방지하고, 전체 시스템의 처리량과 응답성을 향상시킨다. 부하 분산은 주로 웹 서버 풀, 데이터베이스 복제본, 또는 컴퓨팅 작업과 같은 스케일 아웃 가능한 자원들을 관리할 때 활용된다.

Pacemaker는 자원 에이전트를 통해 각 자원의 부하 수준을 모니터링하고, 사전에 정의된 정책에 따라 자원의 위치를 동적으로 조정한다. 예를 들어, 특정 노드의 CPU 사용률이나 네트워크 연결 수가 임계값을 초과하면, Pacemaker는 해당 노드에서 실행 중인 일부 자원 인스턴스를 다른 여유 있는 노드로 마이그레이션할 수 있다. 이러한 부하 재분배는 서비스 중단 없이 이루어지며, 고가용성을 유지하면서 시스템 자원의 균형을 맞추는 데 기여한다.

부하 분산 정책은 Pacemaker의 클러스터 정보 베이스에 설정된 제약 조건을 통해 세밀하게 제어된다. 위치 제약 조건, 순서 제약 조건, 공동 위치 제약 조건과 함께 자원별 또는 전역적인 부하 관련 속성을 정의함으로써 관리자는 복잡한 부하 분산 시나리오를 구현할 수 있다. 이는 단일 서비스의 인스턴스를 여러 노드에 분산시키는 활성-활성 구성에서 특히 효과적이다.

구성 요소

역할

자원 에이전트

자원의 부하 메트릭(CPU, 메모리, 연결 수 등)을 수집하고 보고

클러스터 정보 베이스

부하 분산 정책과 임계값을 정의하는 제약 조건 저장

Pacemaker 핵심

보고된 부하를 분석하고, 정책에 따라 자원 배치 결정 및 실행

결과적으로 Pacemaker의 부하 분산 기능은 클러스터의 자원 활용도를 극대화하고, 성능 병목 현상을 사전에 예방하며, 궁극적으로 사용자에게 더 안정적이고 빠른 서비스를 제공하는 데 기여한다. 이는 전통적인 고가용성 솔루션이 제공하는 수동적 장애 대응에서 한 단계 발전한 능동적 성능 관리로 볼 수 있다.

5. 설치 및 구성

Pacemaker의 설치와 구성은 주로 리눅스 배포판의 패키지 관리자를 통해 이루어진다. 대부분의 주요 배포판은 공식 저장소에서 Pacemaker와 그 핵심 의존성인 Corosync를 패키지로 제공한다. 설치 후에는 pcs(Pacemaker/Corosync Configuration System)나 crm(Cluster Resource Manager) 쉘과 같은 명령줄 도구를 사용하여 클러스터를 설정하고 관리한다.

초기 구성 단계에서는 클러스터를 이루는 노드들을 인증하고 연결하는 작업이 필수적이다. 이는 pcs cluster setup 명령 등을 통해 수행되며, 노드 간 통신과 쿼럼 형성을 위해 Corosync의 토큰, TTL 같은 매개변수를 설정하게 된다. 또한 방화벽 설정을 적절히 조정하여 노드 간 필요한 포트가 개방되도록 해야 한다.

클러스터 기반이 구축되면, 고가용성을 보장할 애플리케이션 자원을 정의하고 구성하는 단계로 넘어간다. 여기에는 가상 IP 주소, 파일 시스템, 데이터베이스 서비스, 웹 서버 등 다양한 자원 유형을 생성하고, 이들 간의 시작 순서나 의존 관계, 선호하는 실행 노드 같은 제약 조건을 설정하는 작업이 포함된다. Pacemaker는 이러한 자원을 모니터링하며 장애 발생 시 정책에 따라 다른 노드로 자동으로 재배치하는 장애 조치를 수행한다.

6. 사용 사례

Pacemaker는 고가용성 클러스터를 구축해야 하는 다양한 인프라 환경에서 핵심적인 역할을 수행한다. 주로 데이터베이스 서버, 웹 서버, 파일 서버와 같은 중요한 애플리케이션이 단일 장애점(SPOF) 없이 지속적으로 서비스를 제공할 수 있도록 보장하는 데 사용된다. 예를 들어, MySQL 또는 PostgreSQL과 같은 데이터베이스 서버를 이중화하여 한 노드에 장애가 발생하면 Pacemaker가 자동으로 다른 노드로 서비스를 이전하는 장애 조치를 수행한다.

가상화 환경에서도 Pacemaker는 널리 활용된다. 하이퍼바이저 호스트나 가상 머신 자체를 클러스터 리소스로 관리하여, 물리적 서버 장애 시 가상 머신을 클러스터 내 다른 호스트로 자동으로 재시작하거나 마이그레이션할 수 있다. 이는 클라우드 컴퓨팅 플랫폼의 기반 인프라를 구성하거나, 프라이빗 클라우드 환경에서 서비스 연속성을 유지하는 데 필수적이다.

또한, Pacemaker는 스토리지 서비스의 고가용성을 관리하는 데도 적합하다. NFS 서버나 iSCSI 타겟과 같은 공유 스토리지 서비스를 클러스터 리소스로 구성하면, 스토리지 서비스 자체의 장애를 클러스터 수준에서 감지하고 복구할 수 있다. 이는 단순한 서버 장애 조치를 넘어서, 데이터 접근성과 무결성을 보호하는 데 기여한다.

주요 사용 사례

관리 대상 예시

목적

데이터베이스 고가용성

MySQL, PostgreSQL, Oracle Database

데이터 무결성 및 지속적인 접근성 보장

웹 및 애플리케이션 서비스

Apache HTTP Server, Nginx, Tomcat

웹 서비스의 중단 없는 가용성 제공

가상화 인프라

KVM/QEMU 가상 머신, libvirt 서비스

가상 머신의 자동 장애 복구 및 호스트 간 이전

파일 및 스토리지 서비스

NFS 서버, Samba, DRBD

공유 파일 시스템 및 스토리지 접근성 유지

엔터프라이즈 애플리케이션

ERP, 메일 서버, 디렉토리 서비스

핵심 비즈니스 애플리케이션의 가동 시간 최대화

이처럼 Pacemaker는 IT 운영의 핵심이 되는 거의 모든 소프트웨어 서비스를 클러스터 리소스로 통합 관리할 수 있어, 전통적인 데이터 센터부터 현대적인 하이브리드 클라우드 환경에 이르기까지 광범위한 고가용성 요구사항을 충족시킨다.

7. 관련 소프트웨어

7.1. Corosync

페이스메이커는 단독으로 동작하지 않으며, 클러스터의 기본 통신 및 멤버십 서비스를 제공하는 코로싱크(Corosync)와 함께 사용된다. 코로싱크는 고가용성 클러스터를 구성하는 노드들 간에 안정적인 메시지 전달과 그룹 멤버십 정보를 관리하는 핵심 미들웨어이다. 이는 클러스터 쿼럼을 유지하고, 노드 장애를 감지하며, 클러스터 상태 변화에 대한 통지를 페이스메이커에게 전달하는 역할을 담당한다.

코로싱크는 토큰 링 프로토콜을 기반으로 한 통신 계층을 제공하여, 클러스터 내 모든 노드가 일관된 상태 정보를 공유할 수 있도록 보장한다. 이렇게 형성된 신뢰할 수 있는 통신 채널 위에서 페이스메이커는 자원 관리와 장애 조치 결정을 내릴 수 있다. 코로싱크와 페이스메이커의 결합은 리눅스 기반 고가용성 클러스터 솔루션의 사실상 표준 아키텍처로 자리 잡았다.

페이스메이커와 코로싱크의 관계는 관리자와 신호 체계에 비유할 수 있다. 코로싱크가 노드들의 생사와 연결 상태를 실시간으로 모니터링하며 신호를 보내면, 페이스메이커는 그 신호를 받아 애플리케이션이나 서비스 같은 클러스터 자원을 실제로 제어하는 결정을 실행한다. 따라서 안정적인 고가용성 클러스터 구축을 위해서는 코로싱크의 정확한 구성과 네트워크 설정이 필수적이다.

7.2. Pacemaker Remote

Pacemaker Remote는 Pacemaker 고가용성 클러스터 관리 시스템의 확장 구성 요소이다. 이는 물리적 서버로 구성된 전통적인 클러스터 외부에 위치한 노드, 예를 들어 가상 머신, 클라우드 인스턴스 또는 지리적으로 분산된 서버를 클러스터에 통합할 수 있게 해주는 기능이다. 이를 통해 중앙의 Pacemaker 클러스터가 이러한 원격 엔티티의 자원을 마치 로컬 클러스터 노드인 것처럼 관리하고 모니터링할 수 있다.

Pacemaker Remote의 핵심 아키텍처는 경량화된 에이전트인 pacemaker_remoted 데몬에 기반한다. 이 데몬은 원격 호스트에 설치되어, 핵심 Pacemaker 구성 요소나 Corosync 메시징 계층 없이도 중앙 클러스터와 통신할 수 있게 한다. 원격 노드는 클러스터의 전체 상태 정보나 쿼럼 계산에 참여하지 않으며, 단순히 중앙 클러스터의 제어를 받는 자원 호스트 역할을 수행한다.

이 기술의 주요 사용 사례는 가상화 환경과 하이브리드 클라우드 시나리오이다. 예를 들어, 물리적 서버로 구성된 고가용성 클러스터가 VMware 또는 KVM 상의 가상 머신에서 실행되는 애플리케이션 자원을 관리할 수 있게 한다. 또한, 제한된 리소스를 가진 에지 장치나 분산된 지점의 서버를 중앙 데이터센터의 클러스터로 통합하여 관리 효율성을 높이는 데에도 활용된다.

Pacemaker Remote를 사용함으로써 기업은 더 넓은 범위의 인프라에 걸쳐 일관된 고가용성 정책을 적용할 수 있으며, 복잡한 분산 시스템을 단일 관리 지점에서 운영하는 것이 가능해진다. 이는 전통적인 클러스터링의 경계를 확장하여 더 유연한 IT 인프라 구성을 가능하게 한다.

8. 관련 문서

9. 참고 자료

  • ko.wikipedia.org

리비전 정보

버전r1
수정일2026.02.22 10:24
편집자unisquads
편집 요약AI 자동 생성