웹 응용 프로그램을위한 여러 PostgreSQL 서버가 있습니다. 일반적으로 핫 스탠바이 모드 (비동기 스트리밍 복제)에서 하나의 마스터 및 여러 슬레이브.
연결 풀링에 PGBouncer를 사용합니다. localhost의 데이터베이스에 연결하는 각 PG 서버 (포트 6432)에 하나의 인스턴스가 설치되어 있습니다. 트랜잭션 풀 모드를 사용합니다.
슬레이브에서 읽기 전용 연결을로드 밸런싱하기 위해 다음과 같이 conf와 함께 HAProxy (v1.5)를 사용합니다.
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
따라서 내 웹 응용 프로그램은 각 PG 슬레이브에 구성된 여러 pgbouncer의 부하 분산 연결 인 haproxy (포트 10001)에 연결됩니다.
다음은 현재 아키텍처의 표현 그래프입니다.
이것은 이와 같이 잘 작동하지만 일부는 이것을 다르게 구현한다는 것을 알고 있습니다. 웹 응용 프로그램은 여러 PG 서버에서 부하 분산되는 HAproxy에 연결된 단일 PGBouncer 인스턴스에 연결합니다.
가장 좋은 방법은 무엇입니까? 첫 번째 (내 현재) 또는 두 번째? 하나의 솔루션이 다른 솔루션보다 장점이 있습니까?
감사