[译] 理解Horizon的连接

理解Horizon的连接

理解Horizon的连接能够帮助确定最佳架构,能帮助了解流量流向和网络端口,也能帮助进行故障排除。因此我认为能借助于图表来解释Horion的内部和外部连接是如何工作的是非常有价值的。

尽管我是以VMware Horizon 7做为例子,但绝大部分描述对于对于VMware Horizon Cloud同样适用。

主要协议和辅助协议

首先,要理解的是,当Horizon Client 连到Horizon环境时,这里有几个不同的协议被用到了,而一个成功的连接由两个阶段组成的。 连接的第一阶段始终是HTTPS上的XML-API协议,我们把它称之为主要协议, 这个协议提供了身份验证,授权,和会话管理。当身份验证成功之后,进入连接的第二个阶段,这时Horion Client的连接通过一个或多个辅助协议连接到Horizon资源。

[译] 理解Horizon的连接

内部连接

对于内部连接,在初始身份验证阶段,连接是从Horizon Client连接到Connection Server。之后,辅助协议会话通常直接从Horizon Client连接到Horizon Agent。
[译] 理解Horizon的连接

只有在Connection Server上启用了网关或者隧道(Blast安全网关, PCoIP安全网关,或HTTPS安全隧道)时,辅助协议连接才通过Connection Server。但这种配置不太常见,因为协议会话将通过Connection Server网关/隧道,使其成为正在进行的会话的一部分。

在大多数典型的部署中,在Connection Server上唯一使用的网关服务是Blast安全网关,用来处理VMware HTML Access(基于web的客户端)流量。这部分稍后将在做为一个单独的主题进行讨论。

当对Connection Servers做负载均衡的时候,通常只将初始XML-API协议连接(身份验证、授权和会话管理)进行负载均衡。
[译] 理解Horizon的连接
而辅助协议则不需要,这是因为辅助协议的连接是直接从Horizon Client连接到Horizon Agent的,所以这些连接是不需要被负载均衡的。

外部连接

外部连接,通常会通过VMware Unified Access Gateway (以下简称 UAG) 设备进行通信。这种情况下, 连接的初始化阶段是从Horizon Client连接到UAG设备, 再到Connection Server。协议会话连接会从Horizon Client到UAG,然后再到Horizon Agent。

在UAG上运行以下网关协议:Blast网关协议,PCoIP网关协议,HTTPS 安全隧道。确保这些网关服务在ConnectionServer上是关闭的,因为如果打开会导致协议流量尝试双跳,而这种设置并不支持,会导致连接失败。
[译] 理解Horizon的连接
这种架构下允许同一个Connection Server即能够通过外部连接访问,也能够通过内部连接访问。
[译] 理解Horizon的连接

当负载均衡Horizon的访问流量到多个UAG设备的时候,需要对初始的XML-API连接(身份验证,授权和会话管理)进行负载均衡。而Horizon的辅助协议必须确保与初始的XML-API协议被路由到相同的UAG设备上,这样UAG才能够根据被已被授权的用户会话对辅助协议进行授权。

如果辅助协议会话被错误地路由到与主要协议不同的UAG设备上,则该会话将不会被授权。连接也会因此在DMZ中被丢掉, 协议连接也将会失败。如果负载均衡没正确配置,则错误的路由了辅助协议会话就会是一个很常见的错误。

负载均衡器关联必须确保在整个会话期间(默认最长10小时)所建立的XML-API连接继续路由到相同的UAG设备。
[译] 理解Horizon的连接

虽然辅助协议会话必须路由到与主XML-API连接使用的相同的UAG设备,但是可以选择是否通过负载均衡器去路由辅助协议会话。这通常取决于负载均衡器的功能。

例如,使用F5 BIG-IP本地流量管理器(LTM),主协议和辅助协议流量使用F5 LTM做负载均衡。F5可以通过使用source IP affinity 功能确保辅助协议会话的正确路由。它的优点是只需要一个公网IP地址。如果负载均衡器没有此功能,则另一个选项是为每个UAG设备指定额外的公网IP地址,以便辅助协议会话可以绕过负载均衡器。

内部HTML Client访问

当使用HTML Access访问Horizon资源时,应使用web浏览器作为客户端,而无需安装本地Horizon Client。这里一个需要考虑的问题是,浏览器应该信任提供给它的SSL证书。在外部连接中,UAG开启Blast安全网关服务,并将UAG证书提供给浏览器以验证身份。对于内部连接而言,协议会话通常直接从Client连接到Horizon Agent,Agent端必须向浏览器提供一个受信任的证书。这就带来了一些挑战:

  1. 默认情况下,Connection Server优先向Client发送桌面计算机和RDSH服务器的IP地址,而不是主机名,这会导致证书不匹配和不受信任。
  2. 桌面计算机和RDSH服务器必须要有能被浏览器信任的证书装在Client设备上。这种行为通常导致使用通配符证书。

在Connection Server上的一个相关新功能能够帮助克服这些限制并提供了一个更优雅的解决方案。在Horizon Administrator中,您可以把Blast安全网关配置为在只有当本地使用HTML Access时才提供对远程桌面和应用程序的安全访问。

Blast协议流量会话通过Connection Server被路由,并提供它的SSL证书。 这样就不需要去更改Connection Server向桌面计算机或RDSH服务器发送信息的默认方式。这也意味着无需再管理桌面计算机和RDSH服务器的证书。
[译] 理解Horizon的连接
当只在Connection Server上配置了仅在使用HTML Access的时候使用Blast安全网关时,我们能得到以下的行为:

  1. 当在内部访问的用户通过HTML Access连接,Blast连接通过Connection Server的Blast网关。
  2. 当在内部访问的用户用本地Horizon Client时,Blast连接直接连接到远程桌面/应用
  3. 当在外部访问的用户通过HTML Access或者本地Horizon Client连接到UAG时,Blast连接通过UAG的Blast安全网关。这个连接在通过UAG设备访问桌面,这是不会通过Connection Server的Blast安全网关。
    [译] 理解Horizon的连接

大多数使用场景下,网关协议(Blast安全网关,PCoIP安全网关,HTTPS 安全隧道)只运行在UAG上,只有当发生内部的HTML Access连接时才通过Connection Server的Blast安全网关。

译者:张梦雅 (经原作者授权翻译) 转载请注明出处
原作者:Graeme Gordon
原文地址:Understand Horizon Connections