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