오픈소스 인사이트
home
오픈소스 기술 동향
home

PostgreSQL Patroni 기반 HA 구성 및 PoC 리뷰

7 more properties

📌 들어가며

PostgreSQL은 안정적인 데이터베이스 운영을 위해 고가용성(HA) 구성이 중요합니다.
이번 PoC에서는 PostgreSQL 16 기반으로 Patroni, etcd, PgBouncer, HAProxy, Keepalived, pgBackRest를 활용하여 데이터베이스 장애 발생 시 자동 Failover와 서비스 연속성을 확보할 수 있는 환경을 구성하였습니다.

1. 소프트웨어 구성 및 버전

PoC 환경에서 사용한 주요 소프트웨어와 버전은 다음과 같습니다.
소프트웨어
버전
주요 역할
PostgreSQL
16.15
데이터베이스
Patroni
4.1.5
HA 관리 및 자동 Failover
etcd
3.4.3
분산 합의 및 Leader 관리
PgBouncer
1.25.2
Connection Pooling
HAProxy
2.8.16-0
DB 연결 분산 및 라우팅
Keepalived
2.2.8
VIP 관리 및 Failover
pgBackRest
2.59.1
백업 및 복구

2. PoC 내부 구성

총 6대의 서버와 1개의 VIP를 활용하여 PostgreSQL HA 환경을 구성하였습니다.
•
test1 ~ test3: PostgreSQL + Patroni + etcd + PgBouncer
•
test4: HAProxy + Keepalived (MASTER)
•
test5: HAProxy + Keepalived (BACKUP)
•
test6: pgBackRest Repository 및 Restore 검증
•
VIP: 10.0.2.40
서비스 접속 경로는 다음과 같습니다.
Application → VIP → HAProxy → PgBouncer → PostgreSQL
해당 구조를 통해 데이터베이스 장애뿐만 아니라 HAProxy 서버 장애에 대해서도 서비스 연속성을 확보할 수 있도록 구성하였습니다.

3. 구성도

4. Patroni 및 etcd 기반 HA

Patroni는 PostgreSQL의 Primary 및 Replica 상태를 관리하고, 장애 발생 시 자동으로 Failover를 수행하는 HA 솔루션입니다.
etcd는 분산 합의 기반의 저장소로, Patroni가 Leader 상태를 관리하고 클러스터 내에서 Primary를 결정하는 데 활용됩니다.
주요 특징은 다음과 같습니다.
•
자동 Failover: Primary 장애 시 정상 Replica를 새로운 Primary로 승격
•
Leader 관리: etcd를 활용한 클러스터 리더십 관리
•
Replica 재구성: 장애 노드 복구 후 Replica로 재참여
•
Split-Brain 방지: 분산 리더 잠금 및 적절한 장애 제어를 통한 다중 Primary 방지

5. HAProxy 및 Keepalived

HAProxy는 PostgreSQL의 Primary 상태를 확인하여 애플리케이션 연결을 적절한 DB 노드로 전달합니다.
Keepalived는 VIP를 관리하며, HAProxy 서버 장애 시 다른 서버로 VIP를 이전하는 역할을 수행합니다.
이를 통해 DB 계층과 Proxy 계층의 이중화를 구성하였습니다.
단, Failover 발생 시 기존 DB 연결은 끊어질 수 있으므로 애플리케이션의 재접속 및 트랜잭션 재시도 처리가 필요합니다.

6. PgBouncer 및 pgBackRest

PgBouncer는 Connection Pooling을 통해 PostgreSQL에 연결되는 세션을 효율적으로 관리하고, 불필요한 연결 생성에 따른 부하를 줄여줍니다.
pgBackRest는 PostgreSQL의 백업 및 복구를 담당하며, 별도의 Repository 서버를 구성하여 백업 데이터 관리와 Restore 검증이 가능하도록 하였습니다.
이를 통해 HA뿐만 아니라 데이터 복구를 위한 기반도 마련하였습니다.

🎯 정리하며

이번 PoC에서는 PostgreSQL을 중심으로 Patroni + etcd 기반 DB 자동 Failover, HAProxy + Keepalived 기반 접속 경로 이중화, PgBouncer 기반 연결 관리, pgBackRest 기반 백업 및 복구 환경을 구성하였습니다.
단순히 데이터베이스를 이중화하는 것을 넘어 서비스 접속부터 장애 대응, 백업 및 복구까지 고려한 PostgreSQL HA 아키텍처를 검토하였다는 점에서 의미가 있습니다.
실제 운영 환경에 적용하기 위해서는 네트워크 장애, 노드 장애, Split-Brain 방지, Failover 이후 재접속 및 복구 절차 등에 대한 추가적인 검증이 필요합니다.

📚 참고 자료

김원 프로
오픈소스사업부 오픈소스기술팀
오픈소스 DBMS 엔지니어로서, 삼성 그룹 계열사 및 대외 금융권 기업들의 DBMS 기술지원 업무를 수행하고 있습니다.