Citrix ADC

1 回の NITRO API 呼び出しで、サービスグループに必要なサービスグループメンバーのセットを構成する

1 回の NITRO API コールで、サービスグループに必要な一連のサービスグループメンバーを設定するためのサポートが追加されました。この設定をサポートするために、新しい API である Desired State API が追加されました。望ましい状態 API を使用すると、次のことができます。

  • 「servicegroup_servicegroupgroupmemberlist_binding」リソースに対する単一の PUT リクエストで、サービスグループメンバーのリストを提供します。
  • その PUT リクエストで、その重みと状態 (オプション) を指定します。
  • アプライアンスの構成を、アプリケーションサーバーに関する展開の変更と効果的に同期します。

Citrix ADCアプライアンスは、要求された目的のメンバセットと構成済みのメンバセットを比較します。その後、新しいメンバーが自動的にバインドされ、リクエストに存在しないメンバーのバインドが解除されます。

注:

  • この機能は、次のタイプのサービスグループでのみサポートされます。 API.
  • Desired State API を使用して IP アドレスベースのサービスのみをバインドできます。ドメイン名ベースのサービスは許可されません。
  • 以前は、NITRO コールにバインドできるサービスグループメンバーは 1 つだけです。

重要

ServiceGroupメンバーシップに必要な状態APIは、Citrix ADCクラスタ展開でサポートされています。

ユースケース:Kubernetesなどの大規模な展開で、展開の変更をCitrix ADCアプライアンスに同期する

大規模で非常に動的なデプロイ(Kubernetes など)では、アプライアンスの構成をデプロイの変更率に合わせて最新の状態に保ち、アプリケーショントラフィックを正確に処理することが課題となります。このような展開では、コントローラ(入力コントローラまたはE-Wコントローラ)がADC構成の更新を担当します。デプロイメントに変更があるときはいつでも、kube-api serverは「Endpoints イベント」を介して有効なエンドポイントセットをコントローラに送信します。Controller は、読み取り-デルタ-変更アプローチを使用して、次の処理を実行します。

  • サービスの現在設定されているエンドポイントセット(サービスグループのサービスグループメンバーセット)を ADC アプライアンスから取得します。
  • 設定されたエンドポイントセットと、受信したイベントのセットを比較します。
  • 新しいエンドポイント(サービスグループメンバー)をバインドするか、削除したエンドポイントをバインド解除します。

この環境では変更率とサービスのサイズが高いため、この設定方法は効率的ではなく、設定の更新が遅れる可能性があります。

望ましい状態 API は、単一の API でサービスグループの意図されたメンバセットを受け入れることで問題を解決し、構成を効果的に更新します。

CLI を使用してタイプ API のサービスグループを作成する

コマンドプロンプトで次を入力します。

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale <autoScale>]

例:

add serviceGroup svg1 HTTP -autoScale API

autoDisablegracefulパラメーター、autoDisabledelayパラメーター、autoScaleパラメーターを設定するには、add serviceGroup コマンドまたは set serviceGroup コマンドを使用します。

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale <autoScale>] [-autoDisablegraceful ( YES | NO)] [-autoDisabledelay <secs>]

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale (API |CLOUD | DISABLED| DNS |POLICY)]

set serviceGroup <serviceGroupName [-autoDisablegraceful ( YES | NO)] [-autoDisabledelay <secs>]

set serviceGroup <serviceGroupName [-autoScale (API |CLOUD | DISABLED| DNS |POLICY)]

例:

add serviceGroup svg1 HTTP autoDisablegraceful YES -autoDisabledelay 100

add serviceGroup svg1 HTTP -autoScale API

set serviceGroup svg1 -autoDisablegraceful  YES -autoDisabledelay 100

set serviceGroup svg1 -autoScale API

引数

自動無効化グレースフル

サービスが正常にシャットダウンされたことを示します。このオプションを有効にすると、アプライアンスはこのサービスへの未処理の接続がすべて閉じられるのを待ってから、サービスを削除します。システム上にすでに永続的なセッションがあるクライアントでは、新しい接続または要求が引き続きこのサービスに送信されます。サービスメンバが削除されるのは、未処理の接続がない場合だけです。デフォルト値:NO

AutoDisableDelay

グレースフルシャットダウンに許容される時間(秒単位)を示します。この期間中、システムに永続的セッションがあるクライアントに対しては、新しい接続または要求がこのサービスに送信され続けます。システムにパーシステンスセッションがない新しいクライアントからの接続または要求は、サービスに送信されません。代わりに、利用可能な他のサービス間で負荷が分散されます。遅延時間が経過すると、サービスメンバーは削除されます。

Autoscale API

Autoscale API 引数を使用すると、Desired State API を使用してメンバセットを目的のサービスグループにバインドできます。指定された条件がすべて一致する場合、サービスグループを Desired State API の非自動スケールタイプから Autoscale タイプに設定できます。

必要な状態 API は、サービスグループメンバーの IP アドレスが既存のサーバに関連付けられているかどうかを確認します。IP アドレスが既存のサーバーと一致する場合、API は既存のサーバーの IP アドレスと名前を再利用します。IP アドレスが既存のサーバと一致しない場合、API はサーバを作成し、IP アドレス自体をサーバ名として割り当てます。

例:

Citrix ADCアプライアンスに存在する、IPアドレスが2.2.2.2で、名前がmyserverであるサーバーを考えてみましょう。目的の状態 API を使用して、IP アドレスが 2.2.2.1 ~ 2.2.2.3 の範囲のサービスグループメンバーのセットをバインドします。

IP アドレス 2.2.2.2 は既存のサーバに関連付けられているため、API は IP アドレスと名前(2.2.2.2 と myserver)を再利用します。IP アドレス 2.2.2.1、2.2.2.3 を持つ既存のサーバーはないため、API はこれらの IP アドレスを持つサーバーを作成します。API は IP アドレス自体をサーバー名として割り当てます。

目的の状態コマンドで指定されたIPアドレスが、CS仮想サーバーなどの他のCitrix ADCエンティティと競合すると、競合が発生します。失敗の理由を含むエラーメッセージが表示されます。障害が発生したメンバーのリストのうち、最初のサービスグループメンバーの IP アドレスがエラーメッセージに表示されます。

例:

IP アドレスが 2.2.2.8 のサーバが LB サーバとして使用されているとします。目的の状態 API を使用して、IP アドレスが 2.2.2.2 ~ 2.2.2.11 の範囲のサービスグループメンバーのセットをバインドしようとします。

2.2.2.8 はすでに LB サービスに使用されているため、競合が発生します。失敗の理由とメンバーバインディングの失敗を含む次のエラーメッセージが表示されます。

{ "errorcode": 304, "message": "Address already in use", "severity": "ERROR", "servicegroup_servicegroupmemberlist_binding": { "servicegroupname": "sg1", "failedmembers": [ { "ip": "2.2.2.8", "port": 80 }, { "ip": "2.2.2.9", "port": 80 } ] } }
<!--NeedCopy-->

エラーコード 304 は、障害が発生したメンバーのリストのうち、最初のサービスグループメンバーである 2.2.2.8 を表示します。

既存のメンバーバインディングが次のいずれかの条件を満たすと、 set serviceGroup Autoscale コマンドが失敗することがあります。

  • サービスグループにバインドされているサーバがネームサーバまたはドメインベースのサーバである場合。
  • ループバックサーバー名が 127.0.0.1 または 0000:0000:0000:0000:0000:0000:0000:0000:0000:0001 以外である場合。
  • set ServiceGroup コマンドで異なるタイプのAutoscale (クラウド、API、DNS、ポリシー) を選択し、serviceGroup コマンドを追加する場合。

重要:

  • AutoDisableGraceful および AutoDisableDelay パラメータは、Autoscale タイプ「API」および「クラウド」のサービスグループにのみ適用されます。
  • AutoDisableGraceful パラメーターまたは AutoDisableDelay パラメーターが設定されていない場合、サービスメンバーはすぐに削除されます。

サービスグループメンバーを正常にバインド解除する

目的のステートリストにないサービスグループメンバーがある場合、autoDisablegracefulまたはautoDisabledelayパラメータの設定に基づいて、それらのメンバーは正常にバインド解除されます。

  • これらのパラメータの 1 つが設定されている場合、サービスグループメンバーは正常にバインド解除されます。
  • これらのパラメータがいずれも設定されていない場合、サービスグループメンバーはすぐにバインド解除されます。

注:

  • グレースフルバインド解除のために識別されたサービスグループメンバーは、show service group コマンドの実行時にだけ表示されます。
  • 正常なアンバインドとして識別されたサービスグループメンバーに対して、操作(set、unset など)を実行できません。

次の図に、show service group コマンドの例を示します。

show サービスグループコマンドの例

GUI を使用して API タイプのサービスグループを作成する

  1. [ トラフィック管理] > [負荷分散] > [サービスグループ] に移動し、[ 追加] をクリックします。

  2. [ AutoScale モード] で、[ API] を選択します。

GUI を使用して、API タイプのサービスグループにグレースフルシャットダウンまたは遅延時間を設定します

  1. トラフィック管理 > 負荷分散 > サービスグループに移動します

    サービスグループの基本設定

  2. [ AutoScale モード] で、[ API] を選択します。

  3. [ グレースフルの自動無効化] で [ はい] を選択します

  4. [ 自動無効化遅延] に、グレースフルシャットダウンの待機時間を入力します。

注:自動無効化 ]または[ 自動表示遅延 ]フィールドは、 AutoScale モードでAPI ]または[ CLOUD]を選択した場合にのみ有効になります。