近い将来、ある時点でデータベースのロードバランシングが必要なPython/Djangoアプリケーションがあります。その間、私はローカル仮想マシンのセットアップでpgpoolを実装する方法を学びたいと考えています。pgpool2ロードバランシングが動作しない
私は4つのUbuntu 12.04の仮想マシンがあります。私は、pgpool-IIのバージョン3.1.1を持っているし、私のデータベースサーバが のPostgreSQL 9.1を実行している
192.168.1.80 <- pool, pgppool2 installed and accessible
192.168.1.81 <- db1 master
192.168.1.82 <- db2 slave
192.168.1.83 <- db3 slave
を。
私のアプリケーションのdb接続は192.168.1.80:9999を指しており、うまくいきます。
問題は、Apache abを使用して負荷がかかり、 のSELECTクエリのどれもが均衡していないように見える場合です。すべての負荷は私のdb1 マスタに送られます。また、かなりプールサーバー自体の負荷は、 それはdb1に比べて本当に高いです、多分平均8~10回 高いです。私のdb2とdb3サーバはほぼゼロの負荷を持っていますが、 db1からの複製にしか見えません。非常に負荷がかかりません。 abとの私のテストでは集中的です。
ab -n 300 -c 4 -C 'sessionid=80a5fd3b6bb59051515e734326735f80' http://192.168.1.17:8000/contacts/
これは、プールサーバーの負荷を約2.3まで上げます。の負荷は約0.4で、db2とdb3の負荷はほぼゼロです。
誰かが私の設定を見て、私が間違っているかどうか確認できますか?
backend_hostname0 = '192.168.1.81'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresql/9.1/main'
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_hostname1 = '192.168.1.82'
backend_port1 = 5433
backend_weight1 = 1
backend_data_directory1 = '/var/lib/postgresql/9.1/main'
backend_flag1 = 'ALLOW_TO_FAILOVER'
backend_hostname2 = '192.168.1.83'
backend_port2 = 5434
backend_weight2 = 1
backend_data_directory2 = '/var/lib/postgresql/9.1/main'
backend_flag2 = 'ALLOW_TO_FAILOVER'
load_balance_mode = on
私の全体の設定はここにある:
http://pastebin.com/raw.php?i=wzBc0aSp