在XenDesktop 4中,一般情况下,1494和2598端口是一直处于LISTENING状态,也可以telnet通,而到了XenDesktop 5,大家如果还是使用telnet这种机制来验证的话,可能就行不通了。以前一直没注意,今天仔细跟踪了下中间的工作机制。
先来看看这张ICS Services的基本工作机制图,图分两部分,一是绿色的正常情况,二是在DDC宕机的情况。
Citrix ICA Services在VDA中负责提供终端设备(endpoint device)连接支持,也就是通俗讲的PortICA主服务。
Citrix CGP Server Services,为终端提供会话可靠性机制,也就是会话保持。
以上两个服务对应的监听端口为1494和2598.
正常情况下:
默认情况下,VDA的1494和2598端口(也就是ICA Services和CGP Services)不处于监听状态。
- 在用户第一次去访问Web Interface的时候,Web Interface会去DDC枚举桌面,DDC会去检查VDA的状态,这个不是今天的重点,所以图中没有标明。而下一步,WI完成了虚拟桌面的枚举以后,会显示给用户(图示步骤1)
- 在XD5中,最开始是灰色状态,如果只有一个桌面,或者用户点击了虚拟桌面,首先WI会去DDC检查VDA的状态(图示中步骤2)
- 如果桌面不可用,那么会返回错误提示信息,如果正常,那么会变成蓝色Active状态(图示步骤3),在DDC检查VDA状态时,DDC会发送IConfigure消息给VDA,同时会发送ILaunch消息,此时VDA的1494和2598端口就会处于LISTENING状态,此时DDC也会通知WI,桌面可用。
- 此时,用户启动ICA Client连接桌面,也就是图示步骤4,到此1494和2598端口会处于ESTABLISHED状态。
DDC全部无法联系状态:
大家可能在想,ICA Services(1494)和CGP Services(2598)没有DDC来通知开启端口,所以终端无法连接虚拟桌面。
在XenDesktop 5中,如果所有的DDC全部无法联系,Citrix提供了另外一种机制用来确保在没有DDC通知的情况下打开1494和2598端口,来为终端提供连接。关于VDA的HA配置见文章结尾。
如果VDA与所有的DDC都无法通信的情况下,VDA会不断的尝试与DDC通信(正常情况是DDC来检查VDA的状态,时间为5分钟,VDA会周期更新桌面信息到DDC,例如用户断开桌面等等)。
- VDA会定期报告本机给DDC本身的状态(DataSink),如果在一定时间(时间大概同VDA的IRegistrar的时间,为5分钟)发现无法与DDC通信,那么Citrix Desktop Services会报告无法与DDC注册,此时会出现注册失败。(图示步骤I)
- VDA会在大概一分钟左右(实际测试为45秒)再次尝试与DDC注册(图示步骤2),如果仍然无法注册,那么会检查VDA是否开启HA模式
- 此时VDA会去检查注册表HighAvailability键值,如果开启,那么将会检查是否存在HaRegistrarTimeout键值,如果该键值不存在,那么取默认值300秒,如果存在,取当前设置值。
- VDA会等待HaRegistrarTimeout时间,然后启动1494和2598端口,此时终端用户可以通过特殊生成的ICA文件连接VDA了(图示步骤III)
可见,只有在用户需要连接,或者VDA认为用户需要连接的时候,才会去启用这两个端口,其他时间会关闭这些端口。
注意:在VDA开启HA的时候,从DDC全挂,到用户桌面可用,可能需要1~6分钟左右,或者更长的等待时间,计算方法请参考通信过程。
配置VDA的HA:
1、设置注册表
1 2 3 4 5 | 在HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ VirtualDesktopAgent项目下创建以下两个REG_DWORD键: HighAvailability,设置为1则启用HA模式,设置为0,则关闭 HaRegistrarTimeout,单位秒,在启动HA模式前,等待VDA尝试与DDC注册的时间,默认为300秒 |
2、生成ICA文件,修改对应内容即可,需要手动修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | [Encoding] InputEncoding=UTF8 [ApplicationServers] Desktop= [Desktop] Username=USER_LOGON_NAME_HERE(登录名) Clearpassword=USER_PASSWORD_HERE (登录密码) addConnectionBar=1 Domain=DOMAIN_NAME_HERE (域) Address=DESKTOP_IP_ADDRESS_HERE:1494(虚拟桌面的IP) AutologonAllowed=ON BrowserProtocol=HTTPonTCP CGPAddress=*:2598 TransportDriver=TCP/IP ClientAudio=On DesiredColor=8 DesiredHRES=1024 DesiredVRES=768 DoNotUseDefaultCSL=On FontSmoothingType=0 InitialProgram=#Desktop LPWD=31 Launcher=WI LocHttpBrowserAddress=! |