104 期 - 輕鬆打造小規模 VDI 環境,虛擬桌面 VM 安裝 VADC


網管人雜誌

本文刊載於 網管人雜誌第 104 期 - 2014 年 9 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。





文章目錄

1、前言
2、實作環境
3、VADC(View Agent Direct-Connection)
          VADC 支援的作業系統
          VADC 支援的特色功能
          VADC 底層運作架構
4、VADC 安裝流程及組態設定
          安裝 View Agent 及 VADC
          進階組態設定值調整
          整合 NAT/Port Mapping 機制
          虛擬桌面連線組態設定
5、連線至 VDI 虛擬桌面
          以 Horizon View Client 連線
          以 HTML5 瀏覽器連線
          查看日誌訊息及故障排除
6、結語





1、前言

VMware 的 VDI 桌面虛擬化解決方案,在 2013 年 11 月時發佈了 VMware Horizon View 5.3,此版本當中便伴隨著本文所要介紹的機制「VMware VADC(View Agent Direct-Connection)」,而在 2014 年 6 月所發佈的最新版本 VMware Horizon 6.0 with View,則將相關特色功能再進行增強。

在開始之前,我們先來看看 VMware Horizon View 的完整架構示意圖,如圖 1 所示我們可以看到完整架構圖當中,所需要建置的角色有 ESXi 虛擬化平台、Windows AD 網域環境、vCenter 伺服器、View Connection 伺服器、View Composer 伺服器...等。

圖 1、VMware Horizon View 的完整架構示意圖

在 Horizon 完整架構中,每台伺服器角色都有其相關用途及運作機制,舉例來說 View Connection 伺服器,在 VDI 虛擬桌面運作架構中便是擔任「代理人(Broker)」的角色,也就是在資料中心當中的 VDI VM 虛擬主機,平時透過所安裝的代理程式(Agent)回報其可用狀態。因此,當外部的使用者送出連線需求之後,View Connection 伺服器便會將 VDI VM 狀態為可用的虛擬主機,指派給使用者進行連線的動作。

圖 2、View Connection 伺服器運作機制示意圖

但是,這樣的 VDI 虛擬桌面完整運作架構,對於小型環境,例如,僅需要 5 ~ 10 台 VDI VM 虛擬主機、不需要 Windows AD 網域環境...等,這樣的完整運作架構便會顯得過於繁瑣,因為你必須先將相關環境元件建立後,才能繼續後期的 VDI VM 佈建及測試作業。現在,透過 VADC(View Agent Direct-Connection)機制,你可以不需要為了建立小型 VDI 虛擬桌面環境而如此大費周章,只需要有 ESXi 虛擬化平台即可達成。

圖 3、VADC(View Agent Direct-Connection)運作機制示意圖





2、實作環境





3、VADC(View Agent Direct-Connection)

簡單來說,現在你需要建置 ESXi 虛擬化平台,接著在 VDI VM 虛擬主機當中安裝「VADC(View Agent Direct-Connection)」,那麼後續不需要 View Connection 伺服器也可以連線到 VDI VM 虛擬桌面,甚至連 vCenter Server、Windows AD 伺服器也不需要安裝建置(當然,後續在各種管理作業上會有些麻煩,不過已經說明用於小型環境當中了,對吧?)

圖 4、VADC(View Agent Direct-Connection)運作機制示意圖

VADC 支援的作業系統

在舊版 VMware Horizon View 5.3 版本的 VADC,雖然支援安裝在舊有的 Windows XP 作業系統,但是卻不支援新版的 Windows Server 2012/2012R2 作業系統。而此次實作的 VADC 新版本,則是移除了對舊版 Windows XP 的支援,下列為新版 VADC 支援安裝的作業系統清單:

  • Windows Vista SP1、SP2 Business / Enterprise 版本(32位元)
  • Windows 7 SP1 Professional / Enterprise 版本(32或64位元)
  • Windows Server 2008 R2 SP1 Standard / Enterprise版本
  • Windows Server 2012/2012 R2 Standard / Datacenter


VADC 支援的特色功能

此時,你可能會有疑問,不透過 View Connection 伺服器連線的話,那麼相關的特色功能是否仍然支援如 PCoIP(PC-over-IP)協定? 沒問題 !! 安裝 VADC 的 VDI VM 虛擬桌面,支援大部份的 VDI 特色功能:

  • PCoIP(PC-over-IP)協定
  • USB 裝置重新導向
  • MMR(MultiMedia Redirection)
  • RTAV(Real-Time Audio/Video)
  • Unity Touch
  • Windows Authentication


VADC 底層運作架構

VADC 透過 wsnm_xmlapi.dll 以 Framework Channel 機制互相協同運作,並且以 HTTP.SYS Kernel Mode Driver 來負責屆時的 HTTPS 流量,同時跟安裝在 Geust OS 當中的 VMware Horizon View Agent 緊密結合協同運作。因此,才能達成不需要 View Connection 伺服器負責連線作業,同時能夠獨立運作且支援相關功能的目的。

圖 5、VADC 底層運作元件架構示意圖





4、VADC 安裝流程及組態設定

透過 VADC 建置小型 VDI 虛擬桌面環境雖然方便,但是必須要注意一下整體的安裝流程及順序性,否則屆時可能會發生 VADC 無法順利運作的情況,舉例來說 可能會發生連上 VDI 虛擬桌面,卻只看到黑色畫面,而無法看到 Windows 桌面。下列為 VADC 運作環境的建置流程:

     1. 安裝及建立 VMware vSphere ESXi 虛擬化平台。
     2. 建立 VDI VM 虛擬主機,並修改虛擬顯示卡記憶體(Video card > Video Memory)數值為「128 MB」,以便符合屆時運作 PCoIP 協定的最低顯示需求(如圖 6 所示)。
     3. 在 VDI VM 虛擬主機中,安裝 VADC 所支援的 Windows 作業系統。
     4. Windows 作業系統安裝完畢後,安裝 VMware Tools 以便達到虛擬硬體最佳化。
     5. 為 VDI VM 虛擬主機,安裝 Horizon View Agent 代理程式,安裝完畢後會提示要重新啟動主機。
     6. 為 VDI VM 虛擬主機,安裝 Horizon View Agent Direct-Connection 代理程式。

圖 6、修改 VDI VM 虛擬主機虛擬顯示卡記憶體為 128 MB

安裝 View Agent 及 VADC

當我們將 ESXi 虛擬化平台安裝完成,並且建立屆時用於測試 VDI 環境的 VM 虛擬主機,調整好虛擬顯示卡記憶體為 128MB,並且安裝好 Windows 作業系統之後,接著請先安裝 VMware Tools 以便將虛擬硬體進行最佳化的動作。

在安裝 Horizon View Agent 代理程式時,採用「預設值」進行安裝程序即可,在安裝過程中你可以看到,屆時的相關功能選項如 USB 重新導向...等項目已經選取安裝,當安裝流程完畢後會提示你要重新啟動主機以套用生效,重新登入後將會發現多出六項以 VMware 開頭的系統服務,以及相關的防火牆允許規則。

圖 7、安裝 Horizon View Agent 代理程式及功能選項

接著,請安裝 Horizon VADC(View Agent Direct-Connection)代理程式,在安裝過程中會提示你需要並協助自動開啟「VMware View HTTPS (TCP Port 443)」的防火牆規則,安裝完畢後不需要再次重新啟動主機,請先確認防火牆規則是否已經開啟,否則後續採用 View Client 時,將會因為防火牆未開啟而導致無法連線的狀況。

圖 8、確認防火牆已經開啟並允許 VMware View HTTPS (TCP Port 443)規則

此外,在 Horizon VADC 安裝過程中還會建立「View Agent Direct-Connection Users」群組,建立 View Agent Direct-Connection Users 群組的用意,是當你的環境中並沒有建立 Windows AD 網域,那麼在 WorkGroup 單機運作的環境當中,你仍然可以透過本機群組的驗證機制,來決定哪些使用者帳號可以利用 View Client 進行登入及權限指派的動作。

預設情況下,只會將「Authenticated Users」群組加入 View Agent Direct-Connection Users 群組當中,也就是只有「通過驗證」程序的使用者帳號,才可以採用 View Client 登入安裝 VADC 的 VDI VM。你也可以加入單一使用者帳號,例如,使用者帳號 Weithenn 也可以登入此台 VDI 虛擬桌面主機。

圖 9、將單一使用者帳號 Weithenn,加入 View VADC 群組當中

進階組態設定值調整

View VADC 應用於小架構環境,甚至可以不需要整合 Windows AD 網域,但隨之而來的問題就是「管理」問題了,舉例來說,想要設定 VDI VM 虛擬主機的 USB AutoConnect 組態的話,若運作環境當中有 Windows AD 網域時,則可以透過 GPO 群組原則進行組態的統一派送的動作,若是單機環境則必須要一台一台,以修改「機碼(Registry)」的方式處理了。

單機環境的話,你可以透過修改在「HKEY_LOCAL_MACHINE\Software\VMware, Inc.\VMware VDM\Agent\Configuration\XMLAPI」路徑當中,新增相關的 Registry 值以進行組態調整,例如,要調整 USB AutoConnect 組態的話,請加入「usbAutoConnect」的字串值名稱,並採用「REG_SZ」的字串值類型,接著填入你要設定的組態值 TRUE 或 FALSE。詳細的組態設定項目及說明,請參考 VMware Horizon View 6.0 – View Agent Direct-Connection Plug-in Administration 文件。

圖 10、在單機環境以 Registry 值進行組態調整

若運作環境當中有 Windows AD 網域時,請在網域控制站上開啟群組原則管理,接著在群組原則管理編輯器當中匯入 VMware-Horizon-View-GPO-Bundle 內,VADC GPO 群組原則範本檔 view_agnet_direct_connection.adm。此時,便可以看到 VADC GPO 群組原則,便可以針對 VADC 組態設定,進行大量派送的動作。

圖 11、在網域環境以 GPO 進行組態派送

整合 NAT/Port Mapping 機制

由於會採用 VADC 運作架構的環境通常為小型環境,因此通常都會有小台防火牆並且搭配一個 Public IP 來執行 VDI 虛擬桌面環境,這樣的小型運作環境在內網(LAN)且同網段運作時,無須變更任何設定 View Client 可以直接連接到安裝 VADC 的 VDI VM 虛擬主機。

但是,若在內網當中不同網段有存取需求時,或者有從網際網路要連線到內網當中 VDI VM 虛擬主機時,此時就必須要在防火牆上執行 PNAT(Port Mapping) 的重新導向動作,否則便會發生無法通訊的問題。

在防火牆設定 PNAT(Port Mapping)重新導向時,請為每一台 VDI VM 虛擬主機保留「5 Ports」,主因是每一台 VDI VM 虛擬主機需要運作的相關連接埠,例如,PCoIP 需要用到 Port 4172Framework Channel 為 Port 32111。因此,假設 VADC 運作架構環境當中有五台 VDI VM 虛擬主機,在防火牆設定上就可以設定 Port 1000 ~ 1004,以 Port Mapping 機制重新導向到第一台 VDI VM 虛擬主機的相關連接埠(如圖12所示)。

圖 12、VADC 運作架構 Port Mapping 重新導向示意圖

在本文的實作環境中,以 FreeBSD 搭配內建的 PF(Packet Filter)機制,來擔任防火牆的角色。以下是測試環境的資訊說明,在防火牆規則中僅舉例以 Port Mapping 機制,重新導向網路流量到內網中其中一台 VDI VM 虛擬主機:

  • 外部 IP 位址(Public IP Address): 61.60.59.58
  • VADC VDI VM 虛擬主機 IP 位址: 192.168.10.57
  • SSL Port: 443 (Port Mapping 機制,外部 Port 號為20001)
  • PCoIP Port: 4172 (Port Mapping 機制,外部 Port 號為20002)
  • Framework Channel Port: 32111 (Port Mapping 機制,外部 Port 號為20003)


根據上述的環境需求,下列為 FreeBSD 主機當中 PF(Packet Filter)機制,針對此次實作環境的 NAT(Network Address Translation)及 RDR(Redirection, Port Forwarding)規則:
# cat /etc/pf.conf
   ### Marcros ###
   ext_if="vmx3f0"            #WAN
   lan_if="vmx3f1"            #LAN
   lan_net="192.168.10.0/24"  #LAN Subnet
   ### NAT/RDR ###
   nat on $ext_if from $lan_net to any -> ($ext_if)
   ### VADC Testing ###
   rdr on $ext_if proto tcp from any to $extif/32 port 10120 -> 192.168.10.57 port 443
   rdr on $ext_if proto { tcp, udp } from any to $extif/32 port 10121 -> 192.168.10.57 port 4172
   rdr on $ext_if proto tcp from any to $extif/32 port 10122 -> 192.168.10.57 port 32111


虛擬桌面連線組態設定

我們已經在防火牆端完成連接埠重新導向的動作,接著你必須為「每一台」VADC VDI VM 虛擬主機,調整連線組態設定值,否則 VDI 虛擬主機如何得知本機的 PCoIP、Framework Channel Port 號,分別對應哪些重新導向過來的連接埠如 Port 10121 -> Port 4172

你可以匯入下列 VADC_PortMapping.reg 機碼內容,當匯入完成後便會自動在機碼路徑中新增上述的相關 Port 號,並且新增機碼後「無須」重新啟動 VDI VM 虛擬主機便可立即運作。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Agent\Configuration\XMLAPI]
"externalIPAddress"="61.60.59.58"
"externalPCoIPPort"="10121"
"externalFrameworkChannelPort"="10122"


順利將 VDI VM 虛擬主機連線組態機碼值完成後,在進行 View Client 連線作業前,建議你再次檢查相關組態是否正確,例如,機碼值是否新增、防火牆是否允許 VMware View HTTPS...等,以便稍後遭遇非預期的錯誤。

圖 13、VDI VM 虛擬主機連線組態機碼值





5、連線至 VDI 虛擬桌面

以 Horizon View Client 連線

順利將前置作業都完成後,如果你是在區域網路內部直接連接的話,那麼請開啟 Horizon View Client 後,直接輸入 VDI VM 虛擬主機的 IP 位址即可(此實作為 192.168.10.57)。若是從外部網際網路進行連線的話,請輸入防火牆的 Public IP 位址(此實作為 61.60.59.58),以及要導向至該台 VADC VDI VM 的 Port 443 (此實作為 10120),確認無誤後按下連線鈕。

圖 14、由網際網路連線至內部 VDI 虛擬桌面

成功連接到 VDI VM 虛擬主機的 Port 443 之後,首先會彈出視窗顯示憑證訊息詢問你是否要繼續,原因是預設會採用 Self-Signed Certificate 的方式自行簽署 SSL 憑證,如果環境中有 CA 憑證的話也可以進行導入。

順利通過連線驗證程序後,接著為使用者帳戶驗證程序,若環境中有 Windows AD 網域且 VDI VM 虛擬主機有加入網域,那麼便可以輸入網域使用者帳號及密碼;若是單機運作環境,則輸入剛才加入 View Agent Direct-Connection Users 群組當中,所允許連接的「使用者帳號」進行登入的動作,此實作為填入使用者帳號 Weithenn 及密碼,輸入完畢後按下登入鈕即可。

圖 15、鍵入可登入 VDI VM 虛擬主機的使用者帳號及密碼

若鍵入的使用者帳號及密碼通過驗證程序,應該就可以看到連線到 VDI VM 虛擬主機並登入桌面,若出現下列錯誤訊息,表示該台 VDI VM 虛擬主機的 Console 已經被登入咬住,所以無法登入。

圖 16、VDI VM 虛擬主機的 Console 已經被登入,所以無法登入

當然,順利登入 VDI VM 虛擬主機之後,你能進行怎樣的操作完全取決於你所登入的使用者帳號,所擁有哪些權限所決定,舉例來說,如果你所登入的帳號僅具備一般使用者的「Users」權限,當你嘗要調整 VDI VM 虛擬主機的防火牆設定時,便會彈出使用者帳戶控制(User Account Control,UAC)的驗證視窗。

圖 17、登入後相關操作,取決於登入的使用者帳號所擁有的權限

以 HTML5 瀏覽器連線

當使用者人在外面出差,可能筆記型電腦作業系統當機,或者其它原因導致無法透過 Horizon View Client,連線回公司的 VDI VM 虛擬主機時,有沒有其它更簡單的方式可以進行連接? 沒問題,只要透過支援 HTML 5 技術的瀏覽器即可,如下列所示:

  • Chrome 28 或更新版本
  • Internet Explorer 9或更新版本
  • Safari 6或更新版本
  • Firefox 21或更新版本


但是在此之前,VDI VM 虛擬主機必須先進行額外的設定,才能提供外部連線使用者透過瀏覽器連入。首先,我們先前已經為 VDI 虛擬桌面安裝 Horizon View Agent 代理程式(如圖 7 所示),請再次確認安裝時未取消「HTML Access」項目。

接著,請登入 VDI VM 虛擬主機,依序點選「開始 > 控制台 > 程式集 > 程式和功能 > 開啟或關閉 Windows 功能」,勾選「Internet Information Services」項目進行安裝程序,當安裝作業完成後請開啟 IIS 管理員,在左邊設定區塊中依序點選「主機 > 站台 > Default Web Site > 右鍵 > 編輯繫結」,在彈出的站台繫結視窗中請按下新增鈕,此時在彈出的新增站台繫結視窗中,請依序選擇相關資訊後按下確定鈕:

  • 類型: https
  • IP 位址: 全部未指派
  • 連接埠: 443
  • SSL憑證: vdmdefault (Self-Signed Certificate 自行簽署的 SSL 憑證)

圖 18、新增站台繫結資訊

回到繫結視窗中,請點選原本存在的一筆「http、連接埠 80」記錄後按下移除鈕,所以目前站台繫結視窗中,只剩下我們剛才所新增的「https、連接埠 443」記錄,確認無誤後按下關閉鈕繼續下一個設定步驟。

接著,點選 Default Web Site 項目後,在 IIS 管理員視窗的中間設定區塊內,點選「MIME 類型 > 開啟功能 > 新增」,在彈出的編輯 MIME 類型視窗中,請於副檔名欄位填入「.json」,而 MIME 類型欄位則請填入「text/h323」後,按下確定鈕即完成 MIME 類型新增動作。

圖 19、新增用於 VDI 虛擬桌面網頁連線的 MIME 類型

請找一台主機安裝 Horizon Connection Server 安裝程式,接著在「C:\Program Files\VMware\VMware View\Server\broker\webapps」路徑中,可以發現「portal.war」檔案,請將該檔案複製到 VDI VM 虛擬主機當中,並且修改檔案名稱為「portal.zip」後,解壓縮該檔案後將 portal 資料夾,複製到 IIS 網頁資料夾當中也就是「C:\inetpub\wwwroot\portal」,接著建立一個空的首頁檔案「Default.htm」後,以筆記本編輯內容如下:(此實作 VDI VM 虛擬主機 IP 位址為 192.168.10.57)
<HEAD>
<meta HTTP-EQUIV="REFRESH" content="0; url=https://192.168.10.57/portal/webclient/index.html">
</HEAD>


完成後,便可以使用支援 HTML 5 技術的瀏覽器進行連接,此實作環境請在瀏覽器網址列中輸入「https://192.168.10.57」,成功連接到 VDI VM 虛擬主機的 Port 443 之後(剛才 IIS 管理員的站台繫結設定),首先會顯示此網站的安全性憑證有問題,原因跟先前以 Horizon View Client 連接時一樣,因為預設會採用 Self-Signed Certificate 的方式自行簽署 SSL 憑證,如果環境中有 CA 憑證的話也可以進行導入,請按下繼續瀏覽此網站(不建議)連結。

此時,便會看到需要輸入使用者帳號及密碼頁面。同樣的,若環境中有 Windows AD 網域且 VDI VM 虛擬主機有加入網域,那麼便可以輸入網域使用者帳號及密碼;若是單機運作環境,則輸入剛才加入  View Agent Direct-Connection Users 群組當中,所允許連接的「使用者帳號」進行登入的動作,此實作為填入使用者帳號 Weithenn 及密碼,輸入完畢後按下登入鈕即可。

圖 20、輸入使用者帳號 Weithenn 及密碼後按下登入鈕

同樣的,順利登入 VDI VM 虛擬主機之後,你能進行怎樣的操作完全取決於你所登入的使用者帳號,所擁有哪些權限所決定。不過,你可能會發現有些功能無法使用例如,USB 重新導向...等,而聲音(Audio)的部份則必須使用支援 WebSockets 的瀏覽器才能正常運作。所以,如果你想要使用及測試全部功能,那麼還是使用 Horizon View Client 比較全面。

圖 21、以支援 HTML 5 技術的瀏覽器登入 VDI 虛擬桌面

查看日誌訊息及故障排除

最後,你可以透過查看日誌內容來了解 VDI 虛擬桌面的運作情況,或者無法順利連線至 VDI 虛擬桌面時,可以透過日誌內容來協助你進行故障排除的動作。因為,因為 VADC 機制是協同原來的 VMware Horizon View Agent 運作的,所以可以 View Agnet 代理程式的路徑(C:\ProgramData\VMware\VDM\Logs)中日誌內容。

如果你需要全部的日誌(Full Logging)收集時,請執行「C:\Program Files\VMware\VMware View\Agent\DCT\support.bat」後,選擇 3 啟用 Full Logging 機制,後續就可以透過「wsnm_xmlapi」關鍵字搜尋日誌內容,以協助您進行。





6、結語

許多企業或組織前期評估導入 VDI 虛擬桌面時,得知要建置完整的 VDI 虛擬桌面運作架構如此龐大時,往往容易卻步三分。因此,希望透過本篇文章的說明及實作,協助讀者建立簡單的 VDI 虛擬桌面環境,以方便企業或組織進行評估及測試,待相關需求經過評估測試後,再考慮是否要導入及建置完成的 VDI 虛擬桌面運作架構。