VDA端口与HA:Agent中相关Service运行机制

在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)不处于监听状态。

  1. 在用户第一次去访问Web Interface的时候,Web Interface会去DDC枚举桌面,DDC会去检查VDA的状态,这个不是今天的重点,所以图中没有标明。而下一步,WI完成了虚拟桌面的枚举以后,会显示给用户(图示步骤1)
  2. 在XD5中,最开始是灰色状态,如果只有一个桌面,或者用户点击了虚拟桌面,首先WI会去DDC检查VDA的状态(图示中步骤2)
  3. 如果桌面不可用,那么会返回错误提示信息,如果正常,那么会变成蓝色Active状态(图示步骤3),在DDC检查VDA状态时,DDC会发送IConfigure消息给VDA,同时会发送ILaunch消息,此时VDA的1494和2598端口就会处于LISTENING状态,此时DDC也会通知WI,桌面可用。
  4. 此时,用户启动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,例如用户断开桌面等等)。

  1. VDA会定期报告本机给DDC本身的状态(DataSink),如果在一定时间(时间大概同VDA的IRegistrar的时间,为5分钟)发现无法与DDC通信,那么Citrix Desktop Services会报告无法与DDC注册,此时会出现注册失败。(图示步骤I)
  2. VDA会在大概一分钟左右(实际测试为45秒)再次尝试与DDC注册(图示步骤2),如果仍然无法注册,那么会检查VDA是否开启HA模式
  3. 此时VDA会去检查注册表HighAvailability键值,如果开启,那么将会检查是否存在HaRegistrarTimeout键值,如果该键值不存在,那么取默认值300秒,如果存在,取当前设置值。
  4. VDA会等待HaRegistrarTimeout时间,然后启动1494和2598端口,此时终端用户可以通过特殊生成的ICA文件连接VDA了(图示步骤III)

可见,只有在用户需要连接,或者VDA认为用户需要连接的时候,才会去启用这两个端口,其他时间会关闭这些端口。

注意:在VDA开启HA的时候,从DDC全挂,到用户桌面可用,可能需要1~6分钟左右,或者更长的等待时间,计算方法请参考通信过程。

配置VDA的HA:

1、设置注册表

2、生成ICA文件,修改对应内容即可,需要手动修改