Diensterkennung mit DNS-SRV-Einträgen

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

Beispiel für einen SRV-Datensatz:

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

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

lokalisierte Grafik

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 Bindung erbt den Port, die Priorität und das Gewicht aus dem SRV-Datensatz. Für jede Dienstbereitstellung muss der Benutzer die Citrix ADC Appliance einmal konfigurieren, während er sie hochbringt, sodass sie zu einer einzigen Touch-Bereitstellung für Anwendungen wird.

Wichtig: Die Gewichtung dynamisch erlernter Servicegruppenmitglieder kann nicht mit der CLI oder der GUI geändert werden.

Anwendungsfall: Load Balancing Microservices

Anwendungen bewegen sich in Richtung Microservice-Architektur aus monolithischen Architekturen. 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 Proxies oder ADC die Back-End-Anwendungs- oder Dienstinstanzen dynamisch erkennen und in die Proxy-Konfiguration aufnehmen können.

Die Service-Erkennung mithilfe von DNS-SRV-Datensätzen unterstützt die Konfiguration der Citrix ADC Appliance in einem solchen dynamischen Bereitstellungsszenario. Anwendungsentwickler können einige Orchestrierungsplattformen verwenden, um die Anwendung bereitzustellen. Orchestrierungsplattformen, während Container während der Anwendungsbereitstellung instanziiert werden, weisen für jeden dieser Container möglicherweise keinen protokollspezifischen Standardport zu. In solchen Szenarien wird das Erkennen der Portinformationen der Schlüssel zur Konfiguration der Citrix ADC Appliance. SRV-Datensätze sind in einem solchen Szenario hilfreich. SRV-Record-Parameter wie Priorität und Gewicht können für einen besseren Lastausgleich von Anwendungen verwendet werden.

  • Priority Parameter kann verwendet werden, um die Priorität des Server-Pools zu diktieren.
  • Der Weight Parameter kann verwendet werden, um die Kapazität der Back-End-Dienstinstanzen zu bestimmen und kann daher für den gewichteten Lastausgleich verwendet werden.
  • Wenn eine Änderung im Back-End-Server-Pool vorliegt, z. B. eine Back-End-Instanz aus dem Pool entfernt wird, wird die Instanz nur dann gnadenlos entfernt, nachdem alle vorhandenen Clientverbindungen berücksichtigt wurden.

Hinweis:

  • Bei einer datensbasierten A/AAAA Service-Discovery haben alle aufgelösten IP-Adressen das gleiche Gewicht, da Sie die Gewichtung der aufgelösten Domäne zuweisen.

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

Prioritätsbasierter Lastausgleich mit SRV-Datensätzen

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

Beim prioritätsbasierten Lastenausgleich mit SRV-Datensätzen wird jedem Serverpool eine Prioritätsnummer zugewiesen. Weniger die Zahl, höher ist die 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 höchster Priorität ausgefallen sind, werden die Server mit der nächsthöheren Priorität für den Lastenausgleich ausgewählt. Wenn jedoch die Server im Serverpool mit höchster Priorität erneut hochgesetzt sind, werden die Server erneut aus dem Pool der höchsten Priorität ausgewählt.

Der Wechsel von einem Prioritätsserverpool zu einem anderen Serverpool erfolgt gnädig, indem die vorhandenen Client-Transaktionen entlüftet werden. Daher sehen die aktuellen Clients keine Unterbrechung im Anwendungszugriff.

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

Sie müssen die folgenden Aufgaben ausführen, 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 Eingabeaufforderung Folgendes ein:

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

    Beispiel:

    add server web_serv example.com -queryType SRV
    

    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 Autoskalierungsmodus als DNS.

    Geben Sie an der Eingabeaufforderung Folgendes ein:

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

    Beispiel:

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

    Geben Sie an der Eingabeaufforderung Folgendes ein:

    bind serviceGroup <serviceGroupName> <serverName>
    

    Beispiel:

    bind servicegroup svc_grp_1 web_serv
    

Hinweis:

  • Wenn Sie Server an Servicegruppenmitglieder binden, müssen Sie die Portnummer für SRV-Servertypen nicht eingeben. Wenn 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 mit der GUI

Erstellen eines Servers

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

    lokalisierte Grafik

  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 Abfragetyp die Option SRV aus.

  5. Klicken Sie auf Erstellen.

Erstellen einer Dienstgruppe mit Autoskalierungsmodus als DNS

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

  2. Geben Sie auf der Seite Lastausgleichsdienstgruppe Details aller erforderlichen Parameter ein.

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

    lokalisierte Grafik

  4. Klicken Sie auf OK.

Server an das Dienstgruppenmitglied binden

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

  2. Wählen Sie auf der Seite Dienstgruppen die von Ihnen erstellte Dienstgruppe aus, und klicken Sie auf Bearbeiten.

  3. Klicken Sie auf der Seite Lastausgleichsdienstgruppen 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 .

lokalisierte Grafik

Hinweis:

  • Während der Bindung müssen Sie die Portnummer für SRV-Servertypen nicht eingeben. Wenn 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 Citrix ADC Appliance ist so konfiguriert, dass der DNS-Server regelmäßig nach Aktualisierungen im SRV-Eintrag abfragt, die der Anwendung während des Programmstarts zugeordnet sind. 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 die Bereitstellungen dynamischer. Daher müssen Proxys schneller Änderungen an der Anwendungsbereitstellung absorbieren. Daher wird empfohlen, den domänenbasierten Dienst-TTL-Parameter explizit auf einen Wert festzulegen, der niedriger ist als die TTL des SRV-Datensatzes und optimal für Ihre Bereitstellung ist. Sie können den TTL-Wert mit zwei Methoden überschreiben:

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

Wenn der TTL-Wert sowohl beim Binden des Dienstgruppenmitglieds als auch global konfiguriert ist, 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 während der Bindung zu überschreiben, geben Sie an der Eingabeaufforderung Folgendes ein:

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

    Beispiel:

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

     set lb parameter [-dbsTTL <secs>]
    

    Beispiel:

     set lb parameter -dbsTTL 15
    

Überschreiben der TTL-Werte mit der GUI

So überschreiben Sie den TTL-Wert während der Bindung:

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

  2. Wählen Sie auf der Seite Dienstgruppen die von Ihnen erstellte Dienstgruppe aus, und klicken Sie auf Bearbeiten.

  3. Klicken Sie auf der Seite Lastausgleichsdienstgruppen 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 unter Domänenbasierter Dienst-TTL den TTL-Wert ein.

So überschreiben Sie den TTL-Wert auf globaler Ebene:

  1. Navigieren Sie zu Traffic Management > Load Balancing > Load Balancing Parameter ändern .

  2. Geben Sie unter Domänenbasierter Dienst-TTL den TTL-Wert ein.

Hinweis:

Wenn der Domänenbasierte Server-TTL-Wert auf 0 festgelegt ist, wird der TTL-Wert aus dem Datenpaket verwendet.

Angeben verschiedener Nameserver für Dienstgruppen- und Domänennamensbindungen

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

Angeben von Namensservern während der Bindung eines Servers an Servicegruppen mit der CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

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

Beispiel:

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

Angeben von Namensservern während der Bindung eines Servers an Servicegruppen mit der GUI

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

  2. Wählen Sie auf der Seite Dienstgruppen die von Ihnen erstellte Dienstgruppe aus, und klicken Sie auf Bearbeiten.

  3. Klicken Sie auf der Seite Lastausgleichsdienstgruppen 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 unter Name Serverden Nameserver-Namen an, an den die Abfrage für gebundene Domäne gesendet werden muss.