Windows 2008 R2 Remote Desktop新功能系列之一 —— VDI (3)
在Windows 2008 R2 RDS中,RD连接代理服务器是其核心,也是VDI架构的中心组件,没有RD连接代理,就无法构建VDI。今天我们将对RD连接代理服务器在VDI中起的作用和如何工作的所进一步讨论。
正如以下这副架构图所示,RD连接代理服务器如同VDI架构的“大脑”,用来跟踪用户的个人桌面或是虚拟桌面池连接,决定用户连接的类型,最终找到匹配用户请求的终端返回给用户。
RD连接代理服务器并不需要考虑客户端是以何种方式进行连接的,客户端可以使用远程桌面连接,用通过Remote Web Access发布或通过msi发布安装在在客户端的RemoteApp连接。
另外,RD连接代理服务器可以同时跟踪多台RD虚拟主机,以及RD虚拟主机上的虚拟机,对于RD连接代理服务器来说,它也并不需要关心最终需要连接的虚拟机位于哪台RD虚拟主机上。
用户连接VDI的第一步是要发现所需要连接的虚拟机,为了允许用户通过VDI连接虚拟机,管理员首先需要为用户分配个人桌面或者是虚拟池。如果分配的是个人桌面,在活动目录的用户属性中会记录相应被分配的个人桌面是哪台。个人桌面或者虚拟池会根据用户权限,在用户登录登录RD Web Access 页面时显示相应列表,供用户连接。
当一个用户登录RD Web Access 页面时,首先需要提供其账号信息。RD连接代理服务器上的Central Publishing服务,即RemoteApp and Desktop Connection Management
Service(在TScPubRPC.dll中实现),首先会拿着该用户的账号信息在活动目录里进行查询,判断该用户被分配何种连接资源,比如是否是个人桌面?是否有RemoteApp?查询完成后返回给用户显示。
大致流程图如下图所示:
第二步就是代理连接的过程,当用户选择连接一个个人桌面或者虚拟池的时候,RD连接代理服务器负责帮助用户找到最合适的资源,实现这一强大功能需要一些组件的支持。RD连接代理主要有两个资源组件负责分配虚拟机资源,会话组件和VM组件。
会话组件用于RDS服务器连接,VM组件用于连接个人桌面或虚拟池。VM组件在各个可用RD虚拟主机上分发VM请求,用轮循的方式向RD虚拟主机发送请求。各个组件中会有其相应逻辑,比如VM组件中的机器逻辑部分的Orchestration的意思是唤醒在关机状态的虚拟机的过程。这一步具体过程是靠RD连接代理服务器的Central Publishing服务和RD虚拟主机上的VMHostAgent合作完成的。
最后,RD连接代理的资源组件在注册表中的存放位置如下:
HKLM/System/CurrentControlSet/Services/Tssdis/Parameters/Resource
比如VM资源组件如下图所示: