使用PgPool连接两台服务器

时间:2015-11-12 19:15:27

标签: postgresql pgpool

我正在尝试配置pgpool以在两个服务器之间使用负载平衡(两者都运行Debian 8.2和Postgresql 9.4)。 我已经在两者之间进行流式复制(153中的Master和155中的Slave)。现在我安装了PgPool并配置了两个服务器:

backend_hostname0 = '10.0.0.153'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresq/9.4/main'

backend_hostname1 = '10.0.0.155'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/var/lib/postgresq/9.4/main'

并配置pool_hba,pool_passwd和load_balance_mode。 我的问题是:当我尝试通过pgpool使用psql时,它显示一个错误:  “psql:致命:用户'postgres'”的密码验证失败“

但是如果我评论backend1的所有部分,不做更改,并重新启动pgpool2服务,我可以使用完全相同的用户和密码在同一台机器上连接而没有问题。我不知道是否应该设置另一个参数,以便使用两台服务器并在它们之间实现负载平衡。

我可以使用psql从每个客户端连接到每个后端服务器,因此凭据不应该是问题。

PS:不知道是否有帮助。但是在pgpool.conf中,replication_mode已关闭,因为我正在使用Streaming Replication,据我所知,可以使用load_balance而无需通过pgpool进行复制。

感谢。

2 个答案:

答案 0 :(得分:0)

尝试登录pgppol服务器并运行命令: pg_md5 -m -u postgres your_password_for_postgres_user

现在查看pool_passwd的内容。它应该包含类似的内容:

postgres的:md55ebe2294ecd0e0f08eab7690d2a6ee69

现在重新启动你的pgpool并再次尝试连接。希望你的问题能得到解决。

答案 1 :(得分:0)

pgpool的负载均衡可以与流复制一起使用,因为您需要将master_slave_mode和load_balance_mode设置为true,并将master_slave_sub_mode设置为stream。

对于您要获得的身份验证错误,请检查pgpool主机的pg_hba.conf设置。并且根据指定的身份验证方法的类型,请参阅pgpool文档中的相应客户端身份验证部分。

http://www.pgpool.net/docs/latest/pgpool-en.html#hba