1.13. ドメインの自動再起動復旧

障害によりドメインが停止した場合に自動的に再起動する機能について説明します。

1.13.1. 再起動復旧機能

再起動復旧機能は、障害により突如ドメインが停止した場合に、対象ドメインの残存プロセスの終了と再起動を自動で行う機能です。自動復旧はユーザドメインの監視を行っている管理ドメインが行います。そのため、本機能を有効にするためには、運用中に管理ドメインが起動している必要があります。

本機能が復旧対象とする監視項目はユーザドメインのエージェントプロセスに対するもので、主に以下の3つが該当します。

上記に該当する障害が発生した場合、管理ドメインはユーザプロセスの停止を行います。停止処理は2段階に分かれており、まずは通常の停止処理を試みます。この停止処理にはタイムアウト時間を設定可能です。通常の停止処理が完了しなかった場合、強制停止処理が行われます。強制停止処理ではOS層での残存プロセスの強制停止を行います。

停止処理が完了すると、ユーザドメインの起動処理に移ります。この起動処理にはタイムアウト時間を設定可能です。なお、復旧処理にはリトライ回数を設定することができ、起動処理に失敗した場合やタイムアウト時間を経過しても起動しない場合には、再び停止処理および起動処理を試みることができます。

本機能は既定では無効化されています。そのため、本機能を利用するためには、以下の設定を行ってください。

  1. 再起動復旧機能の有効化
  2.  リトライ回数、startTimeout値、stopTimeout値の設定

設定方法については、次節を参照してください。

また、各設定項目(リトライ回数、startTimeout値、stopTimeout値)の内容は以下の通りです。

40

Caution

(注1) [ 運用管理コマンドリファレンス > 運用管理コマンド(otxadmin) > 使用方法 > コマンドのタイムアウト設定 ]で記載されている otxadmin.propertiesの設定を行っている場合、本機能のタイムアウト値より優先してotxadm.propertiesの設定が反映されます。復旧設定のタイムアウト値を有効にしたい場合は、otxadmin.propertiesの設定を${INSTANCE}/config/から退避するなどして、無効化してください。

なお、必要以上にリトライを行うと以下の問題が発生する可能性があります。

リトライ回数を変更する場合は上記の問題が発生しない範囲で設定を行ってください。また、構築中の環境の場合、本機能により予期しない再起動処理が行われないようご注意ください。

また、Windows OS の場合、[ ドメインの起動・停止 > サービスでの運用とコマンドでの運用の違い ] の説明にあるように、起動方法によってドメインプロセスの起動ユーザが異なります。

本機能により、管理ドメインからユーザドメインを起動した場合、ユーザドメインは管理ドメインの起動ユーザと同じユーザのプロセスとして起動します。意図して管理ドメインとユーザドメインを別々のユーザプロセスとして起動している場合にはご注意ください。

(注2) 本機能の有効中にユーザドメインを起動・停止する際は、再起動することを防ぐため、管理ドメインを起動し以下のコマンドにて管理ドメイン経由で行ってください。ここではユーザドメインがdomain1の場合を例として説明します。

ユーザドメインの起動

otxadmin> start-domain --user <管理ドメインのユーザ名> --password <管理ドメインのパスワード> --port <管理ドメインの管理ポート> --remote=true domain1

ユーザドメインの停止

otxadmin> stop-domain --user <管理ドメインのユーザ名> --password <管理ドメインのパスワード> --port <管理ドメインの管理ポート> --remote=true domain1

1.13.2. 自動再起動復旧機能の設定方法

運用管理コマンド

対象ドメインの再起動復旧機能の有効化

otxadmin> invoke --port <管理ドメインの管理ポート> domain.setRecoveryEnabled domain1 true

リトライ回数の設定

otxadmin> invoke --port <管理ドメインの管理ポート> domain.setRetryCount domain1 <リトライカウント数>

起動タイムアウト[秒]の設定

otxadmin> invoke --port <管理ドメインの管理ポート> domain.setStartTimeout domain1 <タイムアウト秒>

停止タイムアウト[秒]の設定

otxadmin> invoke --port <管理ドメインの管理ポート> domain.setStopTimeout domain1 <タイムアウト秒>
運用管理ツール

34

対象ドメインを選択し、「実行」を押してください。

35

1.13.3. 自動再起動復旧機能の設定解除方法

運用管理コマンド

対象ドメインの再起動復旧機能の無効化

otxadmin> invoke --port <管理ドメインの管理ポート> domain.setRecoveryEnabled domain1 false
運用管理ツール

36

対象ドメインを選択し、「実行」を押してください。

37

1.13.4. 自動再起動復旧機能の設定確認方法

運用管理コマンド

対象ドメインの再起動復旧機能の確認

otxadmin> invoke --port <管理ドメインの管理ポート> domain.getRecoveryEnabled domain1

リトライ回数の確認

otxadmin> invoke --port <管理ドメインの管理ポート> domain.getRetryCount domain1

起動タイムアウト[秒]の確認

otxadmin> invoke --port <管理ドメインの管理ポート> domain.getStartTimeout domain1

停止タイムアウト[秒]の確認

otxadmin> invoke --port <管理ドメインの管理ポート> domain.getStopTimeout domain1
運用管理ツール

38

対象ドメインを選択し、「実行」を押してください。

39

1.14. ドメイン起動時/停止時スクリプト設定方法 (スクリプトマネージャ機能)

スクリプトマネージャ起動は、以下のタイミングでユーザが任意に記載したスクリプトを実行するための機能です。

本機能を利用することで、アプリケーションがネットワークドライブを利用する場合、そのネットワークドライブの接続/接続解除を行う等、ユーザ独自の処理を実行することができます。

1.14.1. 利用ケース

単一のドメイン上で動作するアプリケーションが別サーバのリソースを利用する

例えば業務アプリケーションが稼働しているサーバと、業務アプリケーションが利用するリソースや出力するログが別のサーバである場合、この機能が有用です。


この場合、ユーザドメインAに対し、起動時に実行するスクリプトとして、ネットワーク接続スクリプトを、停止時に実行するスクリプトとしてネットワーク接続解除スクリプトを登録します。

これにより、ユーザドメインA起動時にネットワーク接続が行われ、ユーザドメインA停止時に接続が解除されます。


複数のドメイン上で動作するアプリケーションが別サーバのリソースを利用する

複数のドメイン上で動作する業務アプリケーションが、別のサーバのリソースを利用する場合は、管理ドメインに対してスクリプトを登録する必要があります。


管理ドメインに登録した場合、下記の図のように管理ドメインの起動/停止タイミングでスクリプトが実行され、ユーザドメインの起動/停止タイミングでは実行されません。


1.14.2. スクリプトの登録方法

運用管理コマンド

登録した起動は、次回のドメイン起動時から実行されます。

運用管理ツール
  1. ${INSTANCE_ROOT}/config配下に任意の名前のスクリプト(bat/sh)を配置してください。
  2. 統合運用管理ツールを起動し、設定対象のドメインにログインします。
  3. 設定対象のドメインを選択し、[設定項目(Configurations)]を選択します
  4. 起動時実行スクリプトは、[起動時実行スクリプト]に、停止時実行スクリプトは[停止時実行スクリプト]にスクリプトファイル名を入力してください。登録した起動は、次回のドメイン起動時から実行されます。


1.14.3. スクリプト作成時の注意点

登録したスクリプトに何等かの問題があり、スクリプトの実行に失敗するような場合、原因究明が困難になる可能性があります。このため、スクリプト内で処理を実行する際に標準出力や標準エラーを任意のファイルに出力しておくことを推奨します。