天天看点

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

UAG 及负载均衡配置概述

UAG 全称 Unified Access Gateway,在 Horizon 环境中可以放置在网络边界,隔离来自互联网的 Client (或其他网络区域)和托管在内网的 Horizon 桌面。一个典型的部署架构如下图所示:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

UAG 支持多网卡部署,因此可以很好地适应各种网络拓扑,通常来说 UAG 会为 Horizon 提供两项功能:

  • 认证代理 :用户使用 VDI 时,会将认证请求发送给 UAG ,UAG 将请求转发给后端的 Connection Server 进行处理。
  • VDI 桌面流量的代理(安全网关):和 Connection Server 的安全网关功能类似,开启后用户桌面数据将通过 UAG 集中转发。

一般在生产环境下需要部署多台 UAG 来提供高可用,UAG 自身也支持为多台设备配置浮动 IP 来提供简单的 HA 功能。第一台开启 HA 功能的 UAG 会成为主节点,浮动 IP 托管在主节点上,所有到 UAG 的访问均会先发给主 UAG 节点,主 UAG 节点再做请求的分发。当主节点故障后备节点会进行接管。

以 Blast 协议为例,使用 UAG 原生的高可用功能时,访问流量路径如下图所示:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

使用 NSX ALB 后可以替换 UAG 内置的高可用模块,实现认证流量以及桌面流量的负载均衡,实现更好地访问控制和访问流量可视化。

针对 UAG 的负载均衡,有三种配置方式:

  • 为 UAG 认证流量(及 USB 重定向等流量)配置 L7 负载均衡,为虚拟桌面流量配置 L4 负载均衡。此模式下所有流量均经过 LB,对外只需要一个 VIP 和一个域名;
  • 为 UAG 配置 L4 负载均衡,认证流量以及虚拟桌面流量均通过 LB 进行负载,再转发到后端的 UAG。此模式下所有流量均经过 LB,对外只需要一个 VIP 和一个域名。这种模式下不会做 SSL 卸载,所以开销相比第一种模式小,但可视化功能也相应减少;
  • 为 UAG 配置 N+1 负载均衡,仅为 UAG 认证流量配置 L7 负载均衡,桌面流量不经过 LB,直接发送给相应的 UAG。此模式下每个 UAG 必须有独立的互联网 IP+端口/域名。(注:N 表示 UAG 数量,1 表示一个负载均衡器 VIP)

本文将会演示第一种配置方式。

注意事项

Horizon

下要求,单个用户进行认证的流量,以及通过 CS/UAG 安全网关代理的流量必须转发给相同的 UAG/CS

节点,否则用户访问桌面失败。在后续的负载均衡器配置过程中,我们将会有一些配置来保证用户认证流量和桌面数据始终由相同的 CS/UAG 节点处理。

UAG 部署

下载非 FIPS 的 UAG 介质,将其通过 vCenter 导入集群中:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

此处为了方便使用单网卡设计,管理和面向最终用户使用同样的网卡,生产环境下可以使用多个网卡:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

部署完成后开机,通过 https://<UAG-IP>:9443 访问 UAG 的管理界面,使用部署 ova 时填写的密码登陆:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

UAG 基础配置

点击右侧手动配置下的“选择”:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

点击高级设置下的系统配置,修改uag名称:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

点击“TLS 服务器证书设置”,为 UAG 添加企业证书,此处和 Connection Server 使用同样的证书(证书创建参见​​第一篇内容​​):

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

配置 Edge 服务

点击常规设置中的“Edge 服务设置”,编辑 Horizon 设置:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

连接服务器 URL 中填写 NSX ALB 负载后的 Connection server 的域名;开启“启用 PCOIP”、“启用 Blast”、“启用 UDP 隧道服务器”和“启用隧道”。

如果已经为 UAG 配置了 443/4172/8443 端口的 L4 的负载,则所有外部 URL 都可以写负载后的 VIP 和域名,否则请填写相应 UAG 节点的 IP 和域名。(本文填写的是 UAG 负载均衡后的域名)

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

注意:在填写 Blast 和隧道外部 URL 时,建议使用域名,如果证书中不包含 IP,则用户在通过网页访问时会出现证书告警。

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

依照前三个章节的内容部署其他 UAG 节点。

(可选)配置 Blast 协议复用 443 端口

UAG 支持让 Blast 协议复用 443 端口,在配置 UAG 时,将“Blast 外部 URL”中的端口改为 443 即可。

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

(可选)将 UAG 节点添加到 Connection Server 统一监控

额外地,可以将 UAG 注册到 Connection server 统一监控,在注册时只需填写 UAG 名称即可,版本和 IP 地址会被自动识别。

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

为 UAG 配置负载均衡-方式 1

配置详情及流量路径如下图所示:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

1. 前提配置

与 CS 的配置类似,Horizon 环境中配置 UAG 后,需要将所有 UAG 域名添加为信任。

在 Connection Server 的宿主机找到此目录“VMware\VMware View\Server\sslgateway\conf”,创建或编辑名为 locked.properties 的文件:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

修改后内容如下,保存并重启 Connection Server 生效。

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

2. 将 UAG 添加到 IP 组

第一种配置方式中需要创建两个虚拟服务,后端使用相同的 UAG server 作为 pool,为了保证两个虚拟服务的 pool 成员始终一致,可以借助 IP 组。

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

3. 为 UAG 创建 SSL 配置文件

此处可以复用​​第三篇​​中 Connection Server 的 SSL 配置文件。

4. 创建自定义健康检查策略

此处可以复用​​第三篇​​中 Connection Server 的健康检查策略。

5. 创建 UAG L7 池

在“应用程序>池”中,创建新的池:

默认服务器端口填写 443,负载均衡算法使用“Consistent Hash>Source IP Address”,复用 CS 的主动健康检查配置:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

复用 CS 的 SSL 配置文件:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

服务器成员使用之前创建的 IP 组:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

6. 创建 UAG L4 池

在“应用程序>池”中,创建新的池:

默认服务器端口填写 443,负载均衡算法使用“Consistent Hash>Source IP Address”,复用 CS 的主动健康检查配置:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

此池不需要通过 SSL 和后端服务器通信:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

服务器成员使用之前创建的 IP 组:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

高级选项中需要勾选“禁用端口转换”:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

7. 为 UAG 创建服务器证书

此处使用的是 *.halfcoffee.com 证书,可以和 Connection server 复用,因此不再重复创建证书(详见​​第三篇文章​​)。

8. 为 UAG 创建 L7 虚拟服务

在“应用程序>虚拟服务”中使用高级设置创建新的服务:

指定 VIP,使用系统默认的 System-Secure-HTTP-VDI 应用程序配置文件:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

服务端口配置 80 和 443(SSL),池选择之前创建的 UAG-L7-Pool,复用 Connection server 的 SSL 配置文件和证书:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

其他配置保持不变,点击保存。

9. 为 UAG 创建 L4 虚拟服务

在“应用程序>虚拟服务”中使用高级设置创建新的服务:

在 VIP 地址菜单中点击“切换到高级”:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

勾选上个章节创建的 UAG 服务,应用程序配置文件选择“System-L4-Application”:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

在服务端口菜单中点击“切换到高级”:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

分别添加下列端口:

UDP 443,TCP/UDP 8443 和 TCP/UDP 4172。池选择之前创建的 UAG-L4-Pool:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

其他配置保持不变,点击保存。

10. 访问测试

通过网页访问 UAG 负载均衡后的域名,用户可以正常登陆:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

虚拟桌面访问正常:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

(可选)为 UAG 配置 WAF

在为 UAG 启用 WAF 功能时,需要先将 /ice 起始的路径添加到白名单,并配置下列 Pre-CRS rules:

SecRule REQUEST_METHOD "@streq "phase:1,id:4099822,t:none,nolog,pass,chain"
SecRule REQUEST_URI "@streq "t:none,ctl:requestBodyProcessor=XML"      

注:

第一条 rule 定义请求为 POST 时,执行 chain 动作,将当前规则与下一条规则链起来。

第二条 rule 定义请求路径包含 /broker/xml 时,进行 XML 解析。

@streq :表示进行字符串比较,如果匹配到字符串则返回 true,上述 Rule 定义匹配到访问路径包含 /broker/xml 时,进行 ctl 操作 。

ctl:requestBodyProcessor=XML :匹配到相关的会话时,将请求解析为 XML。

1. 新建 UAG WAF profile

在“模板>WAF”中,创建新的 WAF 配置文件:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

 填写 Profile 名称,其他保持默认不变:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

2. 创建 UAG WAF 策略

在“模板>WAF”中,创建新的 WAF 策略:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

设置 Policy 名称,关联上一步创建的 UAG WAF 配置文件,策略模式根据需求选择检测或者实施:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

 在允许列表中添加新的规则:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

  匹配条件为“开头为 /ice”,操作为继续:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

接着在特征中创建组:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

创建完成后在此组下创建规则:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

在规则框中粘贴下列内容:

SecRule REQUEST_METHOD "@streq "phase:1,id:4099822,t:none,nolog,pass,chain"
SecRule REQUEST_URI "@streq "t:none,ctl:requestBodyProcessor=XML"      
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1
Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

最后,找到 ID 为 932105 的规则,将其禁用:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

3. 为 UAG VS 关联 WAF 策略

编辑之前创建的 UAG L7 服务,在“WAF 策略”中勾选刚才创建的 WAF Policy:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

4. 访问测试

通过网页访问 UAG 负载均衡后的域名,用户可以正常登陆:

Horizon 8 测试环境部署(5): UAG 部署及负载均衡配置-1

可以看到 waf 的匹配事件:

继续阅读