現象:
依存するファイルシステムリソースを含まない SAP リソース階層を以前のホストノードで In-Service に戻そうとすると、SAP リソースの In-Service(リストア)が失敗します。
SAP インスタンスのトレースログに、インスタンスプロセスの1つに必要なポートが既に使用されていることを示す以下のようなメッセージが表示されます。
(この例は、 /usr/sap/<SID>/ASCS<##>/work/dev_ms.new から取得したものです)。
[Thr 140225937864512] ***LOG Q0I=> NiIBindSocket: bind (98: Address already in use) [/bas/781_REL/src/base/ni/nixxi.cpp 3946
[Thr 140225937864512] *** ERROR => NiIBindSocket: SiBind failed for hdl 1/sock 6
(SI_EPORT_INUSE/98; I4; ST; 0.0.0.0:3610) [nixxi.cpp 3946]
[Thr 140225937864512] *** ERROR => MsSCommInit: NiBuf2Listen(sapmsSHC) (rc=NIESERV_USED) [msxxserv.c 12838]
[Thr 140225937864512] *** ERROR => MsSInit: MsSCommInit [msxxserv.c 2732]
[Thr 140225937864512] *** ERROR => MsSInit failed, see dev_ms.new for details [msxxserv.c 7363]
原因:
リソースの保護レベル が、作成または拡張後に、 Basic 、 Minimum 、または Standard に設定される。
リソースの保護レベルが Basic、Minimum、または Standard に設定されている場合、SAP リソースを Out-of-Service にする際に、保護されている SAP インスタンスは停止されません。これにより、remove スクリプトが呼び出された後、そのインスタンスのプロセスは実行されたままになります。SAP リソース階層には依存するファイルシステムリソースが含まれていないため、SAP インスタンスが依存するファイルシステムは、SAP 階層がサービスを停止した後もマウントされたままになります。これは、SAP インスタンスプロセスが引き続き実行されることを意味しますが、もし SAP リソース階層に依存するファイルシステムリソースが含まれていた場合は、LifeKeeper が基盤となるファイルシステムをアンマウントするときに fuser -k
コールで強制終了させます。
SAP インスタンスプロセスが実行されたままになっているサーバー上で LifeKeeper がリソースを In-Service に戻そうとすると、必要なポートが既に実行中のプロセスによって使用されているため、保護されたインスタンスを起動できません。
対応:
- [Basic] および [Minimum] 設定は、リソースを一時的にメンテナンスモードにする場合にのみ使用してください。これらの設定は、継続的な保護レベルの設定として使用しないでください。
- [Standard] 設定は、 レプリケートされた enqueue リソースにのみ使用できます。特に、SAP リソースに LifeKeeper の保護下にある依存ファイルシステムがない場合は使用しないでください。
- この問題を解決するには、以下の手順に従ってください。
- SAP リソースが拡張されたクラスター内のすべてのサーバーを再起動します。再起動後、保護された SAP インスタンスのすべてのプロセスが停止し、必要なポートが利用可能になります。
- サーバーの1つで SAP リソース階層を In-Service にします。LifeKeeper GUI でリソースを右クリックし、[Update Protection Level] を選択して、SAP リソースの保護レベルを [Full] に変更します。
- SAP リソースが拡張されたクラスター内の各サーバーに対して、ステップ(b)を繰り返します。
このトピックへフィードバック