連接配接伺服器的負載均衡需求
Horizon 的連接配接伺服器支援多節點部署,但并不提供單一的入口,管理者可以在 DNS 上為多台 CS 配置同一個外部域名,這樣使用者在進行域名解析時就可以獲得不同 CS 的真實位址,進而讓不同的使用者連到不同的 CS 節點。但 DNS 并不能監測後端 CS 是否正常工作,CS 節點故障時可能會導緻部分 Client 無法正常使用桌面。是以使用負載均衡器是一個更優的選擇。
Horizon 下的網絡連接配接
在 Horizon 環境中共有兩大類流量:
- 使用者認證流量(HTTPS):使用者登陸時的身份認證均使用此協定傳輸。認證功能由 CS 提供,在 Horizon 下 CS 本身預設提供 TLS 加密功能(還記得第一篇中給 CS 準備證書嗎?),如果要給 CS 配置負載均衡,則要做端到端的 TLS 加解密;
- 虛拟桌面流量:使用者通路 VDI/虛拟應用時的流量,以及多媒體重定向、USB 重定向等功能的流量。共包含 RDP、PCoIP、Blast、MMR/CDR、USB 重定向等 5 種協定,每協定在不同的配置下可能使用不同的端口。其中 RDP、PCoIP、Blast 用于傳輸桌面的流量,一般使用 Blast 協定。MMR/CDR 分别表示多媒體重定向和用戶端驅動器重定向。
當在純内網中使用 Horizon 時,可以隻部署 CS。如果不開啟 CS 的安全網關功能,則 Horizon Client 直接和 VDI VM 通信傳輸桌面流量;如果開啟了 CS 的安全網關功能,則認證流量和桌面流量均需要通過 CS 進行傳輸。
在不同桌面協定下,使用的端口可能不一樣,同時輔助協定的端口也可能不一樣。比如設定虛拟桌面使用 Blast 協定時,Blast 使用 22443 端口,MMR/CDR 也會複用 22443;但是使用 PCoIP 協定時,PCoIP 使用 4172 端口,MMR/CDR 則使用 9427 端口,不和桌面流量複用端口。
開啟 CS 的安全網關功能後,用戶端到連接配接伺服器的端口又和直連 VDI 的端口不一樣。比如關閉 CS 安全網關使用 Blast 時,Horizon Client 到 VDI 使用 22443 傳輸 Blast 及 MMR/CDR,使用 32111 傳輸 USB 重定向流量;而開啟 CS 安全網關使用 Blast 時,Horizon Client 到 CS 使用 8443 傳輸 Blast 及 MMR/CDR,複用 443 傳輸 USB 重定向流量,CS 到 VDI 使用 22443 和 32111。
網絡連接配接這塊内容比較複雜,但對于排錯和配置負載均衡器至關重要。為了更加直覺地表示不同配置下流量路徑,我繪制了下面兩張圖
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAnYldHL0FWby9mZvwFN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcV2Zh1Wa9M3clN2byBXLzN3btgHL9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yM3UzN3MjYhFTOjNDO2IDZyYzXyUjNyUTM2EzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
在 Horizon 下,僅能對 CS 的認證流量進行負載均衡,安全網關的流量不能進行負載。如果開啟了 CS 安全網關功能,則認證流量和桌面流量必須經同一台 CS 處理。
為 CS 配置負載均衡後,流量路徑如下兩張圖所示:
基礎的概念就講這麼多,我們來看看使用 NSX ALB(又稱 Avi)如何為 CS 配置負載均衡功能。
為 Horizon 連接配接伺服器配置負載均衡
本文涉及的環境資訊如下表:
注意:表中所有域名均已提前在 AD/DNS 中配置好正反向解析。
1. 為 CS 建立 SSL 配置檔案
在“模闆>安全性>SSL/TLS配置檔案”中,建立新的應用程式配置檔案:
勾選TLS 1.1和TLS 1.2,取消勾選“啟用SSL會話重用”:
2. 為 CS 建立運作狀況監控器
在“模闆>配置檔案>運作狀況監控器”中,建立新的運作狀況監控器:
類型為 HTTPS,發送時間為 30s,接收逾時 10s,檢查端口為 443,請求标頭為“GET / HTTP/1.0” :
響應代碼為2xx,在 SSL屬性中勾選之前建立的 SSL 配置檔案:
(可選)通過 PKI 配置檔案來開啟 CS 的證書驗證
額外地,也可以建立 PKI 配置檔案來對連接配接伺服器的證書進行驗證
1. 建立一個 PKI 配置檔案,在裡面關聯用于驗證連接配接伺服器證書的 CA 根證書:
2. 将此 PKI 配置檔案關聯給運作狀況監控器:
3. 為 CS 建立池
在“應用程式>池”中,建立新的池:
預設伺服器端口為 443,持久性選擇“System-Persistence-Http-Cookie”,運作狀況監控器選擇上個章節建立的“Horizon-CS-HTTPS”:
SSL 配置檔案選擇之前建立的“Horizon-CS-SSL-profile”:
伺服器池成員填寫兩台 CS 的 IP 位址:
(可選)通過 PKI 配置檔案來開啟 CS 的證書驗證
在池的層面也可以開啟 CS 證書驗證功能,隻需要在“伺服器 SSL 證書驗證 PKI 配置檔案”中關聯即可。
4. 為 CS 建立新的應用程式配置檔案
在“模闆>應用程式”中,建立新的 HTTP 應用程式配置檔案:
禁用“連接配接多路複用”以及“X-Forwarded-for”:
在安全性中勾選“在所有位置使用SSL”:
5. 為 CS 建立伺服器證書
在“模闆>安全性>SSL/TLS證書”中建立新的應用程式證書:
類型選擇導入:
分别導入證書和私鑰,然後儲存即可:
注:第一篇文章中我們使用 KeyManager 為 CS 生成了證書,此處可以将上次生成的證書導出為 pem 格式供 NSX ALB 使用。
6. 為 CS 建立虛拟服務
在“應用程式>虛拟服務”中使用進階設定建立新的服務:
指定 VIP,使用之前建立的應用程式配置檔案“Horizon-CS-Application-Profile”:
勾選 80 和 443 端口,其中 443 為 SSL,使用之前建立的 CS 池、SSL配置檔案以及伺服器證書:
(可選)建立 HTTP 安全政策阻止使用者通路 admin 頁面
在虛拟服務的“政策”頁面中,建立 HTTP 安全政策,比對通路路徑為 “/admin” 開頭時,關閉連接配接:
配置完成後當使用者嘗試通路 Horizon 管理界面時,會提示頁面無法通路:
注意:配置此設定後,管理者隻能直接通路 CS 的域名來進行管理。
7. 在 CS 中信任負載均衡的域名
當為 CS 配置負載均衡後,通過網頁通路虛拟桌面時會報如下錯誤:
這是因為預設 Horizon 隻允許通過 CS 的域名來進行 Web 通路,當使用了負載均衡後需要修改 CS 的配置檔案。
在 CS 的安裝路徑找到此目錄“VMware\VMware View\Server\sslgateway\conf”,建立名為 locked.properties 的檔案:
内容如下:
balancedHost=cs.halfcoffee.com
然後重新開機 Connection Server 服務:
為所有 CS 執行上述同樣的操作。
8. 内網使用者通路測試
通過浏覽器通路 CS LB 的域名,可以正常通路頁面:
虛拟桌面也可以正常通路:
8. 高可用性測試
關閉 CS1 節點,負載均衡器可以檢測到故障(因運作狀況檢查政策設定的比較保守,是以 UI 并不會立即展示故障):
使用者通路桌面正常,所有的連接配接會從 CS2 走:
附件:連接配接伺服器的安全網關功能
CS 安裝完成後,預設的安全網關功能配置如下。注意所有外部 URL 隻能填寫對應連接配接伺服器的“FQDN:端口”或者“IP:端口”。
在此配置下,隻有使用 PCoIP 時不會經過 CS 代理,其他流量全部都會被 CS 代理。
本文完
關注微信公衆号“NSX很可愛的”,背景回複“Horizon”即可擷取本文以及相關媒體的下載下傳連結。
參考文檔
允許 HTML Access 通過網關:
https://docs.vmware.com/cn/VMware-Horizon/2106/horizon-installation/GUID-FE26A9DE-E344-42EC-A1EE-E1389299B793.html