Citrix ADC

DNS SRV レコードを使用したサービス検出

SRV レコード(サービスレコード)は、ドメインネームシステム内のデータの仕様で、場所、つまり指定されたサービスのサーバのホスト名およびポート番号を定義します。レコードは、各サーバーの重みと優先順位も定義します。

SRV レコードの例:

_http._tcp.example.com. 100 IN SRV 10 60 5060 a.example.com.

次の表に、SRV レコードの各項目を示します。

ローカライズされた画像

DNS SRV レコードを使用して、サービスエンドポイントを検出できます。Citrix ADCアプライアンスは、サービスに関連付けられたSRVレコードを使用してDNSサーバーに定期的にクエリを実行するように構成されています。SRV レコードを受信すると、SRV レコードで公開された各ターゲットホストは、サービスに関連付けられたサービスグループにバインドされます。各バインディングは、SRV レコードからポート、プライオリティ、およびウェイトを継承します。サービス展開ごとに、Citrix ADCアプライアンスを起動中に一度設定する必要があるため、アプリケーションをワンタッチで展開できます。

重要: 動的に学習されたサービスグループメンバーの重みは、CLI または GUI を使用して変更できません。

使用例:負荷分散マイクロサービス

アプリケーションは、モノリシックアーキテクチャからマイクロサービスアーキテクチャに移行しています。マイクロサービス・アーキテクチャとバックエンド・サーバのAutoscaleソリューションへの移行により、アプリケーションの展開がよりダイナミックになります。このような動的な展開をサポートするには、プロキシまたは ADC がバックエンドアプリケーションまたはサービスインスタンスを動的に検出し、それらをプロキシ構成に吸収できる必要があります。 DNS SRVレコードを使用したサービス検出機能は、このような動的な展開シナリオでのCitrix ADCアプライアンスの構成に役立ちます。アプリケーション開発者は、オーケストレーションプラットフォームの一部を使用してアプリケーションをデプロイできます。アプリケーションのデプロイ中にコンテナーをインスタンス化している間にオーケストレーションプラットフォームは、これらのコンテナーのそれぞれにプロトコル固有の標準ポートを割り当てない場合があります。このようなシナリオでは、ポート情報を検出することがCitrix ADCアプライアンスを構成するための鍵となります。このようなシナリオでは、SRV レコードが役立ちます。優先順位や重みなどの SRV レコードパラメータを使用すると、アプリケーションのロードバランシングを改善できます。

  • Priority パラメータは、サーバプールのプライオリティを指定するために使用できます。
  • Weight パラメータは、バックエンドサービスインスタンスの容量を決定するために使用できるため、加重負荷分散に使用できます。
  • バックエンドサーバープールに変更がある場合(たとえば、バックエンドインスタンスがプールから削除されるなど)、インスタンスは既存のすべてのクライアント接続が受け入れられた後にのみ優雅に削除されます。

注:

  • A/AAAA レコードベースのサービスディスカバリでは、解決されるドメインに重みを割り当てるため、解決されるすべての IP アドレスは同じ重みを持ちます。

  • SRV 応答の重みが 100 より大きい場合、サービスは作成されません。

SRVレコードを使用した優先度ベースのロード・バランシング

SRV レコードを使用して、優先順位ベースのロードバランシングを実行できます。優先度ベースのサーバプールは、バックアップ仮想サーバの代替として使用できます。ns.conf ファイルの構成は、バックアップ仮想サーバと比較して最小限です。

SRV レコードを使用した優先順位ベースのロードバランシングでは、各サーバプールに優先順位番号が割り当てられます。数値が小さいほど、優先度が高くなります。優先順位が最も高いプール内のサーバの 1 つが、サーバの正常性と可用性に基づいてロードバランシング対象として選択されます。優先順位が最も高いサーバプール内のすべてのサーバがダウンしている場合、次に高い優先順位を持つサーバがロードバランシング対象として選択されます。ただし、最も優先順位の高いサーバプール内のサーバが再び起動している場合は、優先順位の高いプールからサーバが再び選択されます。

ある優先サーバープールから別のサーバープールへの切り替えは、既存のクライアントトランザクションをブリーディングすることによって優雅に行われます。したがって、現在のクライアントでは、アプリケーションアクセスにブレークは表示されません。

CLI を使用して SRV レコードのクエリを有効にするには

SRV レコードのクエリーを有効にするには、次のタスクを実行する必要があります。

  1. クエリタイプパラメータを SRV として指定して、サーバーを作成します。

    コマンドプロンプトで、次のように入力します。

    add server <name> <domain> [-queryType <queryType>])
    

    例:

    add server web_serv example.com -queryType SRV
    

    注:

    • デフォルトでは、IPv4 クエリーが送信されます。IPv6 クエリーを送信するには、IPv6 ドメインを有効にする必要があります。
    • SRV ターゲットドメイン名は 127 文字以下にする必要があります。
  2. Autoscaleモードを DNS として持つサービスグループを作成します。

    コマンドプロンプトで、次のように入力します。

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

    例:

    add servicegroup svc_grp_1 http -autoscale dns
    
  3. 手順 1 で作成したサーバをメンバーとしてサービスグループにバインドします。

    コマンドプロンプトで、次のように入力します。

    bind serviceGroup <serviceGroupName> <serverName>
    

    例:

    bind servicegroup svc_grp_1 web_serv
    

注:

  • サーバをサービスグループメンバーにバインドする場合、SRV サーバタイプのポート番号を入力する必要はありません。SRV サーバタイプにポート番号を指定すると、エラーメッセージが表示されます。

  • サーバとサービスグループにバインドするときに、オプションでネームサーバと TTL 値を指定できます。

GUI を使用して SRV レコードのクエリーを有効にするには

サーバーを作成する

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

    ローカライズされた画像

  2. サーバーの作成 」ページで、ドメイン名を選択します。

  3. 必要なすべてのパラメータの詳細を入力します。

  4. クエリー・タイプ」で「 SRV」を選択します。

  5. [作成] をクリックします。

Autoscaleモードを DNS として持つサービスグループを作成する

  1. トラフィック管理 」>「 ロードバランシング 」>「 サービスグループ 」に移動します。

  2. 負荷分散サービスグループ 」ページで、必要なすべてのパラメータの詳細を入力します。

  3. [AutoScale Mode]で、[DNS] を選択します。

    ローカライズされた画像

  4. [OK] をクリックします。

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

  1. トラフィック管理 」>「 ロードバランシング 」>「 サービスグループ 」に移動します。

  2. [Service Groups] ページで、作成したサービスグループを選択し、[Edit] をクリックします。

  3. [負荷分散サービスグループ] ページで、[サービスグループメンバー] をクリックします。

  4. サービスグループメンバーのバインド 」ページで、作成したサーバーを選択し、「 閉じる 」をクリックします。

    ローカライズされた画像

注:

  • バインド中は、SRV サーバタイプのポート番号を入力する必要はありません。SRV サーバタイプのポート番号を入力すると、エラーメッセージが表示されます。

  • サーバとサービスグループにバインドするときに、オプションでネームサーバと TTL 値を指定できます。

TTL 値の上書き

Citrix ADCアプライアンスは、アプリケーションの起動時にアプリケーションに関連付けられたSRVレコード内の更新をDNSサーバーに定期的に照会するように構成されています。デフォルトでは、このクエリの周期性は SRV レコードで発行された TTL に依存します。マイクロサービスまたはクラウド世界のアプリケーションでは、デプロイメントがより動的に変化します。その結果、プロキシは、アプリケーションの展開に対する変更を迅速に吸収する必要があります。したがって、ユーザーは、ドメインベースのサービス TTL パラメータを、SRV レコード TTL よりも低く、展開に最適な値に明示的に設定することをお勧めします。TTL 値は、次の 2 つの方法で上書きできます。

  • メンバーをサービスグループにバインドするとき
  • set lb パラメータコマンドを使用して、TTL 値をグローバルに設定します。

サービスグループメンバーのバインド中に TTL 値がグローバルに設定されている場合、サービスグループメンバーのバインド中に指定された TTL 値が優先されます。 サービスグループメンバーのバインド中またはグローバルレベルで TTL 値が指定されていない場合、DBS モニタ間隔は DNS 応答の TTL 値から導出されます。

CLI を使用した TTL 値の上書き

  • バインド中に TTL 値を上書きするには、コマンドプロンプトで次のように入力します。

     bind serviceGroup <serviceGroupName> (<serverName> [-dbsTTL <secs>])
    

    例:

     bind servicegroup svc_grp_1 web_serv -dbsTTL 10
    
  • TTL 値をグローバルに上書きするには、コマンドプロンプトで次のように入力します。

     set lb parameter [-dbsTTL <secs>]
    

    例:

     set lb parameter -dbsTTL 15
    

GUI を使用した TTL 値の上書き

バインド中に TTL 値を上書きするには、次の手順を実行します。

  1. トラフィック管理 」>「 ロードバランシング 」>「 サービスグループ 」に移動します。

  2. [Service Groups] ページで、作成したサービスグループを選択し、[Edit] をクリックします。

  3. [負荷分散サービスグループ] ページで、[サービスグループメンバー] をクリックします。

  4. サービスグループメンバーのバインド 」ページで、作成したサーバーを選択し、「 編集 」をクリックします。

  5. [ドメインベースサービス TTL] に、TTL 値を入力します。

グローバルレベルで TTL 値を上書きするには、次の手順を実行します。

  1. [トラフィック管理] > [ロードバランシング] > [ロードバランシングパラメータの変更] に移動します。

  2. [ドメインベースサービス TTL] に、TTL 値を入力します。

メモ: ドメインベースのサーバーの TTL 値が 0 に設定されている場合は,データパケットの TTL 値が使用されます。

サービスグループおよびドメイン名のバインディングに異なるネームサーバを指定する

特定のグループ内の異なるドメイン名に対して異なるネームサーバを設定できます。DBS サーバをサービスグループにバインドする場合は、nameServer パラメータの設定はオプションです。メンバーをサービスグループにバインドするときにネームサーバーが指定されていない場合、グローバルに設定されたネームサーバーが考慮されます。

CLI を使用したサービスグループへのサーバのバインド時のネームサーバの指定

コマンドプロンプトで、次のように入力します。

bind serviceGroup <serviceGroupName> (<serverName> [-nameServer <ip_addr>] [-dbsTTL <secs>])

:

bind servicegroup svc_grp_1 web_serv  -ns.nameserver.com 10.102.27.155 -dbsTTL 10

GUI を使用したサービスグループへのサーバのバインド時のネームサーバの指定

  1. トラフィック管理 」>「 ロードバランシング 」>「 サービスグループ 」に移動します。

  2. [Service Groups] ページで、作成したサービスグループを選択し、[Edit] をクリックします。

  3. [負荷分散サービスグループ] ページで、[サービスグループメンバー] をクリックします。

  4. サービスグループメンバーのバインド 」ページで、作成したサーバーを選択し、「 編集 」をクリックします。

  5. [ネ ームサーバー]で、バインドされたドメインのクエリの送信先となるネームサーバー名を指定します。

DNS SRV レコードを使用したサービス検出