以下にサーバーインスタンスやサーバーを多重化もしくは分散化して運用した場合におけるシステム構成について説明します。
旧バージョン製品からIIOP通信する場合、もしくは、旧製品に対してIIOP通信する場合にはEJBディスパッチ機能を利用したロードバランスは利用できません。旧製品から提供するグループ管理サービスを利用してください。
サーバーインスタンスを単一運用する場合
EJBアプリケーションを運用するIJServerクラスタが単一サーバーインスタンスで運用されている場合、ロードバランスは不要です。また、同一サーバーインスタンスのアプリケーションからEJBアプリケーションを呼び出す場合も、IIOP通信を介さずに呼び出されるため、ロードバランスは不要です。
サーバーインスタンスを多重化もしくは分散化する運用の場合
EJBアプリケーションを運用するIJServerクラスタが複数サーバーインスタンスで運用されている場合や、呼び出し元から複数のIJServerクラスタを呼び出す場合には、EJBディスパッチャ用のIJServerクラスタ/サーバーインスタンスを用意します。呼び出し元はEJBディスパッチャを運用するサーバーインスタンスに対してIIOP通信リクエストを送信するように設計します。
また、1つのサーバーに複数のEJBディスパッチャを作成することもできます。例えば処理の優先度によって複数のEJBディスパッチャを用意することによって、優先度の低い処理に負荷が集中した場合において優先度の高い処理への影響を軽減できます。
注意
EJBディスパッチャを利用する場合、振り分け対象となる複数のIJServerクラスタで同一のEnterprise JavaBeansを運用しないでください。
EJBディスパッチャが振り分けを開始しようとした時に、すでに別のIJServerクラスタで同一のEnterprise JavaBeansが運用されている場合にはEJBD0018の警告メッセージを出力し、そのIJServerクラスタは異常が発生したEnterprise JavaBeansに対する振り分け対象から除外されます。
サーバーを多重化した運用の場合
EJBディスパッチャを運用するサーバーの異常を想定し、サーバーを多重化して運用する場合にはIPCOMによる負荷分散を使用します。呼び出し元はIPCOMの仮想ホストに対してIIOP通信リクエストを送信するように設計します。
EJBディスパッチ機能ではIIOP通信で各サーバーインスタンス間の連携が行われます。このため、EJBディスパッチャを運用するサーバーインスタンスに対しても、以下のチューニングが必要です。
IIOP通信に関する時間監視機能の各種チューニング
EJBディスパッチャが振り分け対象のサーバーインスタンスに対してIIOP通信する時の時間監視時間を設定します。チューニング可能な設定については「2.9 EJBコンテナ時間監視機能」を参照してください。
スレッドプールの各種チューニング
EJBディスパッチャがIIOP通信要求を受け付けて振り分け作業を実施する場合、同時にディスパッチ作業が実行可能なスレッド数をチューニングします。チューニング可能な設定については「6.8.16 スレッドプールの定義項目」を参照してください。
Java VMのヒープ領域サイズのチューニング
EJBディスパッチャはIIOP通信要求を受け付けて振り分け作業を行うため、受け付けるリクエストの要求数などによりJava VMのヒープ領域サイズをチューニングする必要があります。「チューニングガイド」の「JDK/JREのチューニング」を参照し、適切な値にチューニングしてください。
利用するロードバランス機能により、IPCOMを利用した負荷分散が利用可能なEnterprise JavaBeansが以下のように異なります。
グループ管理サービスを利用した場合 | EJBディスパッチャを利用した場合 |
---|---|
呼び出し可能なEnterprise JavaBeansはStateless Session Beanだけです。 | 呼び出し可能なEnterprise JavaBeansはStateless Session BeanとStateful Session Beanです。 |
また、分散先のサーバーインスタンスが決定するタイミングも以下のように異なります。
グループ管理サービスを利用した場合 | EJBディスパッチャを利用した場合 |
---|---|
ビジネスメソッドを実行するたびに分散先のサーバーインスタンスが変わります。 Stateful Session Beanではセッションを作成したサーバーインスタンスと異なるサーバーインスタンスに処理が振り分けられる可能性があるため、Stateful Session Beanは使用しないでください。 | Home/Remoteインタフェースを利用する場合には、Homeインタフェースに対する初回のcreateメソッドの実行で振り分けられたサーバーインスタンスで処理されます。処理するサーバーインスタンスを変更したい場合には、lookupメソッドから再実行してください。 ビジネスインタフェースを利用する場合には、lookupメソッドの実行以降は同一のサーバーインスタンスで処理されます。処理するサーバーインスタンスを変更したい場合には、lookupメソッドから再実行してください。 @EJBアノテーションを利用したオブジェクトの注入を行うとオブジェクトが注入された時点で分散先が決定してしまい、処理するサーバーインスタンスを変更できないため、@EJBアノテーションを利用したオブジェクトの注入は行わないでください。 |