[pgsql-jp: 30960] PGReplicate-0.7.2.3jでフェイルオーバ失敗
Yukiko Ueda
terurun @ mail.silica.jp
2003年 9月 6日 (土) 15:26:41 JST
ウエダと申します。
初めて投稿させていただきます。
PGReplicate-0.7.2.3jでフェイルオーバに失敗しているようなのですが、
どの設定が間違っているのかわからない為、ご教授いただきたいと思い
ます。よろしくおねがいいたします。
PGReplicate-0.7.2.3jでPostgreSQLのレプリケーションをしようと考え
マシンを3台用意し、以下の構成でテストしてみました。
・RedHat#1 ロードバランスサーバ
・RedHat#2 クラスタDBサーバ#1
・RedHat#3 クラスタDBサーバ#2、レプリケーションサーバ
OSはすべてRedHat9を使用しています。
# 最初はPGClusterで行っていたのですが、公式ページに記述
# されている『クラスタDBサーバ再起動』の状況がおきてしまった為、
# PGReplicate-0.7.2.3jでやり直しました。
この状態で、クラスタDBサーバ#1が障害で停止したときに、
ロードバランサが停止を感知できず、クラスタDBサーバ#1にもクエリを
出してしまっているようです。
その他レプリケーション等々に関しては、正常に動作しているようです。
クラスタDBサーバ#1を停止し、RedHat#1よりpsqlコマンドでテストを
行うと、
# ./psql -h redhat1.xxxx.co.jp -l
psql: server closed the connection unexpectedly
This probably means the server terminated
abnormally before or while processing the
request.
という応答が帰ってきます。
また、psqlコマンドでテストを行うときにロードバランサに -nvオプシ
ョンをつけ、デバッグ情報(?)を表示させていると、
# ./pglb -D /usr/local/pgsql/etc -nv
DEBUG(PGRscan_cluster): ClusterNum -> 2
DEBUG(PGRscan_cluster): redhat2.xxxx.co.jp useFlag->2
max->30 use_num->0
DEBUG(PGRcheck_recovery): load balance wait
DEBUG(read_startup_packet): Protocol Version: 00020000
DEBUG(read_startup_packet): Protocol Major: 2 Minor:0
DEBUG(read_startup_packet): database: template1
DEBUG(read_startup_packet): user: postgres
DEBUG(pool_get_cp): pool_get_cp not found
DEBUG(pool_create_cp): p->user:((null))
DEBUG(create_send_socket): host:redhat2.xxxx.co.jp
port:5432
DEBUG(create_send_socket): host:redhat2.xxxx.co.jp
port:5432
DEBUG(create_send_socket): host:redhat2.xxxx.co.jp
port:5432
DEBUG(create_send_socket): host:redhat2.xxxx.co.jp
port:5432
DEBUG(create_send_socket): host:redhat2.xxxx.co.jp
port:5432
ERROR(PGRclose_sock): PGRcreate_cluster_socket failed
ERROR(pool_close): backend connection failed
DEBUG(PGRcheck_recovery): load balance wait
と、表示されます。
こちらを見る限りでは、サービスが上がっていないはずのクラスタDBサ
ーバ#1に向かってクエリを投げ、失敗しているように見えます。
以下は、設定ファイルの内容です。
----------- cluster.conf (クラスタDBサーバ#1,#2共通) ----------
<Replicate_Server_Info>
<Host_Name> redhat3.xxxx.co.jp </Host_Name>
<Port> 7777 </Port>
<Recovery_Port> 7778 </Recovery_Port>
</Replicate_Server_Info>
<Recovery_Port> 7779 </Recovery_Port>
<Rsync_Path> /usr/bin/rsync </Rsync_Path>
<Rsync_Option> ssh -1 </Rsync_Option>
---------------------------------------------------------------
----------- pgreplicate.conf ---------------------------------
### set cluster DB server information ###
<Cluster_Server_Info>
<Host_Name> redhat2.xxxx.co.jp </Host_Name>
<Port> 5432 </Port>
<Recovery_Port> 7779 </Recovery_Port>
</Cluster_Server_Info>
<Cluster_Server_Info>
<Host_Name> redhat3.xxxx.co.jp </Host_Name>
<Port> 5432 </Port>
<Recovery_Port> 7779 </Recovery_Port>
</Cluster_Server_Info>
### set Load Balance server information ###
<LoadBalance_Server_Info>
<Host_Name> redhat1.xxxx.co.jp </Host_Name>
<Recovery_Port> 7780 </Recovery_Port>
</LoadBalance_Server_Info>
### set PGReplicate server information ###
<Replication_Port> 7777 </Replication_Port>
<Recovery_Port> 7778 </Recovery_Port>
---------------------------------------------------------------
------------------ pglb.conf ---------------------------------
### set cluster DB server information ###
<Cluster_Server_Info>
<Host_Name> redhat2.xxxx.co.jp </Host_Name>
<Port> 5432 </Port>
<Max_Connect> 30 </Max_Connect>
</Cluster_Server_Info>
<Cluster_Server_Info>
<Host_Name> redhat3.xxxx.co.jp </Host_Name>
<Port> 5432 </Port>
<Max_Connect> 30 </Max_Connect>
</Cluster_Server_Info>
### set Load Balance server information ###
<Receive_Port> 5432 </Receive_Port>
<Recovery_Port> 7780 </Recovery_Port>
<Max_Cluster_Num> 128 </Max_Cluster_Num>
<Use_Connection_Pooling> no </Use_Connection_Pooling>
<Max_Pool_Each_Server> 1 </Max_Pool_Each_Server>
<Connection_Life_Time> 0 </Connection_Life_Time>
---------------------------------------------------------------
長くなりまして、申し訳ありません。m(_ _)m
PostgreSQL自体に対してもよくわかっていないところが多いと思います
ので、ご指摘をよろしくお願いいたします。
---------------------------------------
Yukiko Ueda
mailto:terurun @ mail.silica.jp
--
terurun
terurun @ mail.silica.jp
pgsql-jp メーリングリストの案内