dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
postgresql Referans Mimarisi
RPO: 0 (Senkron Replikasyon ile)
RTO: < 15 saniye (Otomatik Lider Seçimi)

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.

Bileşenler:Patronietcd v3HAProxyKeepalivedpgBackRest
Mimari Topoloji & Akış Şeması
PostgreSQL + Patroni + etcd + HAProxy Enterprise HA Referans Mimari Şeması (Raft Quorum, DCS / Leader Lock, VIP)

📌 PostgreSQL + Patroni + etcd + HAProxy Enterprise HA Referans Mimari Şeması (Raft Quorum, DCS / Leader Lock, VIP)

Topoloji Yapılandırması
3x DB Node + 3x etcd Cluster + 2x HAProxy / Keepalived
İstemci Trafiği & Yönlendirme Mekanizması
11. İstemci Bağlantısı & VIP

Uygulamalar Keepalived sanal IP'si (VIP: 10.0.1.10) üzerinden HAProxy katmanına bağlanır.

22. R/W & R/O Port Ayrımı

Port 5000 doğrudan Patroni REST API'nin `/primary` döndüğü aktif lider sunucuya, Port 5001 ise sağlıklı replicalara yönlendirilir.

33. Senkron WAL Akışı

Primary sunucu commit onayını vermeden önce WAL kayıtlarını en az bir senkron standby düğümüne aktarır (RPO=0).

Otomatik Yük Devretme (Failover) Aşamaları
11. Kalp Atışı Kaybı

Primary düğüm etcd üzerindeki liderlik anahtarını (lease TTL: 30s) yenileyemez.

22. Yeni Lider Seçimi

Patroni daemonları arasında en güncel LSN pozisyonuna sahip standby düğüm yeni Lider ilan edilir.

33. HAProxy Sağlık Güncellemesi

HAProxy HTTP 8008 sağlık kontrolleri sayesinde 2 saniye içinde trafiği yeni primary sunucuya yönlendirir.

Üretim Konfigürasyon Dosyası
# 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: postgres
Küme Sağlık Kontrolü & CLI Teşhis Komutları
patronictl -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
Avantajlar
  • •Otomatik failover ve split-brain koruması
  • •Dinamik konfigürasyon yönetimi
  • •Bakım anında kontrollü switchover
Dikkat Edilmesi Gerekenler
  • •En az 3 adet etcd node gereksinimi
  • •Artan ağ ve altyapı karmaşıklığı
Canlıya Çıkış Kontrol Listesi
  • 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.