들어가며
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 기술지원 업무를 수행하고 있습니다.

