障害発生後にWebLogic Serverが再起動しない
ノード障害が発生すると、WebLogicサーバーの起動に失敗します。
WebLogicサービス・ログには、次のようなエラー・メッセージが表示されます。
java.io.IOException: Error from fcntl() for file locking, Resource temporarily unavailable, errno=11
原因1: NFSv3サーバーにロック・リース機能が含まれていないため、ロック状態は格納されず、ノード障害後にロックを解放できません。
解決策1:ファイル・ロックの削除をリクエストします。詳細については、Removing File Locks from a Host that is no longer availableを参照してください。
原因2: NFSv3ロックに必要なrpc-statd
サービスが、サーバー障害後に異常な状態になる場合があります。これは、fcntl
モジュールを使用してサンプル・ロック・テストを実行することで検証できます。例:
$python3
>>> import fcntl
>>> f = open('/fss/path/testfile.txt', 'r') #Open an existing file as read mode (do not use 'w')
>>> fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB) #Throws "no lock available" error.
>>> exit()
解決策2: rpc-statd
サービスを再起動します。
-
インスタンスでターミナル・ウィンドウを開き、rootユーザーとして次のコマンドを使用します:
$sudo systemctl status rpc-statd $sudo systemctl stop rpc-statd $sudo systemctl start rpc-statd $sudo systemctl status rpc-statd
fcntl
サンプル・ロック・テストがエラーなしで完了したことを確認します。- WebLogicサーバーを起動します。
原因3: NFSv3はロック所有者を追跡しません。そのため、ロック所有者が失敗した場合、NFSはロックを無制限に保持します。ノードの障害後、WebLogicの再起動試行はロックを取得できません。
解決策3:これは一般的なNFSv3制限です。即時軽減と長期的な設計に関する考慮事項は、WebLogicのドキュメントに記載されています。詳細については、Verifying Server Restart Behaviorを参照してください。