pgpool2负载均衡不起作用

gdo*_*ald 8 django pgpool postgresql-9.1

我有一个Python/Django应用程序,需要在不久的将来某个时候进行数据库负载平衡.与此同时,我正在尝试学习在本地虚拟机设置上实现pgpool.

我有4个Ubuntu 12.04虚拟机:

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
Run Code Online (Sandbox Code Playgroud)

我有pgpool-II版本3.1.1,我的数据库服务器正在运行PostgreSQL 9.1.

我的应用程序的数据库连接指向192.168.1.80:9999,它工作正常.

问题是当我使用Apache ab向它抛出一些负载时,SELECT查询似乎都没有平衡.所有负载都转到我的db1 master.另外,非常令人担忧的是池服务器本身的负载,与db1相比真的很高,平均可能高出8-10倍.与此同时,我的db2和db3服务器的负载几乎为零,它们似乎只是从db1复制,这对我的ab测试来说不是非常负载.

ab -n 300 -c 4 -C 'sessionid=80a5fd3b6bb59051515e734326735f80' http://192.168.1.17:8000/contacts/
Run Code Online (Sandbox Code Playgroud)

这会将我的池服务器上的负载驱动到大约2.3.db1上的负载大约为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
Run Code Online (Sandbox Code Playgroud)

我的整个配置在这里:

http://pastebin.com/raw.php?i=wzBc0aSp
Run Code Online (Sandbox Code Playgroud)