ADC

Équilibrer la charge des serveurs de protocole Bureau à distance

Le protocole RDP (Remote Desktop Protocol) est un protocole compatible multicanal qui permet de disposer de canaux virtuels distincts pour transporter des données de présentation, des communications de périphérique série, des informations de licence, des données hautement cryptées (activité du clavier et de la souris), etc.

Le protocole RDP est utilisé pour fournir une interface graphique à un autre ordinateur du réseau. Le protocole RDP est utilisé avec les serveurs de terminaux Windows pour fournir un accès rapide avec une transmission quasi en temps réel des mouvements de la souris et des pressions de touches, même sur des connexions à faible bande passante.

Lorsque plusieurs serveurs de terminaux sont déployés pour fournir des services de bureau à distance, l’appliance NetScaler assure l’équilibrage de charge des serveurs de terminaux (Windows 2003 et 2008 Server Enterprise Editions). Parfois, un utilisateur qui accède à distance à une application peut souhaiter laisser l’application s’exécuter sur l’ordinateur distant tout en arrêtant l’ordinateur local. L’utilisateur ferme donc l’application locale sans se déconnecter de l’application distante. Une fois reconnecté à la machine distante, l’utilisateur doit pouvoir continuer avec l’application distante. Pour fournir cette fonctionnalité, l’implémentation de NetScaler RDP respecte le jeton de routage (cookie) défini par le répertoire de sessions ou le courtier des services Terminal afin que le client puisse se reconnecter au même serveur de terminal auquel il était connecté précédemment. Le répertoire de sessions, implémenté sur Windows 2003 Terminal Server, est appelé Broker sur Windows 2008 Terminal Server.

Lorsqu’une connexion TCP est établie entre le client et le serveur virtuel d’équilibrage de charge, NetScaler applique la méthode d’équilibrage de charge spécifiée et transmet la demande à l’un des serveurs de terminaux. Le serveur terminal vérifie le répertoire des sessions pour déterminer si le client possède une session en cours d’exécution sur un autre serveur terminal du domaine.

S’il n’y a aucune session active sur un autre serveur de terminal, le serveur de terminaux répond en répondant à la demande du client et l’appliance NetScaler transmet la réponse au client.

S’il existe une session active sur un autre serveur terminal, le serveur terminal qui reçoit la demande insère un cookie (appelé jeton de routage) contenant les détails de la session active et renvoie les paquets à l’appliance NetScaler, qui renvoie le paquet au client. Le serveur ferme la connexion avec le client. Lorsque le client essaie à nouveau de se connecter, NetScaler lit les informations du cookie et transmet le paquet au serveur terminal sur lequel le client a une session active.

Sur la machine cliente, l’utilisateur bénéficie d’une continuité du service et n’a aucune action spécifique à effectuer.

Remarque : La fonctionnalité Windows Session Directory nécessite le client Remote Desktop initialement publié avec Windows XP. Si une session avec un client Terminal Server Windows 2000 ou Windows NT 4.0 est déconnectée et que le client se reconnecte, le serveur avec lequel la connexion est établie est sélectionné par l’algorithme d’équilibrage de charge.

Le schéma suivant décrit l’équilibrage de charge RDP.

Figure 1. Topologie d’équilibrage de charge pour RDP

Topologie RDP

Remarque

  • Lorsqu’un service RDP est configuré, la persistance est automatiquement maintenue à l’aide d’un jeton de routage. Il n’est pas nécessaire d’activer la persistance de manière explicite.
  • L’appliance NetScaler prend uniquement en charge les cookies basés sur IP.
  • Le script nsrdp.pl n’est pris en charge sur aucune version actuelle des serveurs Windows.

Assurez-vous que les sessions RDP déconnectées sont effacées sur les serveurs terminaux situés en arrière-plan afin d’éviter tout basculement entre deux serveurs terminal lorsqu’une session RDP est déconnectée sans déconnexion. Pour plus d’informations, consultez https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc758177(v=ws.10)#BKMK_2

Lorsque vous ajoutez un service RDP, NetScaler ajoute par défaut un moniteur de type TCP et le lie au service. Le moniteur par défaut est un simple moniteur TCP qui vérifie si un processus d’écoute existe sur le port 3389 du serveur spécifié pour le service RDP. S’il existe un processus d’écoute à 3389, NetScaler marque ce service comme étant ACTIF et s’il n’y a pas de processus d’écoute, il le marque comme étant HORS SERVICE.

Pour une surveillance plus efficace d’un service RDP, en plus du moniteur par défaut, vous pouvez configurer un moniteur de script destiné au protocole RDP. Lorsque vous configurez le moniteur de script, NetScaler ouvre une connexion TCP vers le serveur spécifié et envoie un paquet RDP. Le moniteur marque le service comme étant actif uniquement s’il reçoit une confirmation de la connexion du serveur physique. Par conséquent, à partir du moniteur de script, NetScaler peut savoir si le service RDP est prêt à traiter une demande.

Le moniteur est un moniteur de type utilisateur et le script se trouve sur NetScaler à l’adresse /nsconfig/monitors/nsrdp.pl. Lorsque vous configurez le moniteur utilisateur, NetScaler exécute le script automatiquement. Pour configurer le moniteur de script, ajoutez-le et liez-le au service RDP.

Pour configurer l’équilibrage de charge RDP, créez des services de type RDP et liez-les à un serveur virtuel RDP.

Pour configurer les services d’équilibrage de charge RDP à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour configurer une configuration d’équilibrage de charge RDP et vérifier la configuration :

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

Remarque : Répétez la commande précédente pour ajouter d’autres services.

Exemple


> 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-->

Pour configurer les services d’équilibrage de charge RDP à l’aide de l’utilitaire de configuration

Accédez à Gestion du trafic > Équilibrage de charge > Services, puis créez des services de type RDP.

Pour configurer un serveur virtuel d’équilibrage de charge RDP à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour configurer un serveur virtuel d’équilibrage de charge RDP et vérifier la configuration :

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-->

Exemple :

Cet exemple comporte deux services RDP liés au serveur virtuel RDP.


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-->

Pour configurer un serveur virtuel d’équilibrage de charge RDP à l’aide de l’utilitaire de configuration

Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels, créez un serveur virtuel de type RDP et liez les services RDP à ce serveur virtuel.

Pour configurer un moniteur de script pour les services RDP à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes :

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

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

Exemple :

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-->

Pour configurer un moniteur de script pour les services RDP à l’aide de l’utilitaire de configuration

  1. Accédez à Gestion du trafic > Équilibrage de charge > Moniteurs, puis créez un moniteur de type USER.
  2. Dans Paramètres spéciaux, dans la liste Nom du script, sélectionnez nsrdp.pl, puis liez ce moniteur à un service RDP.