文章目录

  • 理解Horizon的连接
  • 主要协议和辅助协议
  • 内部连接
  • 外部连接
  • 内部HTML Client访问

理解Horizon的连接

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

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

主要协议和辅助协议

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

内部连接

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

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

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

当对Connection Servers做负载均衡的时候,通常只将初始XML-API协议连接(身份验证、授权和会话管理)进行负载均衡。

而辅助协议则不需要,这是因为辅助协议的连接是直接从Horizon Client连接到Horizon Agent的,所以这些连接是不需要被负载均衡的。

外部连接

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

在UAG上运行以下网关协议:Blast网关协议,PCoIP网关协议,HTTPS 安全隧道。确保这些网关服务在ConnectionServer上是关闭的,因为如果打开会导致协议流量尝试双跳,而这种设置并不支持,会导致连接失败。

这种架构下允许同一个Connection Server即能够通过外部连接访问,也能够通过内部连接访问。

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

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

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

虽然辅助协议会话必须路由到与主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服务器的证书。

当只在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安全网关。

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

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

[译] 理解Horizon的连接相关推荐

  1. 理解oracle中连接和会话

    理解oracle中连接和会话 1.  概念不同:概念不同: 连接是指物理的网络连接. 在已建立的连接上,建立客户端与oracle的会话,以后客户端与oracle的交互都在一个会话环境中进行. 2.   ...

  2. [译] 理解 NPM 5 中的 lock 文件

    本文讲的是[译] 理解 NPM 5 中的 lock 文件, 原文地址:Understanding lock files in NPM 5 原文作者:Jiří Pospíšil 译文出自:掘金翻译计划 ...

  3. logistic回归的一些直观理解(1.连接函数 logit probit)

    logistic回归的一些直观理解(1.连接函数 logit probit) 前面写了一些读书笔记是关于用logit回归做二分类问题后的效果评价,基本上已经可以告一段落.然后打算回过头来整理一下log ...

  4. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现.Http短连接主要用于从服务器读取各种持久化信息 ...

  5. Horizon client连接错面报错:无法建立安全加密链路连接

    一.问题描述 前方人员反馈在Horizon环境中交付桌面前,验证过程中,使用Horizon client登录错误报:无法建立安全加密链路连接,如下图所示: UAG软件版本:3.9 二.分析处理 1.检 ...

  6. 漫画 | 理解了TCP连接的实现以后,客户端的并发也爆发了!

    echo "5000 65000" > /proc/sys/net/ipv4/ip_local_port_range 连接1:192.168.1.101 5000 192.1 ...

  7. [译]理解js中的event loop

    之前看的文,感觉不太完整,于是找了篇详细的文章原文链接.翻译不正确的请指出,重在分享,如果有所收获就更好了. Javascript是如何异步和单线程的?简短的回答是javascript语言是单线程的, ...

  8. [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)

    文章来自:http://www.hoohack.me/2016/02/15/understanding-phps-internal-array-implementation-ch 原文:https:/ ...

  9. [译] 理解编译器 —— 从人类的角度(版本 2)

    原文地址:Understanding Compilers - For Humans (Version 2) 原文作者:Luke Wilson 译文出自:掘金翻译计划 本文永久链接:github.com ...

最新文章

  1. elasticsearch: 权威指南_你还不会Elasticsearch的CUD?
  2. 有没有一种方法可以缓存GitHub凭证来推送提交?
  3. 清华大学计算机系人机交互,喻 纯 - 清华大学 - 《自然人机交互中的智能输入》(47页)-原创力文档...
  4. 用yum安装配置搭建lamp环境--超简单!
  5. CodeForces 448
  6. CakePHP之Model
  7. 设计模式 工厂方法_工厂设计模式–一种有效的方法
  8. python 中locals() 和 globals()
  9. JDK源码(11)-Long、Short
  10. JS学习--Math对象
  11. 轻松获得卡巴斯基KEY
  12. 【Unity3d】移动开发代码优化
  13. idea代码格式化详细总结(快捷键、格式化规则、格式化模板)
  14. 教你将视频作为背景添加到另一段视频中
  15. python曼·惠特尼U检验(Mann-Whitney U Test)
  16. 电脑和开发板如何串口连接
  17. 数据增强_炼丹笔记三:数据增强
  18. ionic android 证书,Ionic 5/Angular Android和iOS 指纹认证
  19. echarts 的初始化
  20. [内附完整源码和文档] 基于Java的个人通讯录管理系统

热门文章

  1. android 白天模式/夜间模式切换
  2. 太厉害了,目前 Redis 可视化工具最全的横向评测
  3. 工业设备如何上云?比如能耗仪表设备、智能设备、生产通用设备(冲压机、机床CNC。。)、新能源设备等
  4. 你还在为找电子书籍而焦虑吗?Ylibrary分布式图书馆将是你解决的完美方案。
  5. excel 第6讲:认识数据透视表
  6. 评价回归模型的一个新指标:CCC系数
  7. djay pro新手使用入门必看:djay pro 基本技巧分享
  8. mysql中Prepare、execute、deallocate的使用方法
  9. java中怎么调用非静态方法有哪些_java中 静态方法和非静态方法的调用
  10. html5降龙十八掌-函数,对象,数组的练习