私の2つのpostgresqlサーバーはストリーミングレプリケーション用に構成されており、正常に動作しています。
Pgpoolはマスタースレーブモード/ロードバランスモード用に構成されています。
pgpool.conf:
listen_addresses = '*'
port = 9999
backend_hostname0 = 'master-postgres-ip'
backend_port0 = port-no
backend_weight0 = 1
backend_data_directory0 = 'data-dir'
backend_hostname1 = 'slave-postgres-ip'
backend_port1 = port-no
backend_weight1 = 1
backend_data_directory1 = 'data-dir'
load_balance_mode = on
master_slave_mode = on
master_slave_sub_mode='stream'
すべての書き込みクエリがプライマリに移動し、読み取りクエリが2つのクエリに分散されることを期待していました。しかし、すべてのクエリはマスターするだけです。ただし、マスターを停止すると、クエリはスレーブに送られます。
誰かが何がうまくいかないのか教えてもらえますか?
pgpoolは起動時に以下のログを提供します:
2015-11-03 17:25:56: pid 21284: LOG: find_primary_node: checking backend no 0
2015-11-03 17:25:56: pid 21284: LOG: find_primary_node: checking backend no 1
2015-11-03 17:25:56: pid 21284: DEBUG: SSL is requested but SSL support is not available
2015-11-03 17:25:56: pid 21284: DEBUG: authenticate kind = 3
2015-11-03 17:25:56: pid 21284: ERROR: failed to authenticate
2015-11-03 17:25:56: pid 21284: DETAIL: invalid authentication message response type, Expecting 'R' and received 'E'
2015-11-03 17:25:56: pid 21284: DEBUG: find_primary_node: no primary node found
最初は、sr_check_period
in pgpool.conf
を0(ゼロ)にしてSRチェックを無効にします。私はこのチェックを回避し、常に負荷を分散することを考えました。しかし、これが問題を引き起こしています。
この属性にゼロ以外の値を指定した後、負荷分散が機能し始めました。
backend_hostname1 = 'master-postgres-ip'
->これは、マスターではなく、スレーブを指す必要があります。