Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

11.6 CTMによるリクエストの負荷分散

CTMを使用した負荷分散について説明します。

負荷分散は,クラスタ構成などで並列に運用しているJ2EEサーバ間で,負荷が均等になるように処理を分散して割り当て,システム全体の可用性を高める機能です。クライアントからのcreateおよびinvokeの要求をサーバ間,プロセス間およびスレッド間で負荷分散できます。

負荷分散は,スケジュールキューを共有しているJ2EEアプリケーション間で実行できるほか,複数のCTMデーモン間で負荷情報を交換することで,異なるスケジュールキューで制御されているJ2EEアプリケーションに含まれる業務処理プログラムに対しても実行できます。

<この節の構成>
(1) 負荷分散のタイミング
(2) 負荷状況の監視

(1) 負荷分散のタイミング

CTMでは,次の2回のタイミングで負荷分散を実行します。

クライアントから業務処理プログラムを呼び出す流れと負荷分散のタイミングを,次の図に示します。

図11-21 EJBクライアントから業務処理プログラムを呼び出す流れと負荷分散のタイミング

[図データ]

図について説明します。

  1. EJBクライアントは,各ホストに配置されているグローバルCORBAネーミングサービスに対して,lookupを実行します。
    図の場合は,ホストAに対してlookupを実行しています。
    グローバルCORBAネーミングサービスには,スケジュールキューのリファレンスが登録されています。図の場合は,ホストAから,登録されていたスケジュールキューのリファレンスが返却されます。
  2. 取得したリファレンスを使用してcreateを実行します。
    図の場合は,ホストAのCTMデーモンに対して,createを実行しています。
    このタイミングで,1回目の負荷分散が実行されます。
    このとき,create時の選択ポリシーに従って負荷分散が実行されます。
    createを受け付けたCTMデーモンは,create時の選択ポリシーに従って,次のどちらかのリファレンスをEJBクライアントに返却します。
    • createを受け付けたホストのCTMデーモンに対応するCTMレギュレータのリファレンス
    • CTMドメイン内の負荷が軽いCTMデーモンに対応するCTMレギュレータのリファレンス
    図の場合は,ホストBのCTMレギュレータのリファレンスが返却されます。
  3. 取得したリファレンスを使用して,リモートインタフェースに定義したinvokeまたはremoveを実行します。
    図の場合は,ホストBのCTMレギュレータに対して,invokeを実行しています。リクエストは,CTMレギュレータによってCTMデーモンに送信されます。
    このタイミングで,2回目の負荷分散が実行されます。
    invoke実行時に,スケジュールポリシーに従って負荷分散が実行されます。
    図の場合は,リクエストを受け付けたホストAのCTMデーモンに振り分けられました。振り分けられたリクエストはスケジュールキューに登録されます。実行時には,あらかじめプールされていたEJBオブジェクトのリファレンスと結び付けられて,J2EEサーバの業務処理プログラムを呼び出します。このとき,異常終了したJ2EEサーバやハングアップしてタイムアウトした業務処理プログラムを呼び出すことはありません。
    注※
    remove実行時にはスケジュールポリシーは適用されません。

業務処理プログラムからの応答は,リクエストを受け付けたCTMデーモンを経由して,EJBクライアントに返却されます。

(2) 負荷状況の監視

CTMでは,スケジュールキューの負荷状況を監視できます。負荷状況の監視は,J2EEサーバ単位で指定した監視時間の間隔で実施されます。監視間隔の設定は,CTMデーモンを起動するときにctmstartコマンドの引数として指定します。また,運用管理ポータルで構築したシステムを運用している場合は,論理CTMであらかじめ設定しておくことができます。ctmstartコマンドまたは運用管理ポータルの設定の詳細については,マニュアル「Cosminexus リファレンス コマンド編」,またはマニュアル「Cosminexus 運用管理操作ガイド」を参照してください。