6.1.2 障害設計

障害設計では,障害発生時の対応に関して,障害部分の切り離し,障害からの復旧,障害時の取得資料,障害原因の切り分け,障害調査などについて設計します。

Smart Composer機能では,障害発生時の資料取得に加えて,問題発生時にサービスユニットを自動部分閉塞したり,自動部分再起動したりするような高度な運用ができます。これには,障害検知時コマンドを利用したり,リソース枯渇監視機能やJ2EEアプリケーションの実行時間監視機能を利用したりします。

ここでは,Smart Composer機能で実施できる障害発生時の運用について説明します。

参考
そのほかの障害時の対応については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 保守/移行/互換編」の次の個所を参照してください。
  • 2. トラブルシューティング(資料取得と対処の概要)
  • 3. トラブルシューティング(資料取得の設定)
  • 4. トラブルシューティング(資料の出力先と出力方法)
  • 5. トラブルシューティング(資料の出力内容)

これらの運用をする場合は,システム構築時に設定をしておく必要があります。設定手順については,「8.13 障害に対応したシステムの構築」を参照してください。

なお,ここでは,WebサーバとJ2EEサーバを同じサーバマシンに配置するパターン(combined-tier)で構築したシステムを例に説明しています。ここで説明している運用は,次のパターンで構築したシステムでも操作できます。

<この項の構成>
(1) 障害発生時の資料取得
(2) 障害発生時のサービスユニットの自動閉塞
(3) 障害発生時のサービスユニットの自動再起動

(1) 障害発生時の資料取得

システムで障害が発生した場合,トラブルシューティングに必要な資料が収集できます。トラブルシューティングに必要な資料は,個別に取得したり,snapshotログとして一括して取得したりできます。snapshotログは,システムの構成ソフトウェアが障害発生時にそのときの状態を出力したログで,各種構成ソフトウェアのログのほかに,スレッドダンプ(ハングアップの場合だけ),性能解析トレースなどが含まれます。

障害発生時のタイムリーな情報をsnapshotログとして収集するためには,障害検知時コマンドを利用します。障害検知時コマンドは,Management Serverが論理サーバの障害を検知したときに,システムによって実行されるコマンドです。障害検知時コマンドを利用して,トラブル発生時のスレッドダンプやユーザダンプの取得などの処理を実行することで,障害発生時のタイムリーな資料を取得できるようになります。障害検知時コマンドには,システム提供の障害検知時コマンドとユーザ作成の障害検知時コマンドの2種類があります。

障害検知時コマンドの実行とsnapshotログの収集によって,トラブルシューティングに必要な情報を取得できます。障害検知時コマンドの概要については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 保守/移行/互換編」の「2.3.2 障害検知時コマンドによる資料取得」を参照してください。

また,資料によっては,事前に取得のための設定をしておく必要があります。例えば,OSの統計情報,ユーザダンプなどは,システム構築時に取得のための設定をしておかないと取得できません。これらの資料はトラブルシューティングで必要となるため,取得することをお勧めします。デフォルトの設定ではsnapshotログとして収集できない資料でも,その資料の取得先をsnapshotログの収集対象として定義することで,snapshotログとして一括収集できるようになります。

取得できる資料およびsnapshotログ収集の設定については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 保守/移行/互換編」の「3.3.3 snapshotログ収集の設定(J2EEアプリケーションを実行するシステム)」を参照してください。

参考
ユーザ作成の障害検知時コマンドには,Smart Composer機能のコマンドを定義しておくこともできます。例えば,致命的な障害が発生したサービスユニットを自動閉塞するコマンドを,障害検知時コマンドとして設定しておくことができます。障害検知時コマンドを利用したサービスユニットの自動閉塞については,「(2) 障害発生時のサービスユニットの自動閉塞」を,障害検知時コマンドを利用して自動閉塞する場合の設定については,「8.13.1 障害発生時にサービスユニットを自動閉塞するための設定」を参照してください。

(2) 障害発生時のサービスユニットの自動閉塞

システムで障害が発生した場合に,Management Serverが障害を検知すると,システムによって障害検知時コマンドが実行されます。Smart Composer機能では,この障害検知時コマンドを利用して,致命的な障害が発生したサービスユニットを自動閉塞できます。

障害発生時のサービスユニットの自動閉塞を次の図に示します。

図6-8 障害発生時のサービスユニットの自動閉塞

[図データ]

障害発生時のサービスユニット自動閉塞の仕組みについて説明します。

サービスユニット内の論理サーバで障害が発生すると,アプリケーションサーバ内の運用管理エージェントは障害発生を検知し,Management Serverに障害発生を通知します。Management Serverでは,障害発生を検知すると,自動的にコマンドを実行できます。このコマンドを障害検知時コマンドといいます。障害検知時コマンドには,システム提供の障害検知時コマンドと,ユーザ作成の障害検知時コマンドの2種類があり,ユーザ作成の障害検知時コマンドでは,障害が発生したときに呼び出すコマンドを定義できます。

ユーザ作成の障害検知時コマンドとして,Smart Composer機能のコマンドを定義することで,障害が発生したサービスユニットを自動閉塞できます。障害検知時コマンドのファイル作成については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 保守/移行/互換編」の「3.3.1 障害検知時コマンドによる資料取得の設定(J2EEアプリケーションを実行するシステム)」を参照してください。

(3) 障害発生時のサービスユニットの自動再起動

JavaVMのフルガーベージコレクションやスレッド数などのリソース枯渇を事前に検知したり,J2EEアプリケーションの実行時間監視タイムアウトを検知したりすると,問題が発生したサービスユニットを自動再起動します。サービスユニットの自動再起動には,リソース枯渇監視機能や,J2EEアプリケーションの実行時間監視機能を利用します。

障害発生時のサービスユニットを自動再起動する図を次に示します。

図6-9 障害発生時のサービスユニットの自動再起動

[図データ]

障害発生時のサービスユニット自動再起動の仕組みについて説明します。

サービスユニットの自動再起動では,リソース枯渇監視機能,およびJ2EEアプリケーションの実行時間監視機能を利用します。リソース枯渇監視機能でリソース枯渇を事前に検知したり,J2EEアプリケーションの実行時間監視でタイムアウトを検知したりすると,これらの情報がManagementイベントとして,運用管理サーバに通知されます。Managementイベントが通知されると,Management ServerではManagementアクションが実行されます。Managementアクションでは,ユーザがあらかじめ定義しておいた処理を実施します。

Managementアクションとして,サービスユニットを再起動するSmart Composer機能のコマンドを定義することで,障害の発生したサービスユニットを自動再起動できます。

ManagementイベントおよびManagementアクションについては,マニュアル「Cosminexus アプリケーションサーバ 機能解説 運用/監視/連携編」の「9. Managementイベントの通知とManagementアクションによる処理の自動実行」を参照してください。リソース枯渇機能については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 運用/監視/連携編」の「4. リソースの枯渇監視」を参照してください。J2EEアプリケーションの実行時間監視機能については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 運用/監視/連携編」の「5.3 J2EEアプリケーションの実行時間の監視とキャンセル」を参照してください。