TIL

postgres DB 이원화

하얀잔디 2025. 8. 10. 18:42

Postgres 이원화를 위한 툴 선택기

PostgreSQL을 운영하다 보면, 장애 상황에서도 서비스 중단 없이 운영하기 위해 이원화(Replication + Failover) 구성이 필수적입니다. 이번에 사내 환경에서 이를 구현하기 위해 어떤 툴을 쓸지 고민한 과정을 정리해 보았습니다.

 

결론부터

 

저는 repmgr을 선택했습니다.
이유는 단순합니다.

  1. 설정이 비교적 쉽다.
  2. 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