dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/PostgreSQL/Mimari Tarifler/patroni-etcd-haproxy
[Mimari]PostgreSQL PostgreSQL 16 / 17 · Patroni 3.3+Expert
25 dk okuma

PostgreSQL + Patroni + etcd + HAProxy Yüksek Erişilebilirlik

Raft Dağıtık Konsensüs, Otomatik Failover (<15s) ve RPO=0 Mimarisi

Yazar / Standart:Principal Infrastructure Architect
Topoloji
3x DB Node + 3x etcd Cluster + 2x HAProxy / Keepalived
RPO (Recovery Point Objective)
0 (Senkron Replikasyon ile)
RTO (Recovery Time Objective)
< 15 saniye (Otomatik Lider Seçimi)
Mimari Bileşenleri
Patronietcd v3HAProxyKeepalivedpgBackRest
PostgreSQL + Patroni + etcd + HAProxy Yüksek Erişilebilirlik

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

Mimari Avantajları
  • •Otomatik failover ve split-brain koruması
  • •Dinamik konfigürasyon yönetimi
  • •Bakım anında kontrollü switchover
Ödünleşimler & Gereksinimler
  • •En az 3 adet etcd node gereksinimi
  • •Artan ağ ve altyapı karmaşıklığı

İstemci & Trafik Akışı

1. İstemci Bağlantısı & VIP

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

2. 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.

3. 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)

1. Kalp Atışı Kaybı

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

2. Yeni Lider Seçimi

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

3. 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.

Canlıya Alma 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.
Referans Konfigürasyon Şablonu
# 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
Canlı Sağlık & Durum Kontrol 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

PostgreSQL Diğer Üretim Rehberleri

Aynı veritabanı motoruna ait doğrulanmış diğer içerikler.

Tümünü Gör