我正在尝试在2+网络服务器上运行pgpool,这些服务器也有一个rails应用程序等。这个想法是通过slony或流式传输和通过pgpool进行故障转移。将查询与replca平衡并将Web服务器连接合并,这也很好,但重要的是让master_slave和故障转移工作。
我从Ubuntu 10.04 LTS上的apt包安装了pgpool版本3.4.1(lainihi)。 db01是主服务器,并通过slony复制到db02。我的pgpool.conf看起来像这样:
# configure frontend
listen_addresses = 'localhost'
port = 5432
# configure the backends
backend_host_name = 'db01'
backend_port = 5432
secondary_backend_host_name = 'db02'
secondary_backend_port = 5432
# uncomment this and pgpool fails to connect
#master_slave_mode = true
#master_slave_sub_mode = 'slony'
它现在在“原始模式”下工作,我想知道我是否会在master_slave上获得更多收益?无论如何,如果我取消注释master_slave = true,我在连接时会得到以下内容:
# psql -h localhost -U XXX -W
Password for user XXX:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
pgpool日志中的我看到以下
2011-01-13 02:03:17 DEBUG: pid 24144: I am 24144 accept fd 6
2011-01-13 02:03:17 DEBUG: pid 24144: Protocol Major: 1234 Minor: 5679 database: user:
2011-01-13 02:03:17 DEBUG: pid 24144: SSLRequest: sent N; retry startup
2011-01-13 02:03:17 DEBUG: pid 24144: Protocol Major: 3 Minor: 0 database: XXX user: XXX
2011-01-13 02:03:17 DEBUG: pid 24147: I am 24147 accept fd 6
2011-01-13 02:03:17 DEBUG: pid 24147: Protocol Major: 3 Minor: 0 database: XXX user: XXX
2011-01-13 02:03:17 DEBUG: pid 24144: pool_read_message_length: lenghth: 12
2011-01-13 02:03:17 DEBUG: pid 24144: trying md5 authentication
2011-01-13 02:03:17 DEBUG: pid 24144: master: 1 salt: 8bcce867
2011-01-13 02:03:17 DEBUG: pid 24147: pool_read_message_length: lenghth: 12
2011-01-13 02:03:17 DEBUG: pid 24147: trying md5 authentication
2011-01-13 02:03:17 DEBUG: pid 24147: master: 1 salt: bb5f7a63
2011-01-13 02:03:17 DEBUG: pid 24144: master: 0 salt: 5abb8e55
2011-01-13 02:03:17 DEBUG: pid 24144: do_md5: backend does not return R while processing MD5 authentication E
2011-01-13 02:03:17 ERROR: pid 24144: pool_do_auth: backend does not return authenticaton ok
2011-01-13 02:03:17 DEBUG: pid 24147: master: 0 salt: 4c1e5953
2011-01-13 02:03:17 DEBUG: pid 24147: do_md5: backend does not return R while processing MD5 authentication E
2011-01-13 02:03:17 ERROR: pid 24147: pool_do_auth: backend does not return authenticaton ok
似乎pgpool无法通过后端进行身份验证,但我可以使用psql从每个客户端连接到每个后端服务器就好了,正如我所说pgpool在“原始模式”下工作。
任何有关配置pgpool的帮助都将非常感激。它看起来是一个很好的解决方案,但设置它比预期更困难。
TIA,
丹尼斯
答案 0 :(得分:2)
终于解决了这个问题。原来这个问题源于pgpool奇怪的版本控制和从apt安装。
问题的第一部分是pgpool进行了从pgpool到pgpool-II的主要版本切换。 pgpool-II不是一个fork或不兼容的兄弟,而是一个后来的“点哦”版本,具有更多功能。最新版本的pgpool是3.4.1,最新版本的pgpool-II是3.0.1。如果你看得不够仔细,你可能会认为pgpool 3.4.1> pgool-II 3.0.1但事实并非如此。
问题的第二部分是ubuntu(可能也是debian)有两个apt包用于上面的pgpool和pgpool2。当然pgpool2是pgpool-II。如果有一种方法可以在包中说“see also”,那么安装pgpool的人就知道pgpool2包存在了。
一旦我获得了pgpool-II的源代码并自己编译(启用了apt软件包中没有启用的SSL),主从交换机就像宣传的一样工作。