8.13.1 障害発生時にサービスユニットを自動閉塞するための設定
アプリケーションサーバでは,システムに障害が発生した場合の動作を障害検知時コマンドで定義できます。ユーザ作成の障害検知時コマンドにSmart Composer機能のコマンドを定義しておくことで,システムの運用中に障害が発生した場合にサービスユニットを自動閉塞できるため,迅速な障害対応ができます。
J2EEサーバのハングアップなどシステムの一部で致命的な障害が発生した場合に,障害発生時の情報を収集し,障害の発生しているサービスユニットを自動的に閉塞します。障害検知時コマンドによるサービスユニットの自動閉塞処理を次の図に示します。
図8-19 障害検知時コマンドによるサービスユニットの自動閉塞処理
![[図データ]](figure/zu081900.gif)
Smart Composer機能を使用すると,致命的な障害が発生した場合に,そのサービスユニットを自動閉塞できます。
ここでは例として,J2EEサーバがハングアップまたはプロセスダウンした場合,障害検知時コマンドを使用してサービスユニットを自動閉塞する方法について説明します。必要な操作は次のとおりです。
- J2EEサーバの自動再起動設定の無効化
- 障害検知時コマンドの作成
- Management Serverの設定
- 運用管理エージェントの設定
障害検知時コマンドの概要については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 保守/移行/互換編」の「2.3.2 障害検知時コマンドによる資料取得」を,設定については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 保守/移行/互換編」の「3.3.1 障害検知時コマンドによる資料取得の設定(J2EEアプリケーションを実行するシステム)」を参照してください。
- <この項の構成>
- (1) J2EEサーバの自動再起動設定の無効化
- (2) 障害検知時コマンドの作成
- (3) Management Serverの設定
- (4) 運用管理エージェントの設定
(1) J2EEサーバの自動再起動設定の無効化
前準備として,J2EEサーバの自動再起動の設定を無効にする必要があります。この設定が有効になっている場合(デフォルトでは有効に設定されています)は,次の手順で設定を変更してください。
- 構築済みのシステムの構築時に使用した簡易構築定義ファイルを編集します。
物理ティアの定義(<tier>タグの定義)の<configuration>タグに,次の設定を追加します。
- <logical-server-type>タグ:j2ee-server
- <param-name>タグ:mstartup.restartcnt
- <param-value>タグ:0
MyWebSystemDef.xmlファイルの設定例を示します。
<?xml version="1.0" encoding="UTF-8"?>
<model-definition xmlns="http://www.cosminexus.com/mngsvr/schema/ModelDefinition-2.5"> <web-system>
<name>MyWebSystem</name>
<!-- 負荷分散機の定義 -->
<load-balancer>
:
</load-balancer>
<!-- 物理ティア(combined-tier)の定義 -->
<tier>
<tier-type>combined-tier</tier-type>
<!-- J2EEサーバの障害検知時自動再起動を無効にする設定 -->
<configuration>
<logical-server-type>j2ee-server</logical-server-type>
<param>
<param-name>mstartup.restartcnt</param-name>
<param-value>0</param-value>
</param>
</configuration>
</tier>
<!-- サービスユニットの定義 -->
<unit>
:
</unit>
</web-system>
<!-- ホストの定義 -->
<host>
:
</host>
</model-definition> |
- 注 太字の部分が編集部分です。
- 変更した簡易構築定義ファイルの内容を実際のシステムに反映して,システムの設定を一括で変更します。
システムの設定を一括変更する方法については,「8.10.1(2) システムの設定変更」を参照してください。
(2) 障害検知時コマンドの作成
障害検知時コマンドには,障害発生時に呼び出すコマンドを定義します。
システム提供の障害検知時コマンドについては,提供されているものを使用するため,ここで作成する必要はありません。
ここでは,J2EEサーバのハングアップまたはプロセスダウンを検知しときに障害の発生したJ2EEサーバを含むサービスユニットを閉塞する,ユーザ作成の障害検知時コマンドを作成します。ユーザ作成の障害検知時コマンドは,コマンドファイル(バッチファイルまたはシェルスクリプトファイル)に記述できます。コマンドファイルの作成例を次に示します。なお,コマンドファイルの作成例で使用している環境変数の詳細は,マニュアル「Cosminexus アプリケーションサーバ 機能解説 保守/移行/互換編」の「3.3.1 障害検知時コマンドによる資料取得の設定(J2EEアプリケーションを実行するシステム)」を参照してください。
- Windowsの場合
- バッチファイル(holdunit.bat)の作成例を示します。
@echo off
"<Cosminexusのインストールディレクトリ>¥manager¥bin¥cmx_stop_target" -m 192.168.100.100 -u cosmi_admin -p cosmi_admin_passwd -mode HOLD -s "%COSMI_MNG_WEB_SYSTEM%" -unit "%COSMI_MNG_UNIT%" |
- UNIXの場合
- シェルスクリプトファイル(holdunit.sh)の作成例を示します。
#!/bin/sh
/opt/Cosminexus/manager/bin/cmx_stop_target -m 192.168.100.100 -u cosmi_admin -p cosmi_admin_passwd -mode HOLD -s "${COSMI_MNG_WEB_SYSTEM}" -unit "${COSMI_MNG_UNIT}" |
(3) Management Serverの設定
mserver.properties(Management Server環境設定ファイル)で,ユーザ作成の障害検知時コマンドの動作を設定します。なお,システム提供の障害検知時コマンドについては,デフォルトで利用する設定になっているため,ここでの設定は必要ありません。
- 運用管理サーバでmserver.propertiesファイルを編集します。
次のプロパティを設定します。
- com.cosminexus.mngsvr.usr_cmd.abnormal_end.enabled
ユーザ作成の障害検知時コマンドを利用する(true)に設定します。
- com.cosminexus.mngsvr.usr_cmd.abnormal_end.timeout
ユーザ作成の障害検知時コマンドの終了を待つ時間を設定します。
なお,プロパティの詳細については,マニュアル「Cosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「10.7 mserver.properties(Management Server環境設定ファイル)」を参照してください。
mserver.propertiesファイルの設定例を示します。
...
com.cosminexus.mngsvr.usr_cmd.abnormal_end.enabled=true
com.cosminexus.mngsvr.usr_cmd.abnormal_end.timeout=300
... |
mserver.propertiesファイルは,次の場所に格納されています。
- Windowsの場合
- <Cosminexusのインストールディレクトリ>¥manager¥config¥
- UNIXの場合
- /opt/Cosminexus/manager/config/
- Management Serverが稼働中の場合は,再起動します。
- mngsvrctlコマンドに,引数「stop」を指定してManagement Serverを停止します。
- mngsvrctlコマンドに,引数「start」を指定してManagement Serverを起動します。
- Windowsの場合
<Cosminexusのインストールディレクトリ>¥manager¥bin¥mngsvrctl stop
<Cosminexusのインストールディレクトリ>¥manager¥bin¥mngsvrctl start |
- UNIXの場合
# /opt/Cosminexus/manager/bin/mngsvrctl stop
# /opt/Cosminexus/manager/bin/mngsvrctl start |
(4) 運用管理エージェントの設定
adminagent.properties(運用管理エージェントプロパティファイル)で,ユーザ作成の障害検知時コマンドを実行するための設定をします。
- ユーザ作成の障害検知時コマンドを,各アプリケーションサーバに配置します。
ここでは,ユーザ作成の障害検知時コマンドを次の場所に格納します。
- Windowsの場合
- C:¥work¥holdunit.bat
- UNIXの場合
- /work/holdunit.sh
- 各アプリケーションサーバのadminagent.properties(運用管理エージェントプロパティファイル)を編集します。
ここでは,J2EEサーバ障害発生時に,ユーザ作成の障害検知時コマンドを実行する場合の例を示します。
- Windowsの場合
- <Cosminexusのインストールディレクトリ>¥manager¥config¥adminagent.propertiesの設定例を,次に示します。
...
adminagent.j2ee.usr_cmd.abnormal_end=%{ComSpec} /c "C:/work/holdunit.bat"
... |
- UNIXの場合
- /opt/Cosminexus/manager/config/adminagent.propertiesの設定例を,次に示します。
...
adminagent.j2ee.usr_cmd.abnormal_end=/bin/sh /work/holdunit.sh
... |
- 運用管理エージェントが稼働中の場合は,再起動します。
- adminagentctl コマンドに,引数「stop」を指定して運用管理エージェントを停止します。
- adminagentctl コマンドに,引数「start」を指定して運用管理エージェントを起動します。
- Windowsの場合
<Cosminexusのインストールディレクトリ>¥manager¥bin¥adminagentctl stop
<Cosminexusのインストールディレクトリ>¥manager¥bin¥adminagentctl start |
- UNIXの場合
# /opt/Cosminexus/manager/bin/adminagentctl stop
# /opt/Cosminexus/manager/bin/adminagentctl start |