負荷分散サービスの優先順位
サービスの優先順位機能を使用すると、負荷分散の選択プリファレンスに基づいて、サービスまたはサービスグループの順序に優先順位を付けることができます。次の操作を行うと、優先順位を設定できます。
- サービスを負荷分散仮想サーバーにバインドします。
- サービスグループを負荷分散仮想サーバにバインドします。
- サービスグループメンバーを負荷分散サービスグループにバインドします。
現在、サービスの優先順位は次の方法で構成できます。ただし、これらのアプローチには次の制限があります。
バックアップ仮想サーバーチェーンの構成:構成行の数が多いため、各仮想サーバーのすべての LB サービスの状態を確認するには、
show
コマンドを複数回実行する必要があります。優先ロケーションの設定:すべてのアプリケーションエンドポイントに対してロケーションエントリを作成する必要があります。
サービスの優先順位付け機能は、設定コマンドの数を減らして前述の制限に対処し、すべての負荷分散サービスの IP アドレスをロケーションで表現しなくても、優先ロケーションの設定を行うことができます。
負荷分散サービスの優先順位を設定する
負荷分散サービスの優先順位を設定するために、-order
パラメータが bind コマンドに追加されます。
注:
順序番号が小さいほど優先度が高くなります。
コマンド:
bind lb vserver
たとえば、負荷分散仮想サーバー (vs1) にバインドされた一連のサービスを考えてみます。- order
パラメータを使用すると、次のように、サービスの選択順序に優先順位を付けることができます。
- vs1 にバインドされたセット 1 (s1, s2) — オーダ 1
- vs1 にバインドされたセット 2 (s3, s4) — オーダー 2
- vs1 にバインドされた 3 (s5, s6) をセット — オーダ 3
サービスを vs1 にバインドし、vs1 がクライアントトラフィックを受信すると、サービスの選択順序は次のようになります。
- 仮想サーバ (vs1) は、最初にセット 1 (s1 と s2) のサービスを選択します。これは、このセットには最小の順序番号が割り当てられているためです。既定では、最小の順序番号が優先されます。
- セット 1 のすべてのサービスが DOWN の場合、vs1 は順序番号 2 のセット 2 (s3 と s4) を選択します。
- セット 1 とセット 2 のすべてのサービスがダウンしている場合、vs1 は順序番号 3 のセット 3 (s5 と s6) を選択します。
CLI を使用して負荷分散サービスの優先順位を設定する
負荷分散サービスの優先順位を構成するには、コマンドプロンプトで次のコマンドを入力します。
LB 仮想サーバを追加します。
add lb vserver vs1 HTTP 1.1.1.1 80
LB サービスを追加します。
add service s[1-6] 2.2.2.[1-6] HTTP 80
注文番号を設定し、サービスを LB 仮想サーバーにバインドします。
bind lb vserver vs1 s1 -order 1
bind lb vserver vs1 s2 -order 1
bind lb vserver vs1 s3 -order 2
bind lb vserver vs1 s4 -order 2
bind lb vserver vs1 s5 -order 3
bind lb vserver vs1 s6 -order 3
GUI を使用した負荷分散サービスの優先順位の設定
前提条件:
- これで、負荷分散仮想サーバーが作成されました。
- サービスを作成しました。
負荷分散サービスの優先順位を設定し、仮想サーバにバインドするには、次の手順を実行します。
[トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、負荷分散仮想サーバーをダブルクリックします。
[負荷分散仮想サーバー] の [サービスとサービスグループ] セクションで、[負荷分散仮想サーバーサービスバインド] をクリックします。
[負荷分散仮想サーバーサービスバインド] ダイアログボックスで、[バインドの追加] をクリックします。
[サービスバインディング] ダイアログボックスで、サービスを選択します。
[順序] フィールドに番号を入力して、サービスの優先順位を設定します。
「バインド」をクリックします。
ステップ 1 ~ 6 を繰り返して、サービスごとに異なる優先順位番号を設定します。
LB policy コマンドを使用して、負荷分散サービスの優先順位を設定します
既定では、最小の順序番号が優先されます。ただし、新しい LB action コマンドと policy コマンドを使用すると、このデフォルトの動作を延期できます。着信クライアントトラフィックまたはクライアントデータに基づいて、サービスの選択順序を設定できます。
たとえば、仮想サーバ (vs1) にバインドされた一連のサービスを考えてみます。- order
パラメータを使用して、サービスの優先順位を次のように設定しました。
vs1 にバインドされたセット 1 (s1, s2) — オーダ 1
vs1 にバインドされたセット 2 (s3, s4) — オーダー 2
vs1 にバインドされた 3 (s5, s6) をセット — オーダ 3
既定では、最小の順序番号が優先されます。したがって、set 1、set2、set3 のサービスのデフォルトの優先順位は、それぞれ 1、2、3 です。ただし、特定のクライアントトラフィックについては、優先順位を 3、1、2 に変更する必要があります。これを実現するには、LB ポリシーを追加して vs1 にバインドします。
LB ポリシーコマンドは、ルールとアクションの 2 つの要素で構成されます。ルールはアクションに関連付けられ、リクエストがルールに一致した場合に実行されるアクションです。
注:
磅ポリシーコマンドは,磅とGSLBの両方の構成に共通であり,Citrix ADCアプライアンスによって処理される要求に適用されます。
LB アクション
**表現:**
add lb action
**例:**
add lb action act1 -type SELECTIONORDER -value 3 2 1
パラメーター:
name
: アクションの名前。type
: アクションのタイプ。string
: 指定したアクションの値。
LBポリシー
**表現:**
add lb policy
**例:**
add lb policy pol1 -rule CLIENT.IP.SRC.EQ(8.8.8.8) -action act1
パラメーター:
name
: ポリシーの名前。rule
: ルールは 1 つ以上の式で構成されます。ルールはアクションに関連付けられ、リクエストがルールに一致した場合に実行されるアクションです。action
:DROP、NOLBACTION、およびリセットがサポートされています。undefaction
:Citrix ADCアプライアンスは、要求がポリシーと一致しない場合、未定義イベント(UNDEFイベント)を生成します。set lb param -undefAction
コマンドを使用して、未定義のアクションを設定できます。これらのアクションは、DROP、NOLBACTION、RESET といった未定義のイベントに割り当てることができます。
次のように、LB アクション、LB ポリシーを追加し、そのポリシーを負荷分散仮想サーバー (vs1) にバインドする例を考えてみましょう。
add lb action act1 -type SELECTIONORDER -value 3 1 2
add lb policy pol1 -rule CLIENT.IP.SRC.EQ(8.8.8.8) -action act1
bind lb vserver vs1 -policyName pol1 -priority 10
ルールは IP アドレス、8.8.8.8
と一致するクライアントトラフィックを選択し、そのトラフィックを vs1 に送信します。LB アクションタイプ (SELECTIONORDER
) は、サービスの選択順序を定義します。LB ポリシーを vs1 にバインドした後、vs1 が IP アドレス8.8.8.8
からクライアントトラフィックを受信すると、次の順序でサービスが選択されます。
仮想サーバ (vs1) は、セット 3 (s5 と s6) のサービスを優先順位 3 で選択します。
セット 3 のすべてのサービスが DOWN の場合、vs1 は優先順位が 2 のセット 1 (s1 と s2) を選択します。
セット 3 とセット 2 のすべてのサービスがダウンしている場合、vs1 は順序 1 のセット 1(s1 と s2)を選択します。
CLI を使用して LB policy コマンドを使用して負荷分散サービスの優先順位を設定する
LB policy コマンドを使用して負荷分散サービスの優先順位を構成するには、コマンドプロンプトで次のコマンドを入力します。
LB アクションを追加します。
add lb action act1 -type SELECTIONORDER -value 3 1 2
LB ポリシーを追加します。
add lb policy pol1 -rule CLIENT.IP.SRC.EQ(8.8.8.8) -action act1
LB 仮想サーバを追加します。
add lb vserver vs1 HTTP 1.1.1.1 80
LB ポリシーを LB 仮想サーバーにバインドします。
bind lb vs vs1 -policyName pol1 -priority 10
LB サービスを追加します。
add service s[1-6] 2.2.2.[1-6] HTTP 80
順序を設定し、サービスを LB 仮想サーバーにバインドします。
bind lb vserver vs1 s1 -order 1
bind lb vserver vs1 s2 -order 1
bind lb vserver vs1 s3 -order 2
bind lb vserver vs1 s4 -order 2
bind lb vserver vs1 s5 -order 3
bind lb vserver vs1 s6 -order 3
GUI を使用して LB policy コマンドを使用して、負荷分散サービスの優先順位を設定します
前提条件:
- これで、負荷分散仮想サーバーが作成されました。
- サービスを作成しました。
ステップ 1-LB アクションを作成します。
AppExpert > LB > アクションに移動します。
[LB アクション] で、[追加] をクリックします。
[Create LB Actions] ダイアログボックスで、次のパラメータの値を指定します。
- アクション名:act1
- タイプ:SELECTIONORDER
- 値:3 1 2
注:
Valueフィールドの数字はスペースで区切られます。
[作成]をクリックします。
ステップ 2-LB ポリシーを作成します。
AppExpert > LB > ポリシーに移動します。
[LB ポリシー] で [追加] をクリックします。
[Create LB Policies] ダイアログボックスで、次のパラメータの値を指定します。
- 名前:pol1
- アクション:act1
- 未定義の結果アクション:NOLBACTION
- 式:CLIENT.IP.SRC.EQ(8.8.8.8)
「作成」をクリックします。
ステップ 3-LB ポリシーを LB 仮想サーバーにバインドします。
[トラフィック管理] > [LB] > [仮想サーバー] に移動し、仮想サーバーをダブルクリックします。
[詳細設定]で [ポリシー] をクリックします。
[Policies] セクションで、プラス (+) アイコンをクリックします。
「タイプを選択」(Choose Type) ダイアログボックスで、次のパラメータの値を指定します。
- ポリシーを選択:LB
- タイプを選択:リクエスト
[バインドを追加]をクリックします。
[ポリシーバインド] ダイアログボックスで、次のパラメータの値を指定します。
- ポリシーを選択:pol 1
- 優先度:10
- Goto表現:終了
- labelType を呼び出す:なし
[Bind]をクリックします。
ステップ 4-負荷分散サービスの優先順位を設定します。
負荷分散サービスの優先順位を設定するには、「GUI を使用した負荷分散サービスの優先順位の設定」の手順を参照してください。
サービスのパーシスタンス設定
サービスに永続性が設定されている場合、デフォルトでは常に永続性が優先されます。
たとえば、パーシステンスが設定され、優先順位が 1 のサービスを考えてみます。優先順位が 0 のサービスが UP の場合、優先順位が 1 のサービスが常に優先されます。
ただし、次の CLI コマンドを使用すると、このデフォルトの動作を上書きできます。
set lb param –overridePersistencyforOrder
次の例を考えてみましょう。
一連のサービスは、次の優先順位で仮想サーバ (vs1) にバインドされます。
vs1 にバインドされたセット 1 (s1, s2) — オーダ 1
vs1 にバインドされたセット 2 (s3, s4) — オーダー 2
永続性を上書きするには、コマンドプロンプトで次のコマンドを入力します。
set lb parameter -overridePersistencyforOrder YES
set 1 (永続性を持つサービスが構成されている) が DOWN の場合、set 2 のサービスが set 1 のサービスが UP になるまで、すべての要求を処理します。優先度 2 の持続性エントリが作成されます。
しばらくすると、set 1 のサービスが起動したと仮定します。これで、set 1 と set 2 の両方のサービスがリクエストを処理するために UP になりました。このシナリオでは、高次のサービスが稼働すると、新しい負荷分散の決定が下されます。パーシステンスエントリは、新しい負荷分散エントリで上書きされます。
優先度切り替え
優先度切り替え機能を使用すると、優先順位の高いサービスのバージョンアップグレード中に、すべてのトラフィックを優先度の低いサービスに切り替えることができます。以下のコマンドを使用して、優先度を切り替えることができます。
set lb vserver -toggleorder
set lb vserver v1 -orderthreshold 80
たとえば、次の優先順位を持つ 2 つのサービスがあるとします。
- Service 1- order 0
- サービス 2 — 注文 1
デフォルトでは、サービス 1 がすべてのトラフィックを処理します。サービス 1 をアップグレードする必要がある場合は、トラフィックをサービス 2 に再ルーティングする必要があります。
コマンドプロンプトで次のコマンドを入力して、優先度を切り替えます。
set lb vserver –toggleorder Descending
既定では、0 の方が優先度が高くなります。ただし、優先度を切り替えた後は、1 の方が優先度が高いと見なされます。サービスにパーシステンスエントリが存在する場合、パーシステンスプリファレンスの動作は、「サービスのパーシスタンス設定」セクションで説明されているとおりになります。