Équilibrer la charge de serveurs RDP (Remote Desktop Protocol)

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.

RDP est utilisé pour fournir une interface utilisateur graphique à un autre ordinateur du réseau. RDP est utilisé avec les serveurs Terminal Server Windows pour fournir un accès rapide avec transmission presque en temps réel des mouvements de souris et des touches pressées même sur des connexions à faible bande passante.

Lorsque plusieurs serveurs Terminal Server sont déployés pour fournir des services Bureau à distance, l’appliance Citrix ADC assure l’équilibrage de charge des serveurs Terminal Server (Windows 2003 et 2008 Server Enterprise Editions). Dans certains cas, un utilisateur qui accède à une application à distance peut vouloir laisser l’application en cours d’exécution sur la machine distante mais arrêter la machine locale. L’utilisateur ferme donc l’application locale sans se déconnecter de l’application distante. Après la reconnexion à la machine distante, l’utilisateur doit pouvoir continuer avec l’application distante. Pour fournir cette fonctionnalité, l’implémentation Citrix ADC RDP respecte le jeton de routage (cookie) défini par le répertoire de session des services Terminal Server ou Broker afin que le client puisse se reconnecter au même serveur Terminal Server auquel il était précédemment connecté. Le répertoire de session, 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, Citrix ADC applique la méthode d’équilibrage de charge spécifiée et transfère la demande à l’un des serveurs Terminal Server. Le serveur Terminal Server vérifie le répertoire de session pour déterminer si le client dispose d’une session exécutée sur un autre serveur Terminal Server du domaine.

S’il n’y a pas de session active sur un autre serveur Terminal Server, le serveur Terminal Server répond en servant la demande client et l’appliance Citrix ADC transmet la réponse au client.

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

L’utilisateur sur la machine cliente subit une continuation du service et n’a pas à prendre d’action spécifique.

Remarque : La fonctionnalité Répertoire de sessions Windows nécessite le client Bureau à distance qui a été publié pour la première fois 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 diagramme suivant décrit l’équilibrage de charge RDP.

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

rdp-topology

Remarque

  • Lorsqu’un service RDP est configuré, la persistance est automatiquement maintenue à l’aide d’un jeton de routage. Vous n’avez pas besoin d’activer explicitement la persistance.
  • L’appliance Citrix ADC prend uniquement en charge les cookies IP.
  • Le script nsrdp.pl est pris en charge uniquement pour la surveillance des serveurs Windows 2000 et Windows 2008. Le script nsrdp.pl n’est pas pris en charge sur les serveurs Windows 2012 et versions ultérieures.

Assurez-vous que les sessions RDP déconnectées sont effacées sur les serveurs Terminal Server au backend afin d’éviter les battements entre deux serveurs Terminal Server lorsqu’une session RDP est déconnectée sans se déconnecter. Pour de plus amples 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, par défaut, Citrix ADC ajoute un moniteur du 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 ou non sur le port 3389 sur le serveur spécifié pour le service RDP. S’il y a un processus d’écoute à 3389, Citrix ADC marque ce service comme UP et s’il n’y a pas de processus d’écoute, il marque le service comme DOWN.

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, le Citrix ADC ouvre une connexion TCP au serveur spécifié et envoie un paquet RDP. Le moniteur marque le service comme UP uniquement s’il reçoit une confirmation de la connexion du serveur physique. Par conséquent, à partir du moniteur de script, Citrix ADC 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 Citrix ADC à l’adresse /nsconfig/monitors/nsrdp.pl. Lorsque vous configurez le moniteur utilisateur, le Citrix ADC exécute le script automatiquement. Pour configurer le moniteur de script, ajoutez le moniteur 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>

Remarque : Répétez la commande ci-dessus 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

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

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

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>

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

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