ADC

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

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

SRV レコードの例:

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

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

SRV ディスカバリレコードのサンプル

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

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

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

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

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

注:

  • A/AAAA レコードベースのサービス検出では、解決対象のドメインに重みを割り当てるため、解決された IP アドレスはすべて同じ重みになります。

  • SRV 応答の重みが 100 を超える場合、サービスは作成されません。

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

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

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

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

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

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

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

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

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

    例:

    add server web_serv example.com -queryType SRV
    <!--NeedCopy-->
    

    注:

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

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

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

    例:

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

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

    bind serviceGroup <serviceGroupName> <serverName>
    <!--NeedCopy-->
    

    例:

    bind servicegroup svc_grp_1 web_serv
    <!--NeedCopy-->
    

注:

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

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

GUI を使用して SRV レコードをクエリできるようにするには

サーバーの作成

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

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

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

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

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

オートスケールモードを DNS とするサービスグループを作成

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

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

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

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

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

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

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

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

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

注:

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

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

TTL 値の上書き

NetScaler 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>])
     <!--NeedCopy-->
    

    例:

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

     set lb parameter [-dbsTTL <secs>]
     <!--NeedCopy-->
    

    例:

     set lb parameter -dbsTTL 15
     <!--NeedCopy-->
    

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>])
<!--NeedCopy-->

:

bind servicegroup svc_grp_1 web_serv  -ns.nameserver.com 10.102.27.155 -dbsTTL 10
<!--NeedCopy-->

GUI を使用してサーバをサービスグループにバインドする際にネームサーバを指定する

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

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

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

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

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

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