0

Rails アプリなどもある 2 つ以上の Web サーバーで pgpool を実行しようとしています。また、クエリをレプリカに分散し、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 は「raw モード」で動作します。

pgpool を構成するためのヘルプをいただければ幸いです。素晴らしいソリューションのように見えますが、セットアップは予想以上に困難でした。

ティア、

デニス

4

1 に答える 1

2

最後にこれを自分で解決しました。この問題は、pgpools の奇妙なバージョン管理と apt からのインストールに起因することが判明しました。

問題の最初の部分は、pgpool がメジャー バージョンを pgpool から pgpool-II に切り替えたことです。pgpool-II はフォークでも互換性のない兄弟でもありませんが、より多くの機能を備えた後の「ポイントオハイオ」リビジョンです。pgpool の最新バージョンは 3.4.1 で、pgpool-II の最新バージョンは 3.0.1 です。注意深く見ていなければ、pgpool 3.4.1 > pgool-II 3.0.1 と考えるかもしれませんが、そうではありません。

問題の 2 番目の部分は、ubuntu (おそらく debian も同様) に、上記の pgpool と pgpool2 用の 2 つの apt パッケージがあることです。もちろん、pgpool2 は pgpool-II です。pgpool をインストールした人が pgpool2 パッケージの存在を認識できるように、パッケージに「こちらも参照」と言う方法があればいいのにと思います。

pgpool-II のソースを入手して自分でコンパイルすると (apt パッケージでは有効になっていない SSL を有効にすると)、マスター/スレーブ スイッチが宣伝どおりに機能します。

于 2011-01-26T17:06:09.973 に答える