Load Balancing Remote Desktop Protocol (RDP) -Server

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 dient zur Bereitstellung einer grafischen Benutzeroberfläche für einen anderen Computer im Netzwerk. RDP wird mit Windows-Terminalservern verwendet, um schnellen Zugriff mit fast Echtzeitübertragung von Mausbewegungen und Tastendrucken auch über Verbindungen mit geringer Bandbreite zu ermöglichen.

Wenn mehrere Terminalserver bereitgestellt werden, um Remotedesktopdienste bereitzustellen, bietet die Citrix ADC Appliance den Lastenausgleich der Terminalserver (Windows 2003 und 2008 Server Enterprise Editions). In einigen Fällen möchte ein Benutzer, der remote auf eine Anwendung zugreift, die Anwendung möglicherweise auf dem Remotecomputer laufen lassen, aber den lokalen Computer herunterfahren. Der Benutzer schließt daher die lokale Anwendung, ohne sich von der Remote-Anwendung abzumelden. Nach der erneuten Verbindung mit dem Remotecomputer sollte der Benutzer mit der Remoteanwendung fortfahren können. Um diese Funktionalität bereitzustellen, berücksichtigt die Citrix ADC 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 auf Windows 2003-Terminalserver implementierte Sitzungsverzeichnis wird als Broker auf Windows 2008-Terminalserver bezeichnet.

Wenn eine TCP-Verbindung zwischen dem Client und dem virtuellen Lastausgleichsserver hergestellt wird, wendet Citrix ADC die angegebene Lastausgleichsmethode an und leitet die Anforderung 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 ausgeführt hat.

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

Wenn auf einem anderen Terminalserver eine aktive Sitzung vorhanden ist, fügt der Terminalserver, der die Anforderung empfängt, ein Cookie (als Routingtoken bezeichnet) mit den Details der aktiven Sitzung ein und gibt die Pakete an die Citrix ADC 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 Citrix ADC die Cookie-Informationen und leitet das Paket an den Terminalserver weiter, auf dem der Client eine aktive Sitzung hat.

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

Hinweis: Für das Windows-Sitzungsverzeichnisfeature ist der Remotedesktopclient erforderlich, der zuerst mit Windows XP veröffentlicht wurde. Wenn eine Sitzung mit einem Windows 2000- oder Windows NT 4.0-Terminalserver-Client getrennt wird und der Client wieder eine Verbindung herstellt, wird der Server, mit dem die Verbindung hergestellt wird, durch den Lastausgleichsalgorithmus 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 mit einem Routingtoken verwaltet. Sie müssen die Persistenz nicht explizit aktivieren.
  • Die Citrix ADC Appliance unterstützt nur IP-basierte Cookies.
  • Das Skript nsrdp.pl wird nur für die Überwachung von Windows 2000- und Windows 2008-Servern unterstützt. Das Skript nsrdp.pl wird auf Windows 2012-Servern und höher nicht unterstützt.

Stellen Sie sicher, dass die getrennten RDP-Sitzungen auf den Terminalservern im Backend gelöscht werden, um ein Flattern zwischen zwei Terminalservern zu vermeiden, 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 Citrix ADC standardmäßig einen Monitor vom Typ TCP hinzu und bindet ihn an den Dienst. Der Standardmonitor ist ein einfacher TCP-Monitor, der prüft, ob am 3389-Port auf dem für den RDP-Dienst angegebenen Server ein Listening-Prozess vorhanden ist oder nicht. Wenn ein Listing-Prozess bei 3389 vorhanden ist, markiert Citrix ADC diesen Dienst als UP, und wenn kein Listing-Prozess vorhanden ist, markiert er den Dienst als DOWN.

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 Skriptmonitor konfigurieren, öffnet Citrix ADC eine TCP-Verbindung zum angegebenen Server und sendet ein RDP-Paket. Der Monitor markiert den Dienst nur dann als UP, wenn er eine Bestätigung der Verbindung vom physischen Server erhält. Aus diesem Grund kann Citrix ADC vom Skriptmonitor aus wissen, ob der RDP-Dienst bereit ist, eine Anforderung zu bedienen.

Der Monitor ist ein Benutzermonitor, und das Skript befindet sich im Citrix ADC unter /nsconfig/monitors/nsrdp.pl. Wenn Sie den Benutzermonitor konfigurieren, führt Citrix ADC das Skript automatisch aus. Um den Skriptmonitor zu konfigurieren, fügen Sie den Monitor hinzu und binden ihn an den RDP-Dienst.

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

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

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

add service <name>@ <serverName> <serviceType> <port>

Hinweis: Wiederholen Sie den obigen 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

So konfigurieren Sie RDP-Load Balancing-Dienste mit dem Konfigurationsdienstprogramm

Navigieren Sie zu Traffic Management > Load Balancing > Services, und erstellen Sie Services vom Typ RDP.

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

Geben Sie an der Eingabeaufforderung 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.

Beispiel:

Dieses Beispiel verfügt über zwei RDP-Dienste, die an den virtuellen RDP-Server gebunden sind.


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

So konfigurieren Sie einen virtuellen RDP-Lastausgleichsserver mit dem Konfigurationsdienstprogramm

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 mit der Befehlszeilenschnittstelle

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein:

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

bind lb monitor <monitorName> <rdpServiceName>

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

So konfigurieren Sie einen Skriptmonitor für RDP-Dienste mit dem Konfigurationsdienstprogramm

  1. Navigieren Sie zu Traffic Management > Load Balancing > Monitore, und 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.