Perbandingan Patroni dan pg_auto_failover dalam High Availability PostgreSQL

1. Pendahuluan

High Availability (HA) merupakan strategi dalam sistem basis data untuk menjamin layanan tetap tersedia walaupun terjadi kegagalan perangkat keras, jaringan, atau perangkat lunak pada salah satu komponen. PostgreSQL sendiri menyediakan replikasi dan streaming log (WAL), tetapi tidak memiliki kemampuan failover otomatis secara built-in, sehingga solusi eksternal diperlukan, seperti Patroni dan pg_auto_failover.

2. Konsep High Availability dalam PostgreSQL

HA pada PostgreSQL umumnya mengandalkan:

  • Streaming replication — sinkron atau asinkron untuk menjaga duplikasi data antar node.

  • Monitoring cluster — deteksi failover ketika primary gagal.

  • Automated failover — promosi replica menjadi primary secara otomatis tanpa campur tangan manual.

  • Routing klien — koneksi aplikasi diarahkan secara transparan ke primary aktif.  

Solusi HA seperti Patroni (menggunakan distributed configuration store seperti etcd/Consul/ZooKeeper) dan pg_auto_failover (menggunakan monitor node), masing-masing menawarkan pendekatan berbeda untuk mekanisme failover otomatis dan manajemen cluster.

3. Patroni

Patroni adalah framework/open-source untuk mengatur HA PostgreSQL yang memanfaatkan DCS (Distributed Configuration Store) seperti etcd, Consul atau ZooKeeper untuk proses leader election dan konsensus status cluster.

Fitur Utama Patroni

  • Otomatisasi failover dan switchover. Patrion yang mendeteksi primary gagal dan mengangkat standby sebagai primary. 

  • Monitoring cluster terus-menerus dan update status ke DCS. 

  • Manajemen konfigurasi PostgreSQL secara sentral melalui REST API.

  • Integrasi dengan load balancer seperti HAProxy atau VIP Manager untuk routing koneksi aplikasi tanpa gangguan

Arsitektur Patroni

Patroni mengontrol:

  • node PostgreSQL,

  • DCS (etcd/Consul/ZooKeeper),

  • load balancer (mis. HAProxy),

  • pengelolaan replication slots dan konfigurasi otomatis.

Ini memungkinkan HA tingkat lanjut dengan pemantauan dan failover konsisten serta split-brain prevention.

4. pg_auto_failover

pg_auto_failover adalah ekstensi dan layanan PostgreSQL yang menyediakan otomatisasi failover melalui Monitor Node yang berdedikasi tanpa memerlukan DCS eksternal. Monitor ini menjalankan state machine untuk memantau kesehatan semua node dan melakukan promosi replica saat primary gagal.

Fitur Utama pg_auto_failover

  • Monitor node khusus: Orkestrasi failover dilakukan oleh monitor yang memantau semua node PostgreSQL.

  • State machine untuk HA: Setiap perubahan status node direfleksikan oleh monitor.

  • CLI pg_autoctl untuk setup, monitoring, dan operasi cluster. 

  • Mendukung replikasi sinkron/asinkron, dan memperbarui konfigurasi synchronous_standby_names.

Aspek
Patroni
pg_auto_failover
ArsitekturMenggunakan DCS eksternal untuk konsensus (etcd/Consul/ZooKeeper)Menggunakan monitor node internal tanpa DCS eksternal
Kompleksitas SetupLebih kompleks (memerlukan DCS + load balancer)Relatif lebih sederhana
Skalabilitas ClusterSangat fleksibel untuk cluster besarBisa diskalasi dengan banyak standby
Integrasi dengan InfrastrukturBanyak tooling dan integrasi populerIntegrasi dengan tooling eksternal lebih terbatas
Manajemen KonfigurasiDikelola via Patroni & DCSDikelola via monitor dan pg_autoctl
DependencyMemerlukan etcd/Consul dan load balancerTidak memerlukan DCS eksternal

Catatan: Patroni cocok untuk enterprise yang memerlukan HA kompleks dengan toleransi kesalahan tinggi, sedangkan pg_auto_failover cocok bagi sistem yang ingin HA cepat dengan setup sederhana

6. Kelebihan dan Kekurangan

6.1 Kelebihan Patroni

  • Fleksibilitas tinggi: Mendukung cluster besar dan konfigurasi kompleks. 

  • Konsensus kuat: DCS memberikan mekanisme leader election yang robust.

  • Integrasi tooling luas: Banyak integrasi dengan monitoring dan routing.

6.2 Kekurangan Patroni

  • Setup kompleks: Membutuhkan DCS dan komponen tambahan (etcd, HAProxy).

  • Management overhead: Pengelolaan DCS sendiri perlu perhatian. 

6.3 Kelebihan pg_auto_failover

  • Setup lebih sederhana tanpa DCS eksternal.

  • Monitoring & failover otomatis dengan satu service (monitor).

  • CLI terpadu (pg_autoctl) memudahkan pengelolaan cluster.

6.4 Kekurangan pg_auto_failover

  • Monitor node bisa menjadi SPOF jika tidak diproteksi sendiri. 

  • Fleksibilitas lebih terbatas dibanding Patroni dalam konfigurasi lanjutan.

  • Integrasi tooling ekosistem kurang kompleks dibanding Patroni. 

7. Kesimpulan

  • Patroni cocok dipilih untuk kebutuhan enterprise dan sistem yang butuh kontrol granular terhadap replikasi, konsensus, serta integrasi ke infrastruktur besar.

  • pg_auto_failover cocok untuk implementasi HA yang lebih cepat dan sederhana, dengan dependensi sistem minimal.

Widget Odoo