Citrix ADC

负载平衡远程桌面协议 (RDP) 服务器

远程桌面协议 (RDP) 是一种支持多通道的协议,允许单独的虚拟通道用于传输演示数据、串行设备通信、许可信息、高度加密的数据(键盘和鼠标活动)等。

RDP 用于向网络上的另一台计算机提供图形用户界面。RDP 与 Windows 端点服务器一起使用,提供快速访问,即使在低带宽连接上也能实时传输鼠标移动和按键。

当部署多个端点服务器以提供远程桌面服务时,Citrix ADC 设备提供端点服务器的负载平衡(Windows 2003 和 2008 年服务器企业版)。在某些情况下,远程访问应用程序的用户可能希望使应用程序在远程计算机上运行,但关闭本地计算机。因此,用户在不注销远程应用程序的情况下关闭本地应用程序。重新连接到远程计算机后,用户应该能够继续使用远程应用程序。若要提供此功能,Citrix ADC RDP 实现支持由端点服务会话目录或 Broker 设置的路由令牌 (cookie),以便客户端可以重新连接到之前连接到的同一端点服务器。在 Windows 2003 端点服务器上实现的会话目录被称为 Windows 2008 端点服务器上的代理。

当客户端和负载平衡虚拟服务器之间建立 TCP 连接时,Citrix ADC 应用指定的负载平衡方法并将请求转发到其中一个端点服务器。端点服务器检查会话目录,以确定客户端是否具有在域中任何其他端点服务器上运行的会话。

如果任何其他端点服务器上没有活动会话, 端点服务器响应通过提供客户端请求, 和 Citrix ADC 设备将响应转发到客户端.

如果任何其他端点服务器上存在活动会话,接收请求的端点服务器会插入一个 cookie(称为路由令牌),其中包含活动会话的详细信息,并将数据包返回到 Citrix ADC 设备,从而将数据包返回到客户端。服务器关闭与客户端的连接。当客户端重新尝试连接时,Citrix ADC 读取 cookie 信息并将数据包转发到客户端具有活动会话的端点服务器。

客户端计算机上的用户会遇到服务的延续,无需执行任何特定操作。

注意:Windows 会话目录功能需要首次使用 Windows XP 发布的远程桌面客户端。如果与 Windows 2000 或 Windows NT 4.0 端点服务器客户端的会话断开连接并客户端重新连接,则负载平衡算法选择与其建立连接的服务器。

下图描述了 RDP 负载平衡。

图 1. RDP 的负载平衡拓扑

rdp-topology

注意

  • 配置 RDP 服务后,将通过使用路由令牌自动维护持久性。您不需要明确启用持久性。
  • Citrix ADC 设备仅支持基于 IP 的 Cookie。
  • 只支持用于监视 Windows 2000 和 Windows 2008 服务器的 Nsrdp.pl 脚本。在 Windows 2012 年服务器和更高版本上不支持 nsrdp.pl 脚本。

确保已断开连接的 RDP 会话在后端的端点服务器上清除,以避免在两个端点服务器之间拍照时 RDP 会话断开而不注销. 有关详细信息,请参阅https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc758177(v=ws.10)#BKMK_2

默认情况下,当您添加 RDP 服务时,Citrix ADC 会添加 TCP 类型的监视器并将其绑定到服务。默认监视器是一个简单的 TCP 监视器,用于检查为 RDP 服务指定的服务器上的 3389 端口是否存在侦听进程。如果在 3389 处存在侦听过程,Citrix ADC 将此服务标记为 UP,如果没有监听过程,则将该服务标记为“关闭”。

为了更有效地监视 RDP 服务,除了默认监视器之外,还可以配置用于 RDP 协议的脚本监视器。配置脚本监视器时,Citrix ADC 会打开到指定服务器的 TCP 连接并发送 RDP 数据包。只有在收到来自物理服务器的连接确认时,监视器才会将服务标记为 UP。因此,从脚本监视器中,Citrix ADC 可以知道 RDP 服务是否已准备好为请求提供服务。

监视器是用户类型的监视器,脚本位于 Citrix ADC 上,位于 /nsconfig/monitors/nsrdp.pl 下。配置用户监视器时,Citrix ADC 会自动运行脚本。要配置脚本监视器,请添加监视器并将其绑定到 RDP 服务。

要配置 RDP 负载平衡,请创建 RDP 类型的服务并将它们绑定到 RDP 虚拟服务器。

使用命令行界面配置 RDP 负载平衡服务

在命令提示符下,键入以下命令以配置 RDP 负载平衡设置并验证配置:

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

注意:重复上述命令以添加更多服务。

示例


> 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

使用配置实用程序配置 RDP 负载平衡服务

导航到流量管理 > 负载平衡 > 服务,然后创建 RDP 类型的服务。

使用命令行界面配置 RDP 负载平衡虚拟服务器

在命令提示符下,键入以下命令以配置 RDP 负载平衡虚拟服务器并验证配置:

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.

示例:

此示例有两个 RDP 服务绑定到 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

使用配置实用程序配置 RDP 负载平衡虚拟服务器

导航到流量管理 > 负载平衡 > 虚拟服务器,创建 RDP 类型的虚拟服务器,并将 RDP 服务绑定到此虚拟服务器。

使用命令行界面配置 RDP 服务的脚本监视器

在命令提示符下,键入以下命令:

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

bind lb monitor <monitorName> <rdpServiceName>

示例:

add service ser1 10.102.27.182 RDP 3389

add lb monitor RDP_MON USER -scriptName nsrdp.pl

bind lb monitor RDP_MON ser1

使用配置实用程序配置 RDP 服务的脚本监视器

  1. 导航到流量管理 > 负载平衡 > 监视器,然后创建 USER 类型的监视器。
  2. 在“特殊参数”中的“脚本名称”列表中,选择 nsrdp.pl,然后将此监视器绑定到 RDP 服务。