6.19.2 サービスユニットを自動再起動するための設定
Cosminexusでは,システムに障害が発生しそうな場合の動作をManagementアクションで定義できます。ManagementアクションにSmart Composer機能のコマンドを定義しておくことで,システムの運用中に障害が発生しそうな場合にサービスユニットを自動再起動できるため,迅速な障害対応ができます。
リソース枯渇監視機能でリソースの枯渇を事前に検知したり,J2EEアプリケーションの実行時間監視機能でJ2EEアプリケーションのタイムアウトを検知したりして,障害の発生しそうな状況になるとManagementイベントが発行されます。そのManagementイベントと対応づけたManagementアクションを実行し,障害が発生しそうなサービスユニットを自動的に再起動して,障害の発生を事前に回避します。Managementアクションによるサービスユニットの自動再起動処理を次の図に示します。
図6-24 Managementアクションによるサービスユニットの自動再起動処理
![[図データ]](figure/zu050200.gif)
Smart Composer機能を使用すると,JavaVMのフルガーベージコレクションやスレッドなどのリソース枯渇を事前検知した場合,およびJ2EEアプリケーションの実行時間監視でタイムアウトなどが発生した場合に,問題の発生したサービスユニットを自動再起動できます。
ここでは例として,J2EEサーバのフルガーベージコレクションの予兆を検知した場合に,Managementアクションを使用してサービスユニットを自動再起動する方法について説明します。必要な操作は次のとおりです。
- Managementアクション実行コマンドの作成
- Managementイベントの発行の設定
- Managementイベント発行用メッセージIDリストファイルおよびリソース監視機能の設定
- Managementアクション実行用プロパティファイルの設定
なお,リソース枯渇監視機能およびManagementアクションの概要については,マニュアル「Cosminexus 機能解説」のシステムの運用支援に関する説明を,設定については,マニュアル「Cosminexus システム構築ガイド」のManagementイベントによる処理の自動実行の設定に関する説明を参照してください。
- <この項の構成>
- (1) Managementアクション実行コマンドの作成
- (2) Managementイベントの発行の設定
- (3) Managementイベント発行用メッセージIDリストファイルおよびリソース枯渇監視機能の設定
- (4) Managementアクション実行用プロパティファイルの設定
(1) Managementアクション実行コマンドの作成
JavaVMのフルガーベージコレクションやスレッドなどのリソース枯渇を事前検知した場合,J2EEアプリケーションの実行時間監視でタイムアウトが発生した場合などに発行されるManagementイベントを受信したときに,Management Serverが実行するManagementアクション実行コマンドを作成します。
ここでは,J2EEサーバのフルガーベージコレクションの予兆を検知した場合,次の順序でサービスユニットを再起動するManagementアクション実行コマンドを作成します。
- 障害の発生したJ2EEサーバを含むサービスユニットを自動閉塞します。
- 障害の発生したJ2EEサーバを再起動します。
- サービスユニットを開始します。
Managementアクション実行コマンドのサンプルファイルをコピーして,Managementアクション実行コマンド(バッチファイルまたはシェルスクリプト)を作成してください。
(a) Windowsの場合
サンプルファイル(<Cosminexusインストールディレクトリ>¥manager¥examples¥maction¥mActionSample_closeUnit.bat)を,C:¥work ¥maction_restartunit.batにコピーして,次のようなバッチファイルを作成します。
maction_restartunit.batファイルの記述例(一部抜粋)
...
set CJCLDELLOG=<Cosminexusインストールディレクトリ>¥CC¥client¥bin¥cjcldellog.bat
set LOG_ROOT_DIR=%SystemDrive%¥work
...
set MNGSVR=192.168.100.100:%COSMI_MNG_MACT_MNGSVR_PORT%
set UID=cosmi_admin
set PWD=cosmi_admin_passwd
echo cmx_stop_target.exe -m %MNGSVR% -u %UID% -p %PWD% -mode HOLD -s %WEBSYSTEM% -unit %UNIT% >> "%LOG%" 2>&1
cmx_stop_target.exe -m %MNGSVR% -u %UID% -p %PWD% -mode HOLD -s %WEBSYSTEM% -unit %UNIT% >> "%LOG%" 2>&1
set RET=%ERRORLEVEL%
echo %RET% >> "%LOG%"
if not %RET% == 0 goto END
echo mngsvrutil.exe -m %MNGSVR% -u %UID% -p %PWD% -t %LSNAME% -s stop server >> "%LOG%" 2>&1
mngsvrutil.exe -m %MNGSVR% -u %UID% -p %PWD% -t %LSNAME% -s stop server >> "%LOG%" 2>&1
set RET=%ERRORLEVEL%
echo %RET% >> "%LOG%"
if not %RET% == 0 goto END
echo cmx_start_target.exe -m %MNGSVR% -u %UID% -p %PWD% -mode ALL -s %WEBSYSTEM% -unit %UNIT% >> "%LOG%" 2>&1
cmx_start_target.exe -m %MNGSVR% -u %UID% -p %PWD% -mode ALL -s %WEBSYSTEM% -unit %UNIT% >> "%LOG%" 2>&1
set RET=%ERRORLEVEL%
echo %RET% >> "%LOG%"
goto :END
:ERR
set RET=2
:END
exit %RET% |
(b) UNIXの場合
サンプルファイル(/opt/Cosminexus/manager/examples/maction/mActionSample_closeUnit.sh)を,/work/maction_restartunit.shにコピーして,次のようなシェルスクリプトを作成します。
maction_restartunit.shファイルの記述例(一部抜粋)
...
LOG_ROOT_DIR=/work
if [ ! -d ${LOG_ROOT_DIR} ]; then
...
MNGSVR=192.168.100.100:${COSMI_MNG_MACT_MNGSVR_PORT}
USERID=cosmi_admin
PASSWD=cosmi_admin_passwd
echo ./cmx_stop_target -m ${MNGSVR} -u ${USERID} -p ${PASSWD} -mode HOLD -s ${WEBSYSTEM} -unit ${UNIT} >> "${LOG}" 2>&1
./cmx_stop_target -m ${MNGSVR} -u ${USERID} -p ${PASSWD} -mode HOLD -s ${WEBSYSTEM} -unit ${UNIT} >> "${LOG}" 2>&1
RET=$?
echo ${RET} >> "${LOG}"
if [ $RET -eq 0 ]; then
echo ./mngsvrutil -m ${MNGSVR} -u ${USERID} -p {PASSWD} -t ${LSNAME} -s stop server >> "${LOG}" 2>&1
./mngsvrutil -m ${MNGSVR} -u ${USERID} -p {PASSWD} -t ${LSNAME} -s stop server >> "${LOG}" 2>&1
RET=$?
echo ${RET} >> "${LOG}"
if [ $RET -eq 0 ]; then
echo ./cmx_start_target -m ${MNGSVR} -u ${USERID} -p {PASSWD} -mode ALL -s ${WEBSYSTEM} -unit ${UNIT} >> "${LOG}" 2>&1
./cmx_start_target -m ${MNGSVR} -u ${USERID} -p {PASSWD} -mode ALL -s ${WEBSYSTEM} -unit ${UNIT} >> "${LOG}" 2>&1
RET=$?
echo ${RET} >> "${LOG}"
exit ${RET} |
(2) Managementイベントの発行の設定
J2EEサーバのManagementイベントの発行が有効になっていない場合は,Managementイベントの発行を有効にします。Managementイベントの発行を有効にするには,次の手順で設定を変更してください。
- 構築済みのシステムの構築時に使用した簡易構築定義ファイルを編集します。
物理ティアの定義(<tier>タグの定義)の<configuration>タグに,次の設定を追加します。なお,指定するパラメタの詳細については,「14.2 システムの構成パターンと定義する論理サーバ」を参照してください。
- <logical-server-type>タグ:j2ee-server
- <param-name>タグ:ejbserver.manager.agent.MEventAgent.enabled
- <param-value>タグ:true
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サーバのManagementイベントの発行を有効にする設定 -->
<configuration>
<logical-server-type>j2ee-server</logical-server-type>
<param>
<param-name>ejbserver.manager.agent.MEventAgent.enabled</param-name>
<param-value>true</param-value>
</param>
</configuration>
</tier>
<!-- サービスユニットの定義 -->
<unit>
:
</unit>
</web-system>
<!-- ホストの定義 -->
<host>
:
</host>
</model-definition> |
- 注 太字の部分が編集部分です。
- 変更した簡易構築定義ファイルの内容を実際のシステムに反映して,システムの設定を一括で変更します。
システムの設定の一括変更の方法については,「6.12.1(2) システムの設定変更」を参照してください。
(3) Managementイベント発行用メッセージIDリストファイルおよびリソース枯渇監視機能の設定
Managementイベントを発行するために,Managementイベント発行用メッセージIDリストファイルの設定や,リソース枯渇監視機能の設定が必要な場合があります。
通常はデフォルトのまま使用するため,設定の必要はありません。必要に応じて設定してください。
(a) Managementイベント発行用メッセージIDリストファイルの設定
Managementイベントを発行したいメッセージのメッセージIDを,Managementイベント発行用メッセージIDリストファイルに記述します。Managementイベント発行用メッセージIDリストファイルの詳細については,マニュアル「Cosminexus リファレンス 定義編」を参照してください。
(b) リソース枯渇監視機能の設定
リソースの監視間隔やしきい値を指定してリソースを監視し,しきい値を超えた場合にアラートを出力できます。また,リソース枯渇監視情報をファイルに出力できます。
リソース枯渇監視機能を使用するためには,次の二つの設定が必要です。
- リソース枯渇監視機能の有効化
- リソース種別ごとの監視の設定
デフォルトの設定では,リソース枯渇監視機能は有効になっています。リソース枯渇監視機能の設定については,マニュアル「Cosminexus システム構築ガイド」のリソース枯渇監視の設定に関する説明を参照してください。
(4) Managementアクション実行用プロパティファイルの設定
Managementアクションの定義,メッセージIDとManagementアクションとのマッピングなどは,Managementアクション実行用プロパティファイル(maction.properties)に定義します。maction.propertiesファイルの詳細については,マニュアル「Cosminexus リファレンス 定義編」を参照してください。
- 運用管理サーバでManagementアクション実行用プロパティファイル(maction.properties)を編集します。
ここでは,メッセージKDJE34500-Wが発行された場合に,「6.19.2(1) Managementアクション実行コマンドの作成」で作成したManagementアクション実行コマンドが実行される例を示します。
- Windowsの場合
- <Cosminexusインストールディレクトリ>¥manager¥config¥maction.propertiesファイルの設定例を,次に示します。
# Definition of Management action.
maction.restart_unit.command=C:/work/maction_restartunit.bat
maction.restart_unit.timeout=180
maction.restart_unit.timeout.forced_stop=false
# Mapping of Message ID and Management actions.
# KDJE34500-W: Alert - Memory(Java Heap)
maction.message.KDJE34500-W.mactions=restart_unit
# Mapping of Logical server and Management actions.
maction.tier.MyWebSystem.combined-tier.mactions=restart_unit |
- UNIXの場合
- /opt/Cosminexus/manager/config/maction.propertiesファイルの設定例を,次に示します。
# Definition of Management action.
maction.restart_unit.command=/work/maction_restartunit.sh
maction.restart_unit.timeout=180
maction.restart_unit.timeout.forced_stop=false
# Mapping of Message ID and Management actions.
# KDJE34500-W: Alert - Memory(Java Heap)
maction.message.KDJE34500-W.mactions=restart_unit
# Mapping of Logical server and Management actions.
maction.tier.MyWebSystem.combined-tier.mactions=restart_unit |
- 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 |