Servidores de protocolo de escritorio remoto (RDP) de equilibrio de carga

El protocolo de escritorio remoto (RDP) es un protocolo compatible con múltiples canales que permite canales virtuales separados para transportar datos de presentación, comunicación de dispositivos serie, información de licencias, datos altamente cifrados (actividad de teclado y ratón), etc.

RDP se utiliza para proporcionar una interfaz gráfica de usuario a otro equipo de la red. RDP se utiliza con servidores terminales de Windows para proporcionar un acceso rápido con transmisión casi en tiempo real de movimientos del ratón y pulsaciones de teclas incluso a través de conexiones de bajo ancho de banda.

Cuando se implementan varios servidores Terminal Server para proporcionar servicios de escritorio remoto, el dispositivo Citrix ADC proporciona equilibrio de carga de los servidores Terminal Server (ediciones Windows 2003 y 2008 Server Enterprise). En algunos casos, un usuario que está accediendo a una aplicación de forma remota puede querer dejar la aplicación ejecutándose en el equipo remoto pero apagar la máquina local. Por lo tanto, el usuario cierra la aplicación local sin cerrar la sesión de la aplicación remota. Después de volver a conectarse a la máquina remota, el usuario debería poder continuar con la aplicación remota. Para proporcionar esta funcionalidad, la implementación de Citrix ADC RDP respeta el token de enrutamiento (cookie) establecido por el Directorio de sesión de Servicios de Terminal Server o Broker para que el cliente pueda volver a conectarse al mismo servidor Terminal Server al que estaba conectado anteriormente. El Directorio de sesiones, implementado en Windows 2003 Terminal Server, se conoce como Broker en Windows 2008 Terminal Server.

Cuando se establece una conexión TCP entre el cliente y el servidor virtual de equilibrio de carga, Citrix ADC aplica el método de equilibrio de carga especificado y reenvía la solicitud a uno de los servidores de Terminal Server. El servidor de Terminal Server comprueba el directorio de sesión para determinar si el cliente tiene una sesión ejecutándose en cualquier otro servidor de Terminal Server del dominio.

Si no hay ninguna sesión activa en ningún otro servidor de Terminal Server, el servidor de Terminal Server responde atendiendo la solicitud del cliente y el dispositivo Citrix ADC reenvía la respuesta al cliente.

Si hay una sesión activa en cualquier otro servidor de Terminal Server, el servidor de Terminal Server que recibe la solicitud inserta una cookie (denominada token de enrutamiento) con los detalles de la sesión activa y devuelve los paquetes al dispositivo Citrix ADC, que devuelve el paquete al cliente. El servidor cierra la conexión con el cliente. Cuando el cliente intenta conectarse, Citrix ADC lee la información de la cookie y reenvía el paquete al servidor Terminal Server en el que el cliente tiene una sesión activa.

El usuario en el equipo cliente experimenta una continuación del servicio y no tiene que realizar ninguna acción específica.

Nota: La función Directorio de sesiones de Windows requiere el cliente de Escritorio remoto que se lanzó por primera vez con Windows XP. Si se desconecta una sesión con un cliente Terminal Server de Windows 2000 o Windows NT 4.0 y el cliente se vuelve a conectar, el servidor con el que se establece la conexión se selecciona mediante el algoritmo de equilibrio de carga.

El siguiente diagrama describe el equilibrio de carga de RDP.

Imagen 1. Topología de equilibrio de carga para RDP

rdp-topología

Nota

  • Cuando se configura un servicio RDP, la persistencia se mantiene automáticamente mediante un token de enrutamiento. No es necesario habilitar la persistencia explícitamente.
  • El dispositivo Citrix ADC admite únicamente cookies basadas en IP.
  • La script nsrdp.pl solo se admite para supervisar servidores Windows 2000 y Windows 2008. La script nsrdp.pl no se admite en servidores Windows 2012 y versiones posteriores.

Asegúrese de que las sesiones RDP desconectadas se borran en los servidores de Terminal Server en el backend para evitar la alternancia entre dos servidores de Terminal Server cuando se desconecta una sesión RDP sin cerrar la sesión. Para obtener más información, consulte https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc758177(v=ws.10)#BKMK_2

Cuando agrega un servicio RDP, de forma predeterminada, Citrix ADC agrega un monitor del tipo TCP y lo vincula al servicio. El monitor predeterminado es un monitor TCP simple que comprueba si existe o no un proceso de escucha en el puerto 3389 del servidor especificado para el servicio RDP. Si hay un proceso de escucha en el 3389, Citrix ADC marca este servicio como UP y, si no hay un proceso de escucha, marca el servicio como DOWN.

Para una supervisión más eficiente de un servicio RDP, además del monitor predeterminado, puede configurar un monitor de script diseñado para el protocolo RDP. Al configurar el monitor de scripts, Citrix ADC abre una conexión TCP al servidor especificado y envía un paquete RDP. El monitor marca el servicio como UP solo si recibe una confirmación de la conexión del servidor físico. Por lo tanto, desde el monitor de scripts, Citrix ADC puede saber si el servicio RDP está listo para atender una solicitud.

El monitor es un monitor de tipo usuario y el script se encuentra en Citrix ADC en /nsconfig/monitors/nsrdp.pl. Al configurar el monitor de usuario, Citrix ADC ejecuta el script automáticamente. Para configurar el monitor de scripts, agregue el monitor y vincularlo al servicio RDP.

Para configurar el equilibrio de carga de RDP, cree servicios de tipo RDP y vincularlos a un servidor virtual RDP.

Para configurar los servicios de equilibrio de carga RDP mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba los siguientes comandos para configurar una configuración de equilibrio de carga RDP y verifique la configuración:

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

Nota: Repita el comando anterior para agregar más servicios.

Ejemplo


> 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

Para configurar los servicios de equilibrio de carga RDP mediante la utilidad de configuración

Vaya a Administración del tráfico > Equilibrio de carga > Servicios y cree servicios de tipo RDP.

Para configurar un servidor virtual de equilibrio de carga RDP mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba los siguientes comandos para configurar un servidor virtual de equilibrio de carga RDP y compruebe la configuración:

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.

Ejemplo:

Este ejemplo tiene dos servicios RDP enlazados al servidor virtual 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

Para configurar un servidor virtual de equilibrio de carga RDP mediante la utilidad de configuración

Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales, cree un servidor virtual de tipo RDP y vincule servicios RDP a este servidor virtual.

Para configurar un monitor de scripts para servicios RDP mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba los siguientes comandos:

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

bind lb monitor <monitorName> <rdpServiceName>

Ejemplo:

add service ser1 10.102.27.182 RDP 3389

add lb monitor RDP_MON USER -scriptName nsrdp.pl

bind lb monitor RDP_MON ser1

Para configurar un monitor de scripts para los servicios RDP mediante la utilidad de configuración

  1. Vaya a Administración del tráfico > Equilibrio de carga > Monitores y cree un monitor de tipo USER.
  2. En Parámetros especiales, en la lista Nombre de script, seleccione nsrdp.pl y, a continuación, vincule este monitor a un servicio RDP.