Postgres 이원화를 위한 툴 선택기
PostgreSQL을 운영하다 보면, 장애 상황에서도 서비스 중단 없이 운영하기 위해 이원화(Replication + Failover) 구성이 필수적입니다. 이번에 사내 환경에서 이를 구현하기 위해 어떤 툴을 쓸지 고민한 과정을 정리해 보았습니다.
결론부터
저는 repmgr을 선택했습니다.
이유는 단순합니다.
- 설정이 비교적 쉽다.
- etcd 같은 외부 라이브러리가 필요 없다.
최종적으로 HAProxy + repmgr 조합으로 구성했습니다.
후보군 비교
1. pgpool-II
- 장점: 필요한 툴이 적고, 간단하게 로드밸런싱과 장애 감지를 처리할 수 있습니다.
- 단점: VIP(Virtual IP) 설정이 필요합니다.
- 문제는 우리 회사처럼 망이 복잡한 환경에서는 VIP를 설정하는 과정이 상당히 번거롭다는 점이었습니다. 네트워크 정책, 방화벽, 라우팅 등 여러 제약이 있어 작업 난이도가 높아질 수 있습니다.
2. Patroni
- 장점: 업계에서 안정성이 높다고 많이 알려져 있습니다.
- 단점: etcd(혹은 Consul, ZooKeeper 중 하나)가 필수입니다.
- 특히 etcd를 사용하려면 최소 3대의 노드가 필요합니다. 테스트 환경이 아니라 실제 운영 환경에서 이 구성을 갖추려면 인프라 리소스가 더 필요하고, 관리 복잡성도 커집니다.
3. repmgr
- 장점: 심플한 구성. 외부 라이브러리 의존성이 거의 없습니다.
- 단점: Patroni처럼 자동화 기능이 풍부하진 않지만, 필요한 핵심 기능(Replication 관리, Failover, Switchover)은 충분히 지원합니다.
- 저처럼 빠르게 이원화를 구현해야 하면서도 불필요한 인프라 확장을 피하고 싶은 경우 적합합니다.
최종 구성
- HAProxy: 클라이언트 연결을 관리하고, 장애 시 자동으로 다른 노드로 연결을 전환.
- repmgr: PostgreSQL Replication 및 Failover 관리.
이 조합은 설치와 설정이 간단하고, 현재 사내 환경에서 무리 없이 적용할 수 있었습니다.
마무리
PostgreSQL 이원화는 환경, 리소스, 운영 정책에 따라 최적의 툴이 달라질 수 있습니다.
- 간단함과 빠른 구축이 필요하면 repmgr
- 고급 자동화와 안정성이 필요하면 Patroni
- VIP 기반 단일 접근 포인트가 중요하면 pgpool-II
'TIL' 카테고리의 다른 글
| Socket.IO에서 JWT 만료 시 아예 연결을 차단하는 방법 (0) | 2025.09.05 |
|---|---|
| Docker 로그와 PM2, Logger, 색상 출력 – 실무에서 겪은 이야기 (3) | 2025.08.15 |
| Ingress Controller rewrite 안될때 (2) | 2025.07.30 |
| 서버가 달라도 빠르게 통신하는 방법 ( 쿠버네틱스 ) (1) | 2025.07.29 |
| Node 도커 이미지 메모리 용량 줄이는 방법 (0) | 2025.07.24 |