PgBouncer bağlantı havuzu
PostgreSQLSeviye: OrtaSüre: 30–45 dkPGDG repo'sundan PgBouncer kurulumu: transaction ya da session havuz modu, auth_query (SECURITY DEFINER fonksiyon) ya da userlist.txt ile scram-sha-256 kimlik doğrulama, veritabanının max_connections ve CPU değerine göre hesaplanmış havuz boyutları, systemd ve isteğe bağlı so_reuseport ile çoklu süreç. Sonunda yönetim konsolu (SHOW POOLS/STATS), uygulama bağlantı dizesi ve transaction modu uyumluluk kontrol listesi.
Ne zaman açılır: uygulamalar yüzlerce/binlerce bağlantı açıyor, sorry, too many clients already alınıyor ya da bağlantı açma maliyeti yüksek. PgBouncer HA ya da yedek çözümü değildir: failover için streaming replication ya da Patroni, yedek için pgBackRest gerekir.
Yapı: PgBouncer veritabanı sunucusunda ya da ayrı sunucuda; Patroni'de HAProxy/VIP önünde
Başlamadan önce
- PostgreSQL pg-install rehberiyle kurulu ve çalışıyor; … veritabanı ve … kullanıcısı (scram-sha-256 parolalı) var.
- PostgreSQL …Patroni cluster'ı (pg-patroni) çalışıyor; … şu an Leader…primary'si (pg-streaming) çalışıyor…pg-install rehberiyle kurulu ve çalışıyor…; … veritabanı ve … kullanıcısı (scram-sha-256 parolalı) var.
- Patroni cluster'ı … sağlıklı: bir Leader, replica'lar streaming; HAProxy'nin yazma portu (…:…) yalnız leader'a gidiyor.
- Uygulama kullanıcısının parolası SCRAM-SHA-256 biçiminde saklanıyor (eski md5 özetli kullanıcıların parolası password_encryption = scram-sha-256 iken yeniden verilmeli).
- Formdaki max_connections (…) ve CPU (…) veritabanı sunucusundaki gerçek değerlerle aynı (havuz boyutları bunlara göre hesaplanıyor).
- PgBouncer sunucusu veritabanına (…HAProxy/VIP ……:…) erişebiliyor; uygulama sunucuları PgBouncer'a (…:…) erişebiliyor.
- Port … boş.
- Uygulama ekibiyle havuz modu konuşuldu: transaction modunda oturum durumuna dayanan özellikler (aşağıdaki kontrol listesi) kullanılmıyor.
- Parola özetlerini veritabanı sunucusundan PgBouncer sunucusuna kopyalamak için scp (root ya da sudo yetkili kullanıcı) erişimi var veya dosyayı başka güvenli yolla taşıyacaksınız.
Rehberin aşamaları
- PgBouncer kurulumu — PGDG repo'sunu ekle · PGDG repo'sunu ekle · PgBouncer'ı kur
- Veritabanı tarafı — Rolü doğrula: bu sunucu …Leader…primary… mi? · Yönetim ve doğrulama kullanıcılarını oluştur · Yönetim ve doğrulama kullanıcılarını oluştur · Parolaları ver · Parolaları ver · pg_hba.conf'a PgBouncer sunucusunu ekle …
- PgBouncer yapılandırması — auth_user parolasını ekle · pgbouncer.ini yaz · Dosya tanımlayıcı sınırını ayarla · PgBouncer'ı başlat
- Çoklu süreç (so_reuseport) — Süreç başına yapılandırma dosyaları · systemd şablon servisi · Tek süreçli servisi kapat, süreçleri başlat
- Doğrulama — Uygulama kullanıcısıyla bağlan · Leader'a gidildiğini doğrula · Yönetim konsolunu kontrol et · Firewall'da PgBouncer portunu aç
- Uygulama tarafı ve kurulum sonrası — Uygulama bağlantı dizesi · Transaction modu uyumluluk kontrol listesi · Havuzu izle · Ayar değişikliği ve yeniden yükleme