Session Broker(会话代理)在远程桌面服务中承担连接调度与状态记录的角色。用户每次发起RDP连接时,网关或Web访问组件会把请求转交给会话代理,由它查询内部会话目录,决定将流量重定向到哪一台会话主机。如果用户此前已经断开了某个会话,代理会优先把连接送回原主机,让桌面和打开的应用程序继续保留。这个机制直接影响远程桌面服务的可用性和用户体验。

会话代理并不是一台必须独占的物理服务器,它可以运行在专用的连接代理主机上,也可以与远程桌面会话主机或Web访问角色合并部署。小规模环境里,一台服务器同时承担代理、会话主机和许可服务器是常见做法;但当用户规模增长到几十人甚至几百人时,代理组件就需要独立出来,并配合高可用数据库来消除单点故障。
一、会话代理如何维护会话状态与执行重定向
远程桌面会话代理的核心数据来自会话目录。会话目录可以被理解为一张动态映射表,记录着每个用户的活动会话或断开会话目前位于哪一台会话主机上。用户发起连接时,客户端会先连接到连接代理的虚拟名称,而不是直接定位到某台具体的会话主机。连接代理在收到请求后,会查询该用户是否存在可重用的会话记录。如果存在,则返回原会话主机的地址,客户端随即与原主机建立RDP连接;如果不存在,则启动新一轮主机选择流程。
主机选择流程依赖负载均衡信息。每种会话集合会维护一组会话主机,并统计每台主机的当前会话数量、允许的会话上限以及相对权重。默认情况下,会话代理会尽量把新会话分配给会话数最少的主机,同时避开已经达到上限或处于维护模式的主机。管理员还可以给不同配置的服务器设置权重,比如性能较高的主机权重设为200,普通主机设为100,代理会按权重比例分担连接。这个权重机制让异构服务器池也能获得合理分配。
重定向过程使用RDP客户端支持的地址返回机制。一个关键细节是:会话代理并不是把RDP流量中转经过自己,而是把目标主机地址告诉客户端,再由客户端直接连接目标主机。因此,网络规划时必须保证客户端到所有会话主机之间都有可达的RDP端口,否则即使代理返回了正确地址,用户也无法建立桌面会话。
二、部署会话代理需要哪些组件与配置步骤
远程桌面服务的基本部署通常包含连接代理、会话主机和Web访问三个角色。连接代理负责会话目录和调度,会话主机承载用户桌面,Web访问为浏览器用户提供远程桌面入口。如果用户需要从公网访问,还要添加远程桌面网关角色。所有角色可以在部署向导中一次性安装,也可以通过PowerShell命令添加。下面是一段添加RDS相关角色功能的示例:
Import-Module ServerManager Add-WindowsFeature RDS-Connection-Broker,RDS-Web-Access,RDS-Licensing Add-WindowsFeature RDS-RD-Server -IncludeManagementTools
添加角色后,需要创建远程桌面服务部署,把连接代理、会话主机和Web访问服务器关联起来。以下命令展示了如何创建最基本的会话部署,其中broker01.contoso.com、rds01.contoso.com和rdsweb01.contoso.com应替换为实际服务器名称。
Import-Module RemoteDesktop New-RDSessionDeployment -ConnectionBroker "broker01.contoso.com" -SessionHost "rds01.contoso.com" -WebAccessServer "rdsweb01.contoso.com" New-RDSessionCollection -CollectionName "StandardDesktop" -SessionHost "rds01.contoso.com" -CollectionDescription "办公桌面集合" -ConnectionBroker "broker01.contoso.com"
完成部署后,还需要配置客户端访问名称。这个名称是用户在远程桌面客户端中输入的地址,它必须通过DNS解析到连接代理服务器或高可用代理群集的虚拟地址。可以从连接代理服务器上使用Get-RDConnectionBroker查看当前代理状态,使用Get-RDSessionCollection确认集合已经建立。只有会话集合与代理都处于正常运行状态,重定向和负载均衡才会生效。
如果生产环境不允许单点故障,会话代理需要配置高可用。高可用模式要求准备一台独立的SQL Server数据库,用来保存会话目录和配置信息。配置完成后,多个连接代理节点会组成集群,客户端访问名称会指向群集虚拟地址,任何一台代理节点失效都不会中断新连接建立。配置命令类似Set-RDConnectionBrokerHighAvailability,执行时必须提供数据库连接字符串和客户端访问名称。
三、会话保持策略、负载均衡与故障排查
会话保持与会话超时策略密切相关。远程桌面服务允许管理员对会话集合设置多个与断开相关的选项,例如用户断开连接后是继续保持会话还是直接注销、保持多长时间算作活动会话、空闲会话多久自动注销等。这些设置影响会话代理能否把用户重定向回原主机。通常建议对需要长期运行后台任务的用户保持断开会话,而对临时访问场景设置较短的空闲注销时间,避免会话主机积累大量僵尸会话。
负载均衡的检查可以从连接代理的配置和会话主机状态入手。使用PowerShell命令Get-RDSessionHost -CollectionName "StandardDesktop" -ConnectionBroker "broker01.contoso.com"可以查看每台主机的会话数、允许连接数、权重以及是否允许新连接。如果某台主机一直不接收新会话,优先检查它是否被设置为维护模式,或者已经达到最大会话数限制。此外,代理本身有一个诊断日志路径,通常位于C:\Windows\System32\LogFiles\Microsoft\Windows\RemoteDesktopService,当重定向异常时可以查看这里的日志判断是查询失败还是网络返回错误。
常见的故障现象包括用户被随机分配到空主机而不是原会话主机、客户端提示找不到会话集合、高可用代理无法启动连接等。排查时先确认连接代理服务RD Connection Broker是否正在运行,再检查客户端访问名称的DNS记录是否指向正确地址。对于高可用环境,还要检查SQL Server数据库连接和代理群集之间的心跳。很多看似负载均衡的问题,最终根源是代理数据库连接超时或会话目录未能同步,因此运维上要建立对代理服务和数据库状态的例行监控。
会话代理Session Broker远程桌面服务修改时间:2026-09-20 20:32:33