3つのノードにインストールしてPostgresql-9.4 High Availability (HA)
みてくださいRHEL7
。 3つのノードすべてで、それに応じてインストールpostgresql
、更新、およびpostgresql.conf
ファイルpg_hba.conf
をインストールします。すべての設定が完了したら、マスターサーバーでcheckコマンドを使用して同期ストリーミングレプリケーションを確認してください。
select * from pg_stat_replication;
それは戻ってくる
postgres=# select * from pg_stat_replication;
pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_location | write_
location | flush_location | replay_location | sync_priority | sync_state
-----+----------+---------+------------------+-------------+-----------------+-------------+---------------+--------------+-------+---------------+-------
---------+----------------+-----------------+---------------+------------
(0 rows)
これはコピーがないことを示します。 postgresqlログファイルを見て、スタンバイノードからプライマリノードへの接続が確立されていないことを確認しました。 3 つのノードすべてのログファイルは次のとおりです。
ノード0:
FATAL: no pg_hba.conf entry for replication connection from host "x.x.x.x (node1)", user "postgres", SSL off
FATAL: no pg_hba.conf entry for replication connection from host "x.x.x.x (node2)", user "postgres", SSL off
ノード1とノード2:
FATAL: could not connect to the primary server:
FATAL: no pg_hba.conf entry for replication connection from host "x.x.x.x (node0)", user "postgres", SSL off
接続を確認するために、3つのノードすべてでiptablesを無効にしました。他のすべてのノードで/へのpingが可能で、スレーブからマスターへのTelnetはうまく機能しますが、マスターからスレーブへのTelnetは機能しません。なぜこれが起こるのかわかりません(iptablesサービスが停止したにもかかわらず)。
答え1
マスターノード(ノード0):ファイルを更新pg_hba.conf
し、postgres
データベースへの(ユーザー)アクセスを追加します。
スタンバイノード(ノード1とノード2):プライマリノードへの接続を許可するように無効または設定iptables
します。firewall
/etc/sysconfig/iptables に次の行を追加して再起動します。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432(port) -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
このソリューションは私の問題を解決しました。