[17.0.0.1 and later]

Liberty 動的ルーティングのルーティング・ルール

Liberty 動的ルーティングでルーティング・ルールを使用して、特定の要求の処理にどのサーバーが使用されるのかを厳密にカスタマイズできます。

デフォルトでは、動的ルーティングは、要求を処理できるすべてのサーバーに要求の負荷を分散します。デフォルトの動作をオーバーライドするには、ルーティング・ルールを構成する必要があります。ルーティング・ルールでは、要求を特定のサーバー・リソースにルーティングしたり、要求をリダイレクトしたり、要求を拒否したりすることができます。

  1. 同じアプリケーションを 2 つの異なるクラスターにデプロイした場合、ルーティング・ルールを使用して、特定のクライアント IP アドレス・セットからの要求を一方のクラスターに送信し、残りの要求をもう一方のクラスターに送信できます。
  2. 複数の集合内に同じアプリケーションをデプロイした場合、ルーティング・ルールを使用して、基本的に最初の集合にのみ要求を送信し、最初の集合内で使用可能なサーバーがないときにのみ 2 番目の集合内のサーバーに要求を送信するようにすることができます。
重要: 複数の集合にルーティングした場合、ルーティング・ルールは、いずれか 1 つの集合からのみ読み取られます。Intelligent Management for Web Servers は、plugin-cfg.xml 内の <IntelligentManagement> スタンザの RoutingRulesConnectorClusterName プロパティーで指定されている集合からのみルーティング・ルールを読み取ります。RoutingRulesConnectorClusterName プロパティーの値は、plugin-cfg.xml ファイルを作成した dynamicRouting コマンドの ‑‑collectives オプションで指定されている最初の集合の名前で初期化されます。 plugin-cfg.xml ファイル内の <IntelligentManagement> スタンザの RoutingRulesConnectorClusterName プロパティーで指定されている集合内の集合コントローラーにルーティング・ルールを追加します。

一致式とアクション

ルーティング・ルールは、一致式とアクションを提供します。一致式が各要求に適用されます。要求が一致式に一致した場合、その要求に対してルールで指定されているアクションが実行されます。一致式は、URI、ヘッダー、Cookie、パラメーター、クライアント IP アドレスなど、要求のさまざまなプロパティーを調べます。実行するアクションは、要求の拒否、リダイレクト、または許可のいずれかです。

ルーティング・ルールでは、各ルールにオーダー番号が割り当てられます。オーダー番号が低いものから高いものの順にルールが評価されます。要求に一致した最初のルールが、要求を処理する方法を決定します。どのルールも一致しなかった場合、要求は、要求を処理できるすべての使用可能なサーバーに分散されます。

ルールのアクション・タイプが要求の拒否である場合、該当する HTTP 戻りコードを指定します。拒否コードは、Web サーバーでサポートされる拒否コードのいずれかでなければなりません。

ルールのアクション・タイプが要求のリダイレクトである場合、リダイレクト先ロケーションを指定します。

ルールのアクション・タイプが要求の許可である場合、要求を送信できる宛先を指定します。宛先では、要求のロード・バランシング時に選択するすべてのサーバーのセットを指定します。宛先のセットから、要求を最適に処理できるサーバーのみが使用されます。フェイルオーバーの宛先を指定することもできます。フェイルオーバーの宛先内のサーバーは、1 次宛先内のすべてのサーバーが使用不可の場合にのみ使用されます。宛先は、クラスターまたはサーバーのいずれかとして指定できます。

デフォルトでは、要求がセッション・アフィニティーを持つ場合、サーバーの選択は、アフィニティーに基づいて行われます。アフィニティー・サーバーが見つかった場合、ルーティング・ルールは使用されません。ルーティング・ルールでアフィニティーの選択をオーバーライドするために、overrideAffinity 属性を server.xml ファイルの <routingRules> エレメントに追加できます。Liberty 動的ルーティングのルーティング・ルールの構成を参照してください。

クラスター宛先

クラスター宛先は、集合名およびクラスター名で指定します。クラスター宛先のいずれの部分でもワイルドカード文字 (*) を使用できます。例えば、クラスター宛先が cluster=collective1,* として指定されている場合、collective1 にあるすべてのクラスター内のサーバーを使用できます。クラスター宛先が cluster=*,cluster1 として指定されている場合、すべての集合の cluster1 内のサーバーを使用できます。

サーバー宛先

サーバー宛先は、集合名、ホスト名、ユーザー・ディレクトリー、およびサーバー名で指定します。サーバー宛先のすべての部分でワイルドカード文字を使用できます。例えば、サーバー宛先が server=collective1,*,*,* として指定されている場合、collective1 内のすべてのサーバーを使用できます。サーバー宛先が server=*,*,*,server1 として指定されている場合、すべての集合の server1 を使用できます。

ルーティング・ルールの評価

Intelligent Management for Web Servers は、ルーティング・ルールを適用する前に、要求を処理するのに最適な宛先セットを判別します。最適な宛先セットとは、仮想ホスト、コンテキスト・ルート、およびサーブレット・マッピングが要求に最も適合している Web アプリケーションが含まれたサーバー群です。ルーティング・ルールでは、ルーティングに使用する宛先を、最適な宛先セット全体のサブセットに制限できます。ルーティング・ルールにより、元の最適な宛先セットに含まれていない宛先を選択することはできません。

例えば、以下の条件が存在する場合を考えます。

  • /A/* というコンテキスト・ルートを持つ ApplicationA が clusterA にインストールされている。
  • /A/B/* というコンテキスト・ルートを持つ ApplicationAB が clusterAB にインストールされている。

この条件で、ルーティング・ルールは、要求を以下のように評価します。

  • 両方のアプリケーションが、要求 /A/B/myservletを処理できます。しかし、/A/B/myservlet については、/A/B/* コンテキスト・ルートの方が /A/* コンテキスト・ルートよりも適合しているため、/A/B/myservlet の要求は常に clusterAB にルーティングされます。
  • /A/B/myservlet の要求に一致するルーティング・ルールを使用して、宛先を clusterAB 内のサーバーのサブセットに制限することはできますが、この要求に対して適合するものとして選択されることが決してない clusterA 内のサーバーを選択することはできません。

トピックのタイプを示すアイコン 概念トピック

ファイル名: cwlp_wve_routing_rules.html