[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 メーリングリストの案内