Patroni PostgreSQL HA
Patroni·etcd·PgBouncer·HAProxy 기반 PostgreSQL 고가용성(HA) 클러스터를 Ansible Playbook 실행 한 번으로 구축하는 오픈소스 프로젝트입니다.
특징 및 강점
자동 페일오버
리더 노드 장애를 감지하면 수 초 내에 스탠바이가 자동 승격되어 서비스 중단을 최소화합니다.
Split-brain 방지
etcd 정족수(과반수) 합의 기반으로 리더를 선출해 리더가 둘 존재하는 상황을 원천 차단합니다.
고정 접속 주소(VIP)
Keepalived가 관리하는 VIP로 접속하므로 페일오버가 일어나도 애플리케이션 설정을 바꿀 필요가 없습니다.
무중단 설정 변경
Patroni를 통해 PostgreSQL 설정을 런타임에 반영하고 클러스터 전체에 일관되게 배포합니다.
구성 컴포넌트
검증된 표준 오픈소스 스택을 조합해 각 계층의 역할을 명확히 분리합니다.
PostgreSQL
데이터베이스 본체. 스트리밍 복제로 리더-스탠바이를 구성합니다(14~17 지원, 기본 16).
Patroni
클러스터의 지휘자. 리더 선출·복제 구성·페일오버를 자동으로 관리합니다.
etcd
클러스터 상태 저장소. 정족수 합의로 리더 정보를 안전하게 보관합니다.
PgBouncer
경량 커넥션 풀러. 대량 접속을 효율적으로 중개해 DB 부하를 줄입니다.
HAProxy
요청 길안내. 현재 리더를 판별해 읽기·쓰기 트래픽을 올바른 노드로 보냅니다.
Keepalived
VIP 관리자. 장애 시에도 하나의 고정 접속 주소를 유지합니다.
아키텍처
애플리케이션 → VIP → HAProxy → PgBouncer → PostgreSQL로 이어지는 접속 경로를 etcd 합의가 뒷받침합니다.
배포 방식
Ansible Playbook으로 전 과정을 자동화하며, 인프라 규모에 맞춰 두 가지 토폴로지를 지원합니다.
분리형 구성
etcd 전용 3대 + DB 2대 이상으로 역할을 분리해 대규모·미션 크리티컬 환경에 적합합니다.
통합형 구성
서버 3대에 모든 컴포넌트를 함께 배치해 최소 자원으로 HA를 구성합니다.
Ansible 자동화
Debian/Ubuntu·RHEL/Rocky를 지원하는 멱등(idempotent) Playbook으로 반복 실행해도 안전합니다.