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_autoctluntuk setup, monitoring, dan operasi cluster. Mendukung replikasi sinkron/asinkron, dan memperbarui konfigurasi
synchronous_standby_names.
|
|
| |||
| Arsitektur | Menggunakan DCS eksternal untuk konsensus (etcd/Consul/ZooKeeper) | Menggunakan monitor node internal tanpa DCS eksternal | |||
| Kompleksitas Setup | Lebih kompleks (memerlukan DCS + load balancer) | Relatif lebih sederhana | |||
| Skalabilitas Cluster | Sangat fleksibel untuk cluster besar | Bisa diskalasi dengan banyak standby | |||
| Integrasi dengan Infrastruktur | Banyak tooling dan integrasi populer | Integrasi dengan tooling eksternal lebih terbatas | |||
| Manajemen Konfigurasi | Dikelola via Patroni & DCS | Dikelola via monitor dan pg_autoctl | |||
| Dependency | Memerlukan etcd/Consul dan load balancer | Tidak 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.