[pgcluster: 780] 初回起動とIPCリソースについてご

アロエ ヴェラ aloe_vera_ @ hotmail.com
2005年 5月 20日 (金) 20:22:59 JST


お世話になります、守谷と申します。
レプリケーションサーバの初回起動とIPCリソースについてご質問です。

現在、下記の構成にて検証を行っております。
■サーバ構成-------------------------------------------------
OS	Red Hat Linux 3.2.3-20 (RedHat ES3)
kernel	2.4.21-4.EL
system	CPU: Xeon(TM) 3.00GHz*1 (HT off)
	Memory: 3267MB
	Swap: 2047MB
version	Pgcluster1.1.1a

現在、下記のサーバ2台(同スペック)によって構成されています。
repli01: レプリケーション兼クラスタサーバ
cluster01: クラスタサーバ



■現在起きている問題------------------------------------
・OSブート時のpgreplicateの自動起動の失敗
 (自動起動ではなくても1回目は必ず失敗する。親プロセスのみ残る状態)
・1回目の自動起動失敗時、stopオプションにて停止できない
 (他にも停止できないときがある。"kill -9"等で対応)
・2回目以降は起動できるが、クラスタ側からリカバリを実施し、
 pgreplicateを最後にstopしても停止できない。

・プログラム起動失敗時、または一度リカバリを実施すると
 共有メモリ・セマフォ配列・メッセージキューにIPCリソースが溜まる
 リカバリを実施後、順にサーバを止めていくと、
 必ずipcsにてpostgresのリソースが残ったままになります。
 ipcclean等で削れますが。


初回以外は同期もうまく実施されていますので設定は大丈夫かと思います。
共有メモリ辺りが怪しい気がするのですが解決策がみつからず、投稿させていただき
ました。
何か解決策、認識の違い等ありましたらご教授頂ければと思います。

各ログで気になった部分を抜粋してあります。
■ログ ------------------------------------------------

1.デバッグモードログ
>ERROR:PGRinit_recovery(),msgget() failed. (No space left on device)
>ERROR:main():PGRinit_recovery error
デバッグモードにて起動失敗時によく出力される。

>free(): invalid pointer 0xb1f00778!
>free(): invalid pointer 0xb1f00498!
>free(): invalid pointer 0xb1f00058!
>DEBUG:pgr_createConn():PQsetdbLogin host[repli01] port[5432] db[template1] 
user[postgres]
>セグメンテーション違反です
デバッグモードにて起動失敗時にまれに出力される。


2.レプリケーションサーバ エラーログ
>Wed May 18 15:17:44 2005  PGRrecovery_main():PGR_Create_Socket_Bind failed
>Wed May 18 15:17:44 2005  PGRrecovery_main():PGR_Create_Socket_Bind failed
起動失敗時に出ることがある。ただ接続が出来ないだけかも?

>Thu May 19 10:08:21 2005  PGRget_recovery_queue_file_for_read():
>could not open recovery queue file as 
>/usr/local/pgsql/pgreplicate/.pgr_recovery.1. reason: No such file or 
directory
クラスタサーバより、リカバリー実行時のログ。
ファイルが生成されていないがリカバリは実行できている。


3.syslogメッセージ
>May 18 13:17:51 repli01 kernel: application bug: 
>pgreplicate(22689) has SIGCHLD set to SIG_IGN but calls wait().
>May 18 13:17:51 repli01 kernel: 
>(see the NOTES section of 'man 2 wait'). Workaround activated.
pgreplicateが、OSブート時の自動起動失敗時、または強制終了したときのログ。



■以下configファイル------------------------------------
pgreplicate.conf ---
<Cluster_Server_Info>
    <Host_Name>      repli01     </Host_Name>
    <Port>           5432        </Port>
    <Recovery_Port>  7101        </Recovery_Port>
    <LifeCheck_Port> 7201        </LifeCheck_Port>
</Cluster_Server_Info>
<Cluster_Server_Info>
    <Host_Name>      cluster01     </Host_Name>
    <Port>           5432        </Port>
    <Recovery_Port>  7101        </Recovery_Port>
    <LifeCheck_Port> 7201        </LifeCheck_Port>
</Cluster_Server_Info>
<Status_Log_File>    /tmp/repli.sts  </Status_Log_File>
<Error_Log_File>     /tmp/repli.log  </Error_Log_File>
<Replication_Port>   8001            </Replication_Port>
<Recovery_Port>      8101            </Recovery_Port>
<LifeCheck_Port>     8201            </LifeCheck_Port>
<Response_Mode>      normal          </Response_Mode>
<Use_Replication_Log>      no        </Use_Replication_Log>
<Reserved_Connections>      1        </Reserved_Connections>
----------------


cluster.conf ---
<Replicate_Server_Info>
        <Host_Name> repli01 </Host_Name>
        <Port>      8001    </Port>
        <Recovery_Port>  8101 </Recovery_Port>
        <LifeCheck_Port> 8201 </LifeCheck_Port>
</Replicate_Server_Info>
<Recovery_Port>  7101 </Recovery_Port>
<LifeCheck_Port> 7201 </LifeCheck_Port>
<Rsync_Path> /usr/bin/rsync </Rsync_Path>
<Rsync_Option> ssh -1 </Rsync_Option>
<When_Stand_Alone> read_write  </When_Stand_Alone>
<Status_Log_File>  /tmp/cluster.sts </Status_Log_File>
<Error_Log_File>   /tmp/cluster.log  </Error_Log_File>
----------------

_________________________________________________________________
楽しい絵文字でココロ伝わるメッセンジャー http://messenger.msn.co.jp/ 




pgcluster メーリングリストの案内