ADC

Dienstermittlung mit DNS-SRV-Datensätzen

Ein SRV-Record (Service Record) ist eine Spezifikation von Daten im Domain Name System, die den Standort definiert, d. h. den Hostnamen und die Portnummer der Server für bestimmte Dienste. Der Datensatz definiert auch das Gewicht und die Priorität jedes Servers.

Beispiel für einen SRV-Datensatz:

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

In der folgenden Tabelle werden die einzelnen Elemente in einem SRV-Datensatz beschrieben:

Beispiel für SRV-Erkennungsdatensätze

Sie können die DNS-SRV-Einträge verwenden, um die Dienstendpunkte zu ermitteln. Die Citrix ADC Appliance ist so konfiguriert, dass sie regelmäßig die DNS-Server mit dem SRV-Eintrag abfragt, der einem Dienst zugeordnet ist. Beim Empfang des SRV-Datensatzes ist jeder im SRV-Datensatz veröffentlichte Zielhost an eine dem Dienst zugeordnete Dienstgruppe gebunden. Jede der Bindungen erbt den Port, die Priorität und das Gewicht vom SRV-Datensatz. Für jede Dienstbereitstellung muss der Benutzer die Citrix ADC Appliance einmal konfigurieren, während sie gestartet wird, sodass sie zu einer Single-Touch-Bereitstellung für Anwendungen wird.

Wichtig: Das Gewicht dynamisch gelernter Servicegruppenmitglieder kann nicht mit der CLI oder der GUI geändert werden.

Anwendungsfall: Load-Balancing-Microservices

Anwendungen bewegen sich von monolithischen Architekturen in Richtung Microservice-Architektur. Durch die Umstellung auf die Microservice-Architektur zusammen mit der automatischen Back-End-Server-Lösung wird die Anwendungsbereitstellung dynamischer. Um eine solche dynamische Bereitstellung zu unterstützen, müssen die Proxys oder ADC in der Lage sein, die Back-End-Anwendungs- oder Service-Instanzen dynamisch zu erkennen und in die Proxy-Konfiguration aufzunehmen. Die Funktion zur Diensterkennung mithilfe von DNS-SRV-Einträgen unterstützt die Konfiguration der Citrix ADC Appliance in einem solchen dynamischen Bereitstellungsszenario. Anwendungsentwickler können einige Orchestrierungsplattformen verwenden, um die Anwendung bereitzustellen. Orchestrierungsplattformen beim Instanziieren von Containern während der Anwendungsbereitstellung weisen möglicherweise nicht den protokollspezifischen Standardport für jeden dieser Container zu. In solchen Szenarien wird das Erkennen der Portinformationen der Schlüssel zur Konfiguration der NetScaler ADC Appliance. SRV-Aufzeichnungen sind in einem solchen Szenario hilfreich. SRV-Datensatzparameter wie Priorität und Gewicht können für einen besseren Lastenausgleich von Anwendungen verwendet werden.

  • Der Prioritätsparameter kann verwendet werden, um die Priorität des Serverpools zu bestimmen.
  • Der Gewichtsparameter kann verwendet werden, um die Kapazität der Backend-Serviceinstanzen zu bestimmen, und kann daher für den gewichteten Lastenausgleich verwendet werden.
  • Immer wenn sich der Backend-Serverpool ändert, z. B. wenn eine Back-End-Instanz aus dem Pool entfernt wird, wird die Instanz freundlicherweise erst entfernt, nachdem alle bestehenden Client-Verbindungen berücksichtigt wurden.

Hinweis:

  • Bei einer auf A/AAAA-Datensätzen basierenden Diensterkennung haben alle aufgelösten IP-Adressen das gleiche Gewicht, da Sie die Gewichtung der aufgelösten Domäne zuweisen.

  • Wenn das Gewicht in der SRV-Antwort größer als 100 ist, werden keine Dienste erstellt.

Prioritätsbasierter Lastenausgleich mithilfe von SRV-Datensätzen

Sie können SRV-Datensätze verwenden, um einen prioritätsbasierten Lastenausgleich durchzuführen. Der prioritätsbasierte Serverpool kann eine Alternative für die virtuellen Backup-Server sein. Die Datei ns.conf erfordert im Vergleich zu den virtuellen Backup-Servern nur eine minimale Konfiguration.

Beim prioritätsbasierten Lastenausgleich mit SRV-Datensätzen wird jedem Serverpool eine Prioritätsnummer zugewiesen. Die kleinste Zahl hat die höchste Priorität. Einer der Server im Pool der höchsten Priorität wird für den Lastenausgleich ausgewählt, basierend auf dem Zustand und der Verfügbarkeit des Servers. Wenn alle Server im Serverpool mit der höchsten Priorität ausgefallen sind, werden die Server mit der nächsthöheren Priorität für den Lastenausgleich ausgewählt. Wenn die Server im Serverpool mit der höchsten Priorität jedoch wieder aktiv sind, werden die Server erneut aus dem Pool mit der höchsten Priorität ausgewählt.

Der Wechsel von einem Serverpool mit Priorität zu einem anderen Serverpool erfolgt problemlos, indem die vorhandenen Clienttransaktionen gelöscht werden. Daher stellen die aktuellen Clients keine Unterbrechung des Anwendungszugriffs fest.

So aktivieren Sie die Abfrage von SRV-Datensätzen mit der CLI

Führen Sie die folgenden Aufgaben aus, um die Abfrage von SRV-Datensätzen zu aktivieren:

  1. Erstellen Sie einen Server, indem Sie den Abfragetypparameter als SRV angeben.

    Geben Sie an der Befehlszeile Folgendes ein:

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

    Beispiel:

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

    Hinweis:

    • Standardmäßig werden IPv4-Abfragen gesendet. Um IPv6-Abfragen zu senden, müssen Sie die IPv6-Domäne aktivieren.
    • Der SRV-Zieldomänenname darf 127 Zeichen nicht überschreiten.
  2. Erstellen Sie eine Dienstgruppe mit dem Autoscale-Modus als DNS.

    Geben Sie an der Befehlszeile Folgendes ein:

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

    Beispiel:

    add servicegroup svc_grp_1 http -autoscale dns
    <!--NeedCopy-->
    
  3. Binden Sie den in Schritt 1 erstellten Server als Mitglied an die Dienstgruppe.

    Geben Sie an der Befehlszeile Folgendes ein:

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

    Beispiel:

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

Hinweis:

  • Wenn Sie Server an Servicegruppenmitglieder binden, müssen Sie die Portnummer für SRV-Servertypen nicht eingeben. Falls Sie eine Portnummer für den SRV-Servertyp angeben, wird eine Fehlermeldung angezeigt.

  • Sie können optional einen Nameserver und einen TTL-Wert angeben, während Sie einen Server an die Dienstgruppe binden.

So aktivieren Sie die Abfrage von SRV-Datensätzen mithilfe der GUI

Einen Server erstellen

  1. Navigieren Sie zu Traffic Management > Load Balancing > Server, und klicken Sie auf Hinzufügen .

  2. Wählen Sie auf der Seite Server erstellen den Domänennamen aus.

  3. Geben Sie die Details aller erforderlichen Parameter ein.

  4. Wählen Sie unter Abfragetypdie Option SRVaus.

  5. Klicken Sie auf Erstellen.

Erstellen Sie eine Dienstgruppe mit dem Autoscale-Modus als DNS

  1. Navigieren Sie zu Traffic Management > Load Balancing > Service Groups.

  2. Geben Sie auf der Seite Load Balancing Service Group Details zu allen erforderlichen Parametern ein.

  3. Wählen Sie für AutoScale Mode die Option DNS aus.

  4. Klicken Sie auf OK.

Server an das Mitglied der Servicegruppe binden

  1. Navigieren Sie zu Traffic Management > Load Balancing > Service Groups.

  2. Wählen Sie auf der Seite Dienstgruppen die Dienstgruppe aus, die Sie erstellt haben, und klicken Sie auf Bearbeiten.

  3. Klicken Sie auf der Seite Load Balancing-Dienstgruppen auf Dienstgruppenmitglieder.

  4. Wählen Sie auf der Seite Bindung von Dienstgruppenmitgliedern den Server aus, den Sie erstellt haben, und klicken Sie auf Schließen .

Hinweis:

  • Während der Bindung müssen Sie die Portnummer für SRV-Servertypen nicht eingeben. Falls Sie eine Portnummer für den SRV-Servertyp eingeben, wird eine Fehlermeldung angezeigt.

  • Sie können optional einen Nameserver und einen TTL-Wert angeben, während Sie einen Server an die Dienstgruppe binden.

TTL-Werte überschreiben

Die NetScaler ADC-Appliance ist so konfiguriert, dass sie den DNS-Server während des Anwendungsstarts regelmäßig nach einem Update im SRV-Eintrag abfragt, der mit der Anwendung verknüpft ist. Standardmäßig hängt die Periodizität für diese Abfrage von der im SRV-Datensatz veröffentlichten TTL ab. In Microservice- oder Cloud-World-Anwendungen ändern sich Bereitstellungen dynamischer. Daher müssen Proxys Änderungen an der Anwendungsbereitstellung schneller aufnehmen. Daher wird Benutzern empfohlen, den TTL-Parameter des domänenbasierten Dienstes explizit auf einen Wert festzulegen, der niedriger als der SRV-Datensatz-TTL ist und für Ihre Bereitstellung optimal ist. Sie können den TTL-Wert mit zwei Methoden überschreiben:

  • Beim Binden eines Mitglieds an die Dienstgruppe
  • Festlegen des TTL-Werts global mithilfe des Befehls set lb parameter.

Falls der TTL-Wert sowohl beim Binden des Dienstgruppenmitglieds als auch global konfiguriert wird, hat der beim Binden des Dienstgruppenmitglieds angegebene TTL-Wert Vorrang. Wenn der TTL-Wert weder beim Binden eines Dienstgruppenmitglieds noch auf globaler Ebene angegeben wird, wird das DBS-Überwachungsintervall vom TTL-Wert in der DNS-Antwort abgeleitet.

Überschreiben der TTL-Werte mit der CLI

  • Um den TTL-Wert beim Binden zu überschreiben, geben Sie an der Eingabeaufforderung Folgendes ein:

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

    Beispiel:

     bind servicegroup svc_grp_1 web_serv -dbsTTL 10
     <!--NeedCopy-->
    
  • Um den TTL-Wert global zu überschreiben, geben Sie an der Eingabeaufforderung Folgendes ein:

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

    Beispiel:

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

Überschreiben der TTL-Werte mit der GUI

Um den TTL-Wert beim Binden zu überschreiben:

  1. Navigieren Sie zu Traffic Management > Load Balancing > Service Groups.

  2. Wählen Sie auf der Seite Dienstgruppen die Dienstgruppe aus, die Sie erstellt haben, und klicken Sie auf Bearbeiten.

  3. Klicken Sie auf der Seite Load Balancing-Dienstgruppen auf Dienstgruppenmitglieder.

  4. Wählen Sie auf der Seite Bindung von Dienstgruppenmitgliedern den Server aus, den Sie erstellt haben, und klicken Sie auf Bearbeiten .

  5. Geben Sie im Feld Domänenbasierter Dienst TTLden TTL-Wert ein.

Um den TTL-Wert auf globaler Ebene zu überschreiben:

  1. Navigieren Sie zu Verkehrsmanagement > Load Balancing > Load Balancing-Parameter ändern

  2. Geben Sie im Feld Domänenbasierter Dienst TTLden TTL-Wert ein.

Hinweis: Wenn der TTL-Wert des domänenbasierten Servers auf 0 festgelegt ist, wird der TTL-Wert aus dem Datenpaket verwendet.

Festlegen verschiedener Nameserver für Dienstgruppen- und Domänennamenbindungen

Sie können verschiedene Nameserver für verschiedene Domainnamen in einer bestimmten Gruppe konfigurieren. Das Festlegen des NameServer-Parameters ist optional, während ein DBS-Server an die Dienstgruppe gebunden wird. Wenn kein Nameserver angegeben wird, während ein Mitglied an die Dienstgruppe gebunden wird, wird der global konfigurierte Nameserver berücksichtigt.

Angeben von Nameservern beim Binden eines Servers an Dienstgruppen über die CLI

Geben Sie an der Befehlszeile Folgendes ein:

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

Beispiel:

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

Angabe von Nameservern beim Binden eines Servers an Dienstgruppen über die GUI

  1. Navigieren Sie zu Traffic Management > Load Balancing > Service Groups.

  2. Wählen Sie auf der Seite Dienstgruppen die Dienstgruppe aus, die Sie erstellt haben, und klicken Sie auf Bearbeiten.

  3. Klicken Sie auf der Seite Load Balancing-Dienstgruppen auf Dienstgruppenmitglieder.

  4. Wählen Sie auf der Seite Bindung von Dienstgruppenmitgliedern den Server aus, den Sie erstellt haben, und klicken Sie auf Bearbeiten .

  5. Geben Sie unterNameserver den Namen des Nameservers an, an den die Abfrage für die gebundene Domäne gesendet werden muss.

Dienstermittlung mit DNS-SRV-Datensätzen