PostgreSQL + Patroni + etcd + HAProxy Yüksek Erişilebilirlik
Split-brain riskini sıfıra indiren Raft tabanlı dağıtık konsensüs (etcd) mimarisi. Master sunucu çöktüğünde 15 saniyede yeni lider seçilir ve sanal IP otomatik yönlendirilir.

📌 PostgreSQL + Patroni + etcd + HAProxy Enterprise HA Referans Mimari Şeması (Raft Quorum, DCS / Leader Lock, VIP)
Uygulamalar Keepalived sanal IP'si (VIP: 10.0.1.10) üzerinden HAProxy katmanına bağlanır.
Port 5000 doğrudan Patroni REST API'nin `/primary` döndüğü aktif lider sunucuya, Port 5001 ise sağlıklı replicalara yönlendirilir.
Primary sunucu commit onayını vermeden önce WAL kayıtlarını en az bir senkron standby düğümüne aktarır (RPO=0).
Primary düğüm etcd üzerindeki liderlik anahtarını (lease TTL: 30s) yenileyemez.
Patroni daemonları arasında en güncel LSN pozisyonuna sahip standby düğüm yeni Lider ilan edilir.
HAProxy HTTP 8008 sağlık kontrolleri sayesinde 2 saniye içinde trafiği yeni primary sunucuya yönlendirir.
# patroni.yml snippet
scope: pg-cluster-prod
namespace: /service
name: pg-node-01
etcd3:
hosts: 10.0.1.11:2379,10.0.1.12:2379,10.0.1.13:2379
bootstrap:
dcs:
ttl: 30
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
parameters:
wal_level: replica
max_wal_senders: 10
wal_keep_size: 2048MB
postgresql:
listen: 0.0.0.0:5432
connect_address: 10.0.1.11:5432
data_dir: /var/lib/postgresql/17/main
pgpass: /var/lib/postgresql/.pgpass
authentication:
replication:
username: replicator
superuser:
username: postgrespatronictl -c /etc/patroni/patroni.yml topology
patronictl -c /etc/patroni/patroni.yml list
etcdctl --endpoints=10.0.1.11:2379,10.0.1.12:2379,10.0.1.13:2379 endpoint health- •Otomatik failover ve split-brain koruması
- •Dinamik konfigürasyon yönetimi
- •Bakım anında kontrollü switchover
- •En az 3 adet etcd node gereksinimi
- •Artan ağ ve altyapı karmaşıklığı
- etcd düğümleri en az 3 farklı fiziksel/sanallaştırılmış host üzerinde dağıtılmalıdır.
- pg_rewind parametresi etkinleştirilmeli ve PostgreSQL superuser şifreleri etcd içinde güvenli tutulmalıdır.
- HAProxy health check aralığı 2000ms, timeout aralığı 5000ms olarak ayarlanmalıdır.
- WAL arşivleme için pgBackRest ve S3/NFS hedefi yapılandırılmalıdır.