ADC

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

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

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

当部署多个终端服务器以提供远程桌面服务时,NetScaler 设备提供终端服务器的负载平衡(Windows 2003 和 2008 服务器企业版)。有时,远程访问应用程序的用户可能希望让应用程序在远程计算机上运行,但关闭本地计算机。因此,用户在不注销远程应用程序的情况下关闭本地应用程序。重新连接到远程计算机后,用户必须能够继续使用远程应用程序。为了提供此功能,NetScaler RDP 实现遵循终端服务会话目录或代理设置的路由标记 (cookie),以便客户端可以重新连接到之前连接的同一终端服务器。在 Windows 2003 终端服务器上实现的会话目录在 Windows 2008 终端服务器上被称为代理。

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

如果任何其他终端服务器上没有活动会话,则终端服务器通过提供客户端请求进行响应,NetScaler 设备将响应转发给客户端。

如果任何其他终端服务器上有活动会话,则接收请求的终端服务器会插入一个包含活动会话详细信息的 cookie(称为路由标记),并将数据包返回给 NetScaler 设备,后者将数据包返回给客户端。服务器关闭与客户端的连接。当客户端重试连接时,NetScaler 会读取 cookie 信息并将数据包转发到客户端有活动会话的终端服务器。

客户机上的用户可以继续使用服务,无需采取任何特定操作。

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

下图描述了 RDP 负载平衡。

图 1. RDP 的负载平衡拓扑

RDP 拓扑

注意

  • 配置 RDP 服务后,使用路由令牌自动维护持久性。您无需明确启用持久性。
  • NetScaler 设备仅支持基于 IP 的 cookie。
  • 任何当前版本的 Windows 服务器都不支持 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 服务时,默认情况下,NetScaler 会添加 TCP 类型的监视器并将其绑定到该服务。默认监视器是一个简单的 TCP 监视器,用于检查为 RDP 服务指定的服务器上的 3389 端口上是否存在监听进程。如果在 3389 处有监听进程,NetScaler 将此服务标记为 UP,如果没有监听进程,则将该服务标记为 DOWN。

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

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

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

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

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

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

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

示例


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

使用配置实用程序配置 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.
<!--NeedCopy-->

示例:

此示例将两个 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
<!--NeedCopy-->

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

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

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

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

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

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

示例:

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

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

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