19.3. 負荷分散ポリシー

JBoss クライアント側インターセプター (スタブ) とロードバランサーはいずれも負荷分散ポリシーを使用して新しい要求を送信するサーバーノードを確定します。 この項では JBoss Enterprise Application Platform 内で使用可能な負荷分散ポリシーについて説明します。

19.3.1. クライアント側インターセプターアーキテクチャー

JBoss Enterprise Application Platform 5 では、 クライアント側インターセプターアーキテクチャーが使用されている時に次の負荷分散オプションを使用できます。 クライアント側スタブは目的のサービスを提供するすべてのノードの一覧を保持します。 各要求に対してこの一覧からノードを選択することが負荷分散ポリシーの役割です。 各ポリシーは 2 つの実装クラスを持っています。 1 つは、 レガシー分離呼び出しアーキテクチャーを使用する EJB2 のようなレガシーサービスが使用するための実装クラスです。 もう 1 つは AOP ベースの呼び出しを使用する EJB3 のようなサービスのための実装クラスになります。
  • Round-Robin: 各呼び出しは、 ノードの一覧の順に新しいノードへ配信されます。 最初のターゲットノードは一覧より無作為に選択されます。 org.jboss.ha.framework.interfaces.RoundRobin (レガシー) と org.jboss.ha.client.loadbalance.RoundRobin (EJB3) によって実装されます。
  • Random-Robin: 各呼び出しに対して一覧よりターゲットノードを無作為に選択します。 org.jboss.ha.framework.interfaces.RandomRobin (レガシー) と org.jboss.ha.client.loadbalance.RandomRobin (EJB3) によって実装されます。
  • First Available: 使用可能なターゲットノードの 1 つがメインターゲットとして選択されてから全てのコールに使用されます。 選択されるメンバーはクラスター内のメンバーの一覧から無作為に選択されます。 ターゲットノードの一覧が変更されると (1 ノードが起動または停止したため)、 現在選択されているノードが使用可能である場合を除き、 ポリシーによって新しいターゲットノードが選択されます。 各クライアント側プロキシは、他のプロキシに関係なく独自のターゲットノードを選択します。 そのため、 特定のクライアントが同じターゲットサービス (EJB など) に対して 2 つのプロキシをダウンロードする場合、各プロキシは独立してターゲットを選択します。 これが「セッションアフィニティ」または「スティッキーセッション」を提供するポリシーの例となります (ターゲットノードは確立されると変更されないため)。 org.jboss.ha.framework.interfaces.FirstAvailable (レガシー) や org.jboss.ha.client.loadbalance.aop.FirstAvailable (EJB3) によって実装されます。
  • First Available Identical All Proxies: 「First Available」 ポリシーと同じ動作になりますが、 選択されるターゲットノードは同じターゲットサービスに関連付けられた同じクライアント側 VM のすべてのプロキシで共有されます。 そのため、 特定のクライアントが同じターゲットサービス (EJB など) に対して 2 つのプロキシをダウンロードする場合、 各プロキシは同じターゲットを使用します。 org.jboss.ha.framework.interfaces.FirstAvailableIdenticalAllProxies (レガシー) や org.jboss.ha.client.loadbalance.aop.FirstAvailableIdenticalAllProxies (EJB3) によって実装されます。
上記のいずれもが org.jboss.ha.framework.interfaces.LoadBalancePolicy インターフェースを実装します。ユーザーは特殊な動作を必要とする場合にこの単純なインターフェースの独自の実装を自由に作成できます。後半のセクションでは、さまざまなサービスによって使用される負荷分散ポリシーの設定方法について説明します。