[pgsql-jp: 31853] PGCluster1.6でクラスタDB1のみフェイルオーバーに失敗します
Koji Iriyama
iriyama @ kwr.no-ip.com
2003年 12月 22日 (月) 22:35:11 JST
はじめまして。入山と申します。
PGCluster1.6を使用して、レプリケーション環境を構築していたのですが、
ロードバランサ使用時、マスタDB(クラスタDB1)を切り離したさいに、
うまく切断を検知してくれていないような動作をしております。
<クラスタDB1以外は問題なく切り離しを検知してくれています>
構成は下記です。
PC1:クラスタDB1:VMWare上のRedHat9
PC1:クラスタDB2:VMWare上のRedHat9
PC1:クラスタDB3:VMWare上のRedHat9
PC2:レプリケーションサーバ:VMWare上のRedHat9
PC2:ロードバランサ:VMWare上のRedHat9
2台のPC上にそれぞれVMWareを使用し、5台分の構成を作ってあります。
クラスタDB1を停止して、psqlコマンドをロードバランサに対して発行すると、
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
となり、クラスタDB1の停止を検知していないような動きになります。
pglbを -n -v オプションを付けて表示されたログがこちらです。
vm-db1がクラスタDB1です。
DEBUG(PGRscan_cluster): vm-db1 useFlag->2 max->4 use_num->0
DEBUG(read_startup_packet): Protocol Version: 00020000
DEBUG(PGRcheck_recovery): load balance wait
DEBUG(read_startup_packet): Protocol Major: 2 Minor:0
DEBUG(read_startup_packet): database: test
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:vm-db1 port:5432
DEBUG(create_send_socket): host:vm-db1 port:5432
DEBUG(create_send_socket): host:vm-db1 port:5432
DEBUG(create_send_socket): host:vm-db1 port:5432
DEBUG(create_send_socket): host:vm-db1 port:5432
ERROR(PGRcreate_cluster_socket): PGRcreate_cluster_socket failed
ERROR(pool_close): backend connection failed
DEBUG(PGRcheck_recovery): load balance wait
なお、クラスタDB2を停止して、
同様にpsqlをロードバランサに対して実行した場合は、
クラスタDB2が切り離され、pgreplicate.logにもエラーが表示されました。
クラスタDB1のみ何故か認識されていないような形です。
また、この状況下でpsqlコマンドをロードバランサ宛ではなく、
直接クラスタDB2/DB3に対して発行すると、
pgreplicate.logにクラスタDB1のエラーが表示され、
切断された形になります。
下記は、ロードバランサの設定<pglb.conf>です。
<Cluster_Server_Info>
<Host_Name> vm-db1 </Host_Name>
<Port> 5432 </Port>
<Max_Connect> 4 </Max_Connect>
</Cluster_Server_Info>
<Cluster_Server_Info>
<Host_Name> vm-db2 </Host_Name>
<Port> 5432 </Port>
<Max_Connect> 4 </Max_Connect>
</Cluster_Server_Info>
<Cluster_Server_Info>
<Host_Name> vm-db3 </Host_Name>
<Port> 5432 </Port>
<Max_Connect> 4 </Max_Connect>
</Cluster_Server_Info>
#-------------------------------------------------------------
# set Load Balance server information
# o Receive_Port : connection from client
# o Recovery_Port : connection for recovery process
# o Max_Cluster_Num : maximun number of cluster DB servers
# o Use_Connection_Pooling : use connection pool [yes/no]
# o Max_Pool_Each_Server : number of pool connections/DB server
#-------------------------------------------------------------
<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>
なにか、設定や構築方法などで問題などお気づきの方などございましたら、
ご教授いただけますと幸いです。
宜しくお願いいたします。
--
入山幸司/Koji Iriyama<iriyama @ kwr.no-ip.com>
pgsql-jp メーリングリストの案内