PostgreSQL

PostgreSQL: 고가용성(HA) 도구 비교 - Patroni vs repmgr

dewstream 2024. 12. 10. 14:33

※ Comparison of PostgreSQL HA Tools.
 
안녕하세요. 듀스트림입니다.
오늘은 PostgreSQL의 HA(High Availability) 도구들을 살펴보겠습니다.
현재 PostgreSQL에서 가장 많이 사용되고 있는 오픈 소스 HA 도구는 Patroni와 repmgr이 있습니다.
 
두 도구의 차이를 아래 표로 비교해 보았습니다.

구분 Patroni repmgr
최소 노드 수 3개 이상 2개 이상 (Witness 노드 사용 시 3개 이상)
스플릿 브레인 방지 여부 ✅ (외부 키-값 스토어 사용) 🟡 (repmgr만으로는 완전 방지 불가)
외부 의존성 Etcd, Consul, Zookeeper 등 필요 완전한 스플릿 브레인 방지 시 외부 의존 필요
자동 장애 조치 ✅ (repmgrd 사용 시 가능)
자동 클러스터 복구 🟡 (재동기화 수동 조치 필요)
VIP 관리 외부 도구 필요 외부 도구 필요
로드밸런싱 외부 도구 필요 외부 도구 필요
확장성 매우 우수 (동적 노드 추가 가능) 제한적
커뮤니티 지원 활발한 오픈 소스 커뮤니티 활발하지 않음

 

정리하자면,

1. 2개의 노드만 사용해야 하는 환경에서는 repmgr을 선택하는 것이 적합합니다.
• Patroni는 etcd, Consul과 같은 외부 의존성이 필요하며, 최소 3개 이상의 노드 구성을 권장합니다.
• repmgr은 2개의 노드만으로도 고가용성(HA)을 구현할 수 있습니다.
 
2. 3개 이상의 노드를 사용할 수 있고, 확장이 어려운 On-Premise 환경에서는 두 도구 모두 사용할 수 있습니다.
• 가볍고 단순한 구성을 원한다면 repmgr이 더 나은 선택일 수 있습니다.

→ witness 노드 사용 시 Primary 노드의 완전한 네트워크 단절을 제외한 트러블 상황에서의 스플릿 브레인을 방지할 수 있습니다. (repmgr은 Primary Demote 미지원)


• 안정성과 자동화 수준이 더 중요하다면 Patroni가 적합합니다.
→ Patroni는 자동화된 리더 선출, 장애 조치, Split-Brain 방지 등 기능이 더 강력하지만, 외부 종속성과 운영 복잡도가 더 높습니다.
 
3. 3개 이상의 노드를 사용할 수 있으며, 확장이 필요한 시스템(클라우드 환경 등)에서는 Patroni가 더 적합합니다.
• Patroni는 동적으로 노드를 추가할 수 있는 유연성을 제공하며, 확장성이 뛰어납니다.
• 노드를 추가할 때 복잡한 절차 없이 자동으로 클러스터에 합류할 수 있습니다.
 
이번 포스팅은 여기까지입니다. 다음 포스팅도 기대해주세요!