Datorită faptului că nu am suficiente informații despre arhitectura utilizată și se bazează doar pe un exemplu foarte descriptiv - încarc informațiile obținute din cercetări permițând membrilor comunității să completeze/extinde acest răspuns.
Bazat pe această documentație PgBouncer nu are o configurație internă multi-gazdă. Pentru a echilibra interogările între mai multe servere se pot folosi instrumente externe, cum ar fi:
DNS round-robin. Utilizați mai multe IP-uri în spatele unui nume DNS. PgBouncer nu caută DNS de fiecare dată când este lansată o nouă conexiune. În schimb, memorează în cache toate IP-urile și face round-robin intern. Notă: dacă există mai mult de 8 IP-uri în spatele unui nume, backend-ul DNS trebuie să accepte protocolul EDNS0. Consultați README pentru detalii.
Folosește o Echilibrator de încărcare a conexiunii TCP. Fie EU VERSUS sau HAProxy par a fi alegeri bune. Pe partea PgBouncer, poate fi o idee bună să faci server_lifetime mai mic și, de asemenea, întoarce server_round_robin on: în mod implicit, conexiunile inactive sunt reutilizate de un algoritm LIFO, care poate să nu funcționeze atât de bine atunci când este necesară echilibrarea sarcinii.
Acest blog explică de ce să folosiți un alt mecanism de echilibrare a încărcăturii cu pgBouncer.
În conformitate cu acesta, nu ar trebui să utilizați pgBouncer în loc de HAProxy sau alt echilibrator de încărcare.Este evident că pgBouncer are mai multe caracteristici configurabile care abordează ceea ce se adresează un echilibrator de încărcare - dar acest lucru este cel mai frecvent ca mediile de producție să folosească HAProxy sau alt echilibrator de încărcare pentru HA. Motivul pentru aceasta este că HAProxy echilibrează mai bine sarcinile de lucru pe serverele live decât pgbouncer.
Deși pgbouncer este mai bun pentru gruparea conexiunilor postgres, ar putea fi mai bine să folosiți un demon mic care îndeplinește perfect o sarcină, în loc de unul mai mare care face două sarcini, dar mai rău.
De asemenea, este o idee bună să utilizați PgPool. Vezi si acest raspuns.
Aici sunt, de asemenea, un articol care compară PgBouncer și PgPool. O mică parte din asta:
| | PGBOUNCER | PGPOOL-II |
|--|--|--|
| Valabilitate ridicată |Nu este acceptat. |Disponibilitate înaltă PostgreSQL este suportat prin procesele de supraveghere încorporate Pgpool-II. Câştigător! |
|Echilibrarea sarcinii|Nu este acceptat - PgBouncer recomandă utilizarea HAProxy pentru disponibilitate ridicată și echilibrarea sarcinii.| Acceptă echilibrarea automată a sarcinii - este chiar suficient de inteligent pentru a redirecționa cererile de citire către standby și pentru a scrie către master. Câştigător! |