ADC

Load Balance-Remotedesktopprotokollserver

Remote Desktop Protocol (RDP) ist ein mehrkanalfähiges Protokoll, das separate virtuelle Kanäle für Präsentationsdaten, serielle Gerätekommunikation, Lizenzierungsinformationen, hochverschlüsselte Daten (Tastatur- und Mausaktivität) usw. ermöglicht.

RDP wird verwendet, um einem anderen Computer im Netzwerk eine GUI zur Verfügung zu stellen. RDP wird mit Windows-Terminalservern verwendet, um einen schnellen Zugriff mit nahezu Echtzeitübertragung von Mausbewegungen und Tastendrücken auch über Verbindungen mit geringer Bandbreite zu ermöglichen.

Wenn mehrere Terminalserver bereitgestellt werden, um Remote-Desktop-Dienste bereitzustellen, sorgt die NetScaler-Appliance für den Lastenausgleich der Terminalserver (Windows 2003 und 2008 Server Enterprise Editions). Manchmal möchte ein Benutzer, der remote auf eine Anwendung zugreift, die Anwendung auf dem Remote-Computer laufen lassen, aber den lokalen Computer herunterfahren. Der Benutzer schließt daher die lokale Anwendung, ohne sich von der Remote-Anwendung abzumelden. Nach dem erneuten Verbinden mit dem Remote-Computer muss der Benutzer in der Lage sein, mit der Remote-Anwendung fortzufahren. Um diese Funktionalität bereitzustellen, berücksichtigt die NetScaler RDP-Implementierung das Routingtoken (Cookie), das vom Terminaldienstes-Sitzungsverzeichnis oder Broker festgelegt wurde, so dass der Client wieder eine Verbindung zu demselben Terminalserver herstellen kann, mit dem er zuvor verbunden war. Das Sitzungsverzeichnis, das auf dem Windows 2003 Terminal Server implementiert ist, wird auf dem Windows 2008 Terminal Server als Broker bezeichnet.

Wenn eine TCP-Verbindung zwischen dem Client und dem virtuellen Load-Balancing-Server hergestellt wird, wendet der NetScaler die angegebene Lastausgleichsmethode an und leitet die Anfrage an einen der Terminalserver weiter. Der Terminalserver überprüft das Sitzungsverzeichnis, um festzustellen, ob der Client eine Sitzung auf einem anderen Terminalserver in der Domäne ausführt.

Wenn auf einem anderen Terminalserver keine aktive Sitzung vorhanden ist, antwortet der Terminalserver mit der Clientanforderung, und die NetScaler Appliance leitet die Antwort an den Client weiter.

Wenn auf einem anderen Terminalserver eine aktive Sitzung stattfindet, fügt der Terminalserver, der die Anforderung erhält, ein Cookie (als Routing-Token bezeichnet) mit den Details der aktiven Sitzung ein und gibt die Pakete an die NetScaler Appliance zurück, die das Paket an den Client zurückgibt. Der Server schließt die Verbindung mit dem Client. Wenn der Client erneut versucht, eine Verbindung herzustellen, liest der NetScaler die Cookie-Informationen und leitet das Paket an den Terminalserver weiter, auf dem der Client eine aktive Sitzung hat.

Der Benutzer auf dem Client-Computer erlebt eine Fortsetzung des Dienstes und muss keine spezifischen Maßnahmen ergreifen.

Hinweis: Für die Windows-Sitzungsverzeichnisfunktion ist der Remote Desktop-Client erforderlich, der zuerst mit Windows XP veröffentlicht wurde. Wenn eine Sitzung mit einem Windows 2000- oder Windows NT 4.0-Terminalserver-Client unterbrochen wird und der Client erneut eine Verbindung herstellt, wird der Server, mit dem die Verbindung hergestellt wird, durch den Load-Balancing-Algorithmus ausgewählt.

Das folgende Diagramm beschreibt den RDP-Lastenausgleich.

Abbildung 1. Load-Balancing-Topologie für RDP

RDP-Topologie

Hinweis

  • Wenn ein RDP-Dienst konfiguriert ist, wird die Persistenz automatisch mithilfe eines Routing-Tokens aufrechterhalten. Sie müssen die Persistenz nicht explizit aktivieren.
  • Die NetScaler-Appliance unterstützt nur IP-basierte Cookies.
  • Das nsrdp.pl-Skript wird auf keiner aktuellen Version von Windows-Servern unterstützt.

Stellen Sie sicher, dass die getrennten RDP-Sitzungen auf den Terminalservern im Backend gelöscht werden, um zu verhindern, dass zwischen zwei Terminalservern hin- und herflattern, wenn eine RDP-Sitzung getrennt wird, ohne sich abzumelden. Weitere Informationen finden Sie unter https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc758177(v=ws.10)#BKMK_2.

Wenn Sie einen RDP-Dienst hinzufügen, fügt NetScaler standardmäßig einen Monitor vom Typ TCP hinzu und bindet ihn an den Dienst. Der Standardmonitor ist ein einfacher TCP-Monitor, der überprüft, ob am 3389-Port auf dem für den RDP-Dienst angegebenen Server ein Abhörvorgang stattfindet. Wenn bei 3389 ein Abhörvorgang stattfindet, markiert NetScaler diesen Dienst als AKTIV und wenn kein Abhörvorgang stattfindet, markiert es den Dienst als INAKTIV.

Für eine effizientere Überwachung eines RDP-Dienstes können Sie zusätzlich zum Standardmonitor einen Skriptmonitor konfigurieren, der für das RDP-Protokoll vorgesehen ist. Wenn Sie den Scripting-Monitor konfigurieren, öffnet der NetScaler eine TCP-Verbindung zum angegebenen Server und sendet ein RDP-Paket. Der Monitor markiert den Dienst nur dann als aktiv, wenn er eine Bestätigung der Verbindung vom physischen Server erhält. Daher kann der NetScaler anhand des Scripting-Monitors erkennen, ob der RDP-Dienst bereit ist, eine Anfrage zu bearbeiten.

Der Monitor ist ein benutzerdefinierter Monitor und das Skript befindet sich auf dem NetScaler unter /nsconfig/monitors/nsrdp.pl. Wenn Sie den Benutzermonitor konfigurieren, führt der NetScaler das Skript automatisch aus. Um den Scripting-Monitor zu konfigurieren, fügen Sie den Monitor hinzu und binden Sie ihn an den RDP-Dienst.

Um den RDP-Lastenausgleich zu konfigurieren, erstellen Sie Dienste vom Typ RDP und binden Sie sie an einen virtuellen RDP-Server.

So konfigurieren Sie RDP-Load-Balancing-Dienste mithilfe der Befehlszeilenschnittstelle

Geben Sie an der Befehlszeile die folgenden Befehle ein, um ein RDP-Load-Balancing-Setup zu konfigurieren und die Konfiguration zu überprüfen:

add service <name>@ <serverName> <serviceType> <port>
<!--NeedCopy-->

Hinweis: Wiederholen Sie den vorherigen Befehl, um weitere Dienste hinzuzufügen.

Beispiel


> add service ser1 10.102.27.182 RDP 3389
Done
> add service ser2 10.102.27.183 RDP 3389
Done
>show service ser1
ser1 (10.102. 27.182:3389) - RDP
        State: UP
…
            Server Name: 10.102.27.182
            Server ID : 0           Monitor Threshold : 0
        Down state flush: ENABLED
…
1)      Monitor Name: tcp-default
                State: UP       Weight: 1
…
                Response Time: 4.152 millisec
 Done
<!--NeedCopy-->

So konfigurieren Sie RDP-Load-Balancing-Dienste mithilfe des Konfigurationsprogramms

Navigieren Sie zu Traffic Management > Load Balancing > Servicesund erstellen Sie Dienste vom Typ RDP.

So konfigurieren Sie einen virtuellen RDP-Load-Balancing-Server mithilfe der Befehlszeilenschnittstelle

Geben Sie an der Befehlszeile die folgenden Befehle ein, um einen virtuellen RDP-Load-Balancing-Server zu konfigurieren und die Konfiguration zu überprüfen:

add lb vserver <name>@ <serviceType> <ipAddress> <port>

bind lb vserver <name>@ <serviceName>

Bind all the RDP services to be load balanced to the virtual server.
<!--NeedCopy-->

Beispiel:

In diesem Beispiel sind zwei RDP-Dienste an den virtuellen RDP-Server gebunden.


add lb vs v1 rdP 10.102.27.186 3389
Done

bind lb vs v1 ser1
service "ser1" bound

bind lb vs v1 ser2
service "ser2" bound
Done

sh lb vs v1
v1 (10.102.27.186:3389) - RDP   Type: ADDRESS
State: UP
…
No. of Bound Services :  2 (Total)       2 (Active)
Configured Method: LEASTCONNECTION
  Current Method: Round Robin, Reason: A new service is bound
Mode: IP
Persistence: NONE
  L2Conn: OFF

1) ser1 (10.102.27.182: 3389) - RDPState: UP   Weight: 1
2) ser2 (10.102.27.183: 3389) - RDPState: UP   Weight: 1
Done
<!--NeedCopy-->

So konfigurieren Sie einen virtuellen RDP-Load-Balancing-Server mithilfe des Konfigurationsprogramms

Navigieren Sie zu Traffic Management > Load Balancing > Virtuelle Server, erstellen Sie einen virtuellen Server vom Typ RDP und binden Sie RDP-Dienste an diesen virtuellen Server.

So konfigurieren Sie einen Skriptmonitor für RDP-Dienste mithilfe der Befehlszeilenschnittstelle

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein:

add lb monitor <monitorName> USER -scriptName nsrdp.pl

bind lb monitor <monitorName> <rdpServiceName>
<!--NeedCopy-->

Beispiel:

add service ser1 10.102.27.182 RDP 3389

add lb monitor RDP_MON USER -scriptName nsrdp.pl

bind lb monitor RDP_MON ser1

<!--NeedCopy-->

So konfigurieren Sie einen Skriptmonitor für RDP-Dienste mithilfe des Konfigurationsdienstprogramms

  1. Navigieren Sie zu Traffic Management > Load Balancing > Monitoreund erstellen Sie einen Monitor vom Typ USER.
  2. Wählen Sie unter Spezielle Parameter in der Liste Skriptname die Option nsrdp.pl aus, und binden Sie diesen Monitor dann an einen RDP-Dienst.