Bir web uygulaması için birden fazla PostgreSQL sunucum var. Genellikle, bekleme modunda bir ana ve birden fazla slave (eşzamansız akış çoğaltma).
Bağlantı havuzu oluşturmak için PGBouncer kullanıyorum: localhost üzerindeki veritabanına bağlanan her PG sunucusunda (port 6432) yüklü bir örnek. İşlem havuzu modunu kullanıyorum.
Slave'lerdeki salt okunur bağlantılarımı yük dengelemek için HAProxy (v1.5) 'i az ya da çok bir conf ile kullanıyorum:
listen pgsql_pool 0.0.0.0:10001
mode tcp
option pgsql-check user ha
balance roundrobin
server master 10.0.0.1:6432 check backup
server slave1 10.0.0.2:6432 check
server slave2 10.0.0.3:6432 check
server slave3 10.0.0.4:6432 check
Bu nedenle, web uygulamam, her PG bağımlı biriminde yapılandırılmış birden çok pgbouncer üzerindeki yük dengesi bağlantılarını haproxy'ye (bağlantı noktası 10001) bağlar.
İşte mevcut mimarimin temsil grafiği:
Bu oldukça iyi çalışıyor, ancak bazılarının bunu oldukça farklı şekilde gerçekleştirdiğinin farkındayım: web uygulaması, birden çok PG sunucusu üzerinde yük dengesini sağlayan HAproxy'ye bağlanan tek bir PGBouncer örneğine bağlanır:
En iyi yaklaşım nedir? Birincisi (benim şu anki) veya ikincisi mi? Bir çözümün diğerine göre avantajları var mı?
Teşekkürler