TOP設計・移行・活用> EJBへのロードバランシング
JBossクラスタ入門
JBossクラスタ入門

第3回:クラスタの構築(前編)
著者:日本ヒューレット・パッカード  水野 浩典、佐藤 修一
2005/9/29
前のページ  1  2  3
EJBへのロードバランシング

   EJBクライアントからEJBコンテナへロードバランシングする際に、どのノード(JBossサーバ)上のEJBへリクエストを振り分けるかということを決めるルールをロードバランスポリシーといいます。JBossでは、ロードバランスポリシーを各EJBのhomeスタブ、remoteスタブごとにEJBの配備記述子(jboss.xml)で設定することができます。

   ロードバランスポリシーはプラグイン可能なJavaクラスで実装されることになっているため、JBossが用意するポリシーを使うこともできますし、オリジナルのロードバランスポリシーを作成してJBossに組み込むこともできます。


ロードバランスポリシーの種類

   JBoss4.0.1RC1には次のロードバランスポリシーが用意されています。


RoundRobin

   クラスタ内のノードに対して順番に振り分けます。具体的には、以下のようになります。

  • 1番目のノードはランダムに選択されます
  • 2番目以降のノードは、クラスタが持っているノードリストから次のノードが選択されます
FirstAvailable

   初めに振り分けたノードを呼び出し続けます。具体的には、以下のようになります。

  • 1番目のノードはランダムに選択されます
  • 2番目以降も1番目と同じノードを呼び出します

   振り分け対象のノードに障害等が発生した場合は、再度ランダムにノードを選択します。

   また、このルールはクライアントごとに適用されます。例えば、SampleEJBのremoteオブジェクトに対して、クライアントAが1番目のノード上のものを選択したとしても、クライアントBは2番目のノード上のremoteオブジェクトを選択する可能性があります。


FirstAvailableIdenticalAllProxies

   同じEJBに対しては、どのクライアントからでも統一的にorg.jboss.ha.framework.interfaces.FirstAvailableと同じルールを適用します。ただし、homeスタブとremoteスタブは区別されます。

   例えば、SampleEJBのremoteオブジェクトに対して、クライアントAが初めに1番目のノード上のものを選択したとすると、次のクライアントBもクライアントAが選択した1番目のノード上のSampleEJBのremoteオブジェクトを選択します。


ロードバランスポリシーの設定

   ロードバランスポリシーを設定するには、EJBの配備記述子jboss.xmlの<cluster-config>要素の<home-load-blancepolicy>と<bean-load-balance-policy>要素にロードバランスポリシーのクラス名を記述します。

   ステートレスセッションbeanでの設定例です。

$ vi <ejb-jar>/META-INF/jboss.xml
<jboss>
  <enterprise-beans>
    <session>
      <ejb-name>StatelessSession</ejb-name>
      <jndi-name>StatelessSession</jndi-name>
      <clustered>True</clustered>
      <cluster-config>
        <home-load-balance-policy>
          org.jboss.ha.framework.interfaces.RoundRobin
        </home-load-balance-policy>
        <bean-load-balance-policy>
          org.jboss.ha.framework.interfaces.FirstAvailable
        </bean-load-balance-policy>
      </cluster-config>
    </session>
  </enterprise-beans>
</jboss>

   なお、<home-load-blance-policy>と<bean-load-balance-policy>要素の設定はオプションです。

   これらの設定を行わなかった場合のデフォルトのロードバランスポリシーは次のようになっています。

デフォルトのロードバランスポリシー
表1:デフォルトのロードバランスポリシー
(画像をクリックすると別ウィンドウに拡大表示します)


次回は

   次回は、図1で今回触れなかった設定について解説していきます。

前のページ  1  2  3


日本ヒューレット・パッカード株式会社 水野 浩典
著者プロフィール
日本ヒューレット・パッカード株式会社
水野 浩典

1991年、同社入社以来、エンタープライズ環境でHP-UXを使用しているお客様のサポートの仕事に従事。その後、IA-64(Itanium)とPA-RISCのダイナミックトランスレータの開発経験を経て、Java、J2EEベースのベンチマークや障害解析、コンサルティングを経験。現在は、オープンソースのコンサルティングやサポートを行っている。8bitのバイト列やアセンブラコードを見て、解析することを何よりの楽しみ(?)にしています。


日本ヒューレット・パッカード株式会社 佐藤 修一
著者プロフィール
日本ヒューレット・パッカード株式会社
佐藤 修一

2000年より自社J2EEサーバの開発/国際化/テストに従事。以来、商用/オープンソース問わずJ2EEベースのシステム構築、ベンチマーク等を担当。現在は主にオープンソースのJ2EEサーバである「JBoss AS」を含めた「JEMS製品」や、同じくオープンソースのRDBMS「MySQL」のコンサルティングやサポートを精力的に行いながら、毎日、ソースコードと戯れています。


INDEX
第3回:クラスタの構築(前編)
  JBossのクラスタ設定
  JBossクラスタの起動確認
EJBへのロードバランシング