使用終端服務部署應用程序
您可以在 Internet 上以及當地書店里找到許多有關如何安裝和使用終端服務的說明。但是它們中的大部分都對遠程應用程序能夠為用戶帶來哪些益處語焉不詳。只需很少的操作,您就可以在您的環境中快速部署一臺托管所需應用程序的終端服務器。但是要滿足用戶的期望,還必須要考慮一些其他情況。
如果您是終端服務器管理員,則需要撇開遠程應用程序基礎結構來考慮以下幾點:打算如何部署應用程序?是否要為用戶提供遠程桌面或 TS RemoteApps?用戶如何訪問其應用程序,是通過靜態遠程桌面協議 (RDP) 文件、Web 頁面還是桌面快捷方式?
***,如何評估用戶使用終端服務應用程序時的體驗?由于在 Windows Server 2008 中對終端服務做了改進,所以現在有關這些重要問題的***答案可能會令您大吃一驚。
告別桌面,迎來 RemoteApps
Windows Server 2008 借助一組重要的服務和功能擴展,解決了終端服務管理中存在的諸多難題。在 2008 年 11 月的《TechNet 雜志》中,曾就其新增功能和改進功能進行過討論,當時 Joshua Schnoll 詳細介紹了改用 Windows Server 2008 所能獲得的各種新功能(通過增強的終端服務進行演示虛擬化)。在這些功能中,最重要的可能是終端服務器不必再為用戶部署完整桌面,現在可以部署單個應用程序。
這些單個應用程序被稱為 TS RemoteApps,對于用戶而言,這些應用程序就如同直接安裝到用戶本地桌面一樣。當用戶單擊啟動某個 RemoteApp 時,他在本地計算機上只能看到該應用程序本身。沒有多余的“開始”菜單欄,也沒有雙重桌面,從而使您能夠輕松與非本地系統進行交互。從實施和用戶的期望判斷,TS RemoteApp 可能要比部署一個完整桌面更具優勢,原因很簡單,就是它可以使這些應用程序看起來像是正常的本地桌面體驗的一部分。
在 Windows Server 2008 中,使用“Administrative Tools”(管理工具)中的“TS RemoteApp Manager”(TS RemoteApp 管理器)控制臺創建新 TS RemoteApp 的過程非常簡單。單擊“Actions”(操作)窗格中的“Add RemoteApp Programs”(添加 RemoteApp 程序)鏈接啟動“RemoteApp Wizard”(RemoteApp 向導),此向導可查詢終端服務器的 Windows Management Instrumentation (WMI) 存儲區,以確定該服務器上已安裝的潛在應用程序的列表。此列表的一個示例如圖 1 所示。
圖 1“RemoteApp 向導”枚舉終端服務器上已安裝的應用程序
從列表中選擇希望創建為 RemoteApps 的應用程序,然后單擊“Next”(下一步)。如果其中未包含所需的應用程序,可單擊“Browse”(瀏覽)按鈕定位其主 EXE 文件。這里所說的主 EXE 文件通常是指用來啟動該應用程序的文件。完成向導后,即可開始部署您的遠程應用程序。
如果右鍵單擊查看新 RemoteApp 的屬性,您就會發現有幾個選項可以進行調整。除能夠修改名稱、位置、圖標和別名信息以外,您還可以輸入命令行參數。這對于那些啟動時需要一組參數才能正常運行的應用程序來說非常方便,此外它還可以與某些應用程序結合使用來創建到遠程內容的鏈接。
許多管理員可能沒有立刻意識到,轉移到 TS RemoteApps 并不僅僅意味著可以使應用程序呈現在用戶的屏幕上。通過某些小技巧,您還可以使用 RemoteApps 自動啟動預配置的內容。
例如,假設您希望為用戶部署的不是應用程序,而是特定的文檔。您可能不希望創建將用戶鏈接到空白應用程序(例如 Microsoft Office Word 或 Access)的 RemoteApp,例如,您想將其鏈接到特定的 Word 文檔或 Access 數據庫。在這種情況下,您可以通過在應用程序的主 EXE 后面輸入該文檔的名稱作為參數來達到此目的。因此,如果希望創建一個到基于 Access 2007 的 PTO(帶薪休假)數據庫的連接(該數據庫存儲在 \\fileServer\fileShare\CompanyPTO.accdb 下),只需創建一個名為 "PTO Database" 的新 RemoteApp 并輸入該文檔的位置作為命令行參數即可?,F在,當用戶雙擊啟動 PTO Database 應用程序時,會自動連接到 Access 并已預加載了正確的數據庫。
如您所見,創建到遠程內容的連接是擴展 RemoteApps 實用性的另一種方式。但對于所有 RemoteApps 而言,您的用戶仍然必須通過連接到圖標的鏈接才能開始操作。在后續部分中,我將討論在 Windows Server 2008 中使用終端服務完成這些工作的幾種方法。
從 Web 啟動應用程序
新的 TS Web Access 角色服務允許在預配置的網頁中托管應用程序快捷方式。此角色服務將與環境中的終端服務器相集成,為用戶提供一個可以查找并啟動其應用程序的位置。圖 2 顯示了此網頁呈現給用戶的外觀。
圖 2 TS Web Access 網頁枚舉已部署的 RemoteApps
要創建此類網頁,可在現有 IIS 服務器上安裝 TS Web Access 角色,然后將 TS Web Access 服務器的計算機帳戶添加到域中的“TS Web Access Computers Global Group”(TS Web Access 計算機全局組)。請注意,對于一些小型環境,可以將 TS Web Access 安裝到現有終端服務器上以實現單服務器解決方案。
完成 RemoteApp 安裝后,可以在“TS RemoteApp Manager”(TS RemoteApp 管理器)中右鍵單擊已配置的 RemoteApp,然后在 TS Web Access 中選擇“Show”(顯示)將其啟用。使用遠程桌面客戶端 6.1 或更高版本的用戶可以隨后導航至 http://serverName/ts,以查看應用程序快捷方式的列表。單擊任何出現的快捷方式都將自動啟動 RemoteApp。
TS Web Access 是一種非常簡單的方法,它可以為查找和啟動應用程序提供友好的界面。如果應用程序或版本定期更改,這將會非常有用;更新網站僅涉及在 TS Web Access 中隱藏到舊有應用程序或版本的鏈接,然后在安裝新應用程序或版本后顯示其新鏈接。
但是,此工具也存在一些限制。首先,沒有內置的機制來限制用戶可以訪問的應用程序。每個通過身份驗證的用戶都可以看到所有在終端服務器上創建的且在 TS Web Access 中設為可見的 RemoteApp。
第二個問題與用戶通常采用的對應用程序的處理方式有關。在啟動某個應用程序(例如 Word)時,您是否會經常通過單擊該應用程序的快捷方式來啟動?我敢打賭次數肯定不會太多。比較可能的方式是雙擊一個現有的 Word 文檔來啟動應用程序并預加載該文檔。
遺憾的是,TS Web Access 并不支持這種啟動應用程序的方式。對于那些習慣于雙擊文檔來啟動關聯應用程序的用戶而言,TS Web Access 可能不算是一種令人滿意的解決方案。不過請不要擔心,我們接下來將針對這種情況討論另外一種更加有用的選項。
從桌面啟動應用程序
對于那些希望通過雙擊文檔來啟動應用程序的用戶,現在終端服務提供了將遠程應用程序的鏈接“安裝”到桌面的功能。此過程可將 RemoteApp 的 RDP 文件有效地封裝到 Windows Installer 程序包(一個 MSI 文件)中,隨后可將其安裝到環境中的桌面上。
同時,安裝的 MSI 可以修改桌面上的文件擴展名關聯,以將雙擊的文件重新路由到終端服務器上與其關聯的 RemoteApp。圖 3 顯示了在客戶端系統上安裝 Word RemoteApp 后,對文件擴展名關聯所做的修改。此時,雙擊任何常見的 Word 文件擴展名都將會通過“遠程桌面連接”啟動 Word。
圖 3 修改為啟動“遠程桌面連接”的文件擴展名關聯
要從現有的 RemoteApp 創建 Windows Installer 程序包,首先導航至“TS RemoteApp Manager”(TS RemoteApp 管理器)。右鍵單擊所關注的 RemoteApp 并選擇“Create Windows Installer Package”(創建 Windows Installer 程序包)。默認情況下,所有已創建的 Windows Installer 程序包都存儲在 C:\Program Files\Packaged Programs 下,但可以利用 RemoteApp 向導來更改此位置。在向導中還可以配置將要托管 RemoteApp 的服務器的名稱和端口以及服務器身份驗證、證書設置和 TS 網關設置等。
安裝到候選桌面后與應用程序位置相關的設置如圖 4 所示。如您所見,快捷方式不但可以在桌面上創建,還可以在“開始”菜單文件夾中的某個位置創建。此屏幕中最重要的復選框是屏幕最下方的復選框。此復選框用于“取代”客戶端設置,它會將與 RemoteApp 的所有文件擴展名關聯從本地桌面重新關聯到終端服務器。如果希望使用戶能夠通過雙擊文檔來啟動其 TS 托管的應用程序,必須選中此復選框。單擊“Next”(下一步)和“Finish”(完成),結束此向導。
圖 4 創建 Windows Installer 程序包可啟用客戶端文件擴展名的關聯
很明顯,使用桌面安裝將用戶連接到應用程序的優勢在于它不需要改變用戶的行為。應用程序安裝完畢后,用戶可以像以前一樣通過雙擊文檔來啟動應用程序。
但是這種方法本身也存在著弊端,那就是需要執行額外的桌面管理工作。以這種方式使用的每個 RemoteApp 在每個需要訪問的桌面上都必須執行安裝。雖然此過程可通過“組策略軟件安裝”(稍后會進行討論)加以簡化,但它仍然增加了管理負擔。而且,當應用程序更改時,很可能每個桌面上安裝的 RemoteApps 也需要更新。
創建了 Windows Installer 程序包后,通過“組策略軟件安裝”來安裝此程序包的過程并不復雜。首先,創建一個可供組策略訪問的文件共享。在單一終端服務器方案中用于此文件共享的理想位置可能當屬終端服務器上默認的 C:\Program Files\Packaged Programs 文件夾。確保已為該文件夾和共享分配了適當的權限,以便客戶端能夠在“組策略”處理過程中訪問該共享。然后,創建新的組策略對象 (GPO) 并導航至“Computer Configuration”(計算機配置) | “Policies”(策略) | “Software Settings”(軟件設置) | “Software installation”(軟件安裝)。右鍵單擊“Software installation”(軟件安裝),選擇“New”(新建) | “Package”(程序包)。在出現的對話框中,定位針對 RemoteApp 創建的 MSI 文件。在詢問部署方法時,選擇“Advanced”(高級)。
此時您可以進行選擇。RemoteApps 的安裝程序非常小,只會在 C:\Program Files\RemotePackages 文件夾中安裝 RDP 文件和圖標,因此您可能希望選擇此選項以便在超出管理范圍時“卸載”此應用程序。選擇此選項后,每次刪除 GPO 時或計算機被移動到 GPO 不再適用的新 OU 時,RemoteApp 都會自動從計算機中移除。啟用此選項可以在計算機和應用程序移入或移出管理范圍時簡化 RemoteApp 的移除過程。
用戶體驗
通過這些機制中的任意一種來部署應用程序都非常出色,但終端服務管理畢竟不僅僅局限于創建和部署應用程序。確保您的實現能夠滿足用戶需求也同樣重要。在任何有關應用程序交付的討論中,考慮主觀性能指標以捕捉用戶體驗的質量都至關重要。盡管很難使用硬性指標進行量化,但有效的終端服務部署必須考慮將用戶的總體滿意度作為定義成功的量度。
例如,在某些情況下用戶可能會覺得很麻煩,特別是當多人共享同一服務器上的資源時。使用終端服務時,多個用戶需要擠在單一服務器上共享該服務器中安裝的應用程序。將大量用戶匯集到少數幾臺服務器上可以減少應用程序的數量,從而簡化應用程序的管理。需要管理的應用程序越少,意味著所需的修補程序越少、環境更容易控制,而且管理難點也會更少。
這種對用戶的整合需要終端服務器管理員擔當起系統維護者的角色。經驗豐富的管理員可以通過觀察用戶在系統中的行為并主動制定應對措施來管理終端服務器場。通過進行重新配置和鎖定防范等更改,可確保單個用戶的不當行為不會影響其他用戶的體驗。
例如,有經驗的終端服務器管理員會配置性能警報,以便在處理器利用率向上攀升并維持在非常高的水平時得到通知。這種行為通常表明某個進程獨占了處理器,或者某個用戶啟動的操作占用了共享系統中過多的資源。跟蹤并結束這種惡意進程只是解決此類事件的***步。找出此類進程出現的原因才是***這種問題的長期解決方案。
在這種情況下,應該要確保遠程應用程序至少能夠像在本地桌面上執行一樣。側欄“重要的終端服務性能計數器”顯示了一些可幫助您了解性能情況的 PerfMon 指標。
RemoteApps = 可預測的性能
RemoteApp 是有效的終端服務會話,其中會話的寬度和高度均與待啟動應用程序的完全相同。其結果是遠程應用程序看起來像本地應用程序一樣,因為會話的邊界永遠不會擴展到應用程序自身的邊界以外。
Microsoft 實現的 RemoteApps 實際上要比前面所述智能得多。從啟動和運行時所需資源的角度來看,部署的 RemoteApp 與部署的完整桌面并不相同。啟動遠程桌面需要使用 explorer.exe 的實例來操作桌面外殼程序以及所有配置為與 explorer.exe 一同啟動的進程,例如系統托盤應用程序、幫助應用程序或者隨標準桌面啟動的任何服務或進程。
相比而言,RemoteApp 的啟動不需要完整的 explorer.exe 外殼或所有加載項。事實上,RemoteApp 使用另外兩個進程(rdpshell.exe 和 rdpinit.exe)取代了 explorer.exe。這兩個簡化的進程將作為替代外殼和外殼登錄應用程序運行,用于啟動 RemoteApp。
圖 5 顯示了終端服務器的簡化示例,其中有兩位用戶連接并啟動了計算器應用程序。User1 通過完整桌面登錄,而 User2 連接到預先創建的 RemoteApp 實例 calc.exe。盡管您會發現 User2 啟動 calc RemoteApp 所需運行的進程數相比要多一些,但這些進程所使用的內存總量卻要比 User1 的資源管理器外殼所使用的內存少,如圖 6 所示。
圖 5 任務管理器顯示桌面和 RemoteApps 所用資源的差別
圖 6 內存使用情況示例 |
運行的進程 | User1–完整桌面 | User2–RemoteApp |
Explorer.exe | 7064KB | 不適用 |
Tasking.exe | 1792KB | 1704KB |
Dwm.exe | 588KB | 516KB |
Rdpclip.exe | 1032KB | 908KB |
Calc.exe | 648KB | 716KB |
Rdpinit.exe | 不適用 | 860KB |
Rdpshell.exe | 不適用 | 828KB |
總計 | 11124K | 5532KB |
這種減少的 RAM 消耗只是性能討論的一部分。此外還必須考慮用戶行為對處理器使用的影響。在為某個用戶部署了完整桌面后,他將會獲得運行終端服務器上所有已安裝應用程序的能力。
如果沒有適當的鎖定防范,利用終端服務在 Word 中編寫文檔的輕量級用戶可以隨時通過啟動另一個功能更為強大且需要更多資源的應用程序而變為重量級用戶。這種行為的不可預見性使得為每位用戶規劃資源的工作變得***挑戰性。它還會使終端服務器的管理變得更加復雜,從而增大了因單個用戶的行為而影響其他用戶體驗的可能性。
Internet Explorer 可能就是這種不可預見性的***示例。在 Windows Server 的每個實例上都安裝有此應用程序,而且運行它通常不需要太多資源。但是,當使用 Internet Explorer 來呈現一個需要很多插件且編寫得非常糟糕的網站時,其資源使用會大幅增加。如果某個用戶在桌面會話中不小心運行了 Internet Explorer,可能會意外耗盡終端服務器上的可用資源,從而導致其他用戶程序性能降低。
與完整桌面相比,RemoteApps 的結構在資源使用方面更具可預測性。啟動 RemoteApp 的用戶只能使用特定的應用程序以及初始應用程序關聯的其他應用程序。因此,從性能方面對用戶的行為更容易預測。
由您自行選擇
本文的最終目標是使您能夠了解為用戶部署遠程應用程序時可以選擇的選項。在 Windows Server 2008 中,其終端服務所具有的新功能可以為用戶連接到應用程序提供多種途徑。桌面托管的與 Web 托管的某種組合加上完整桌面與 RemoteApp 的對比將能夠為您的特殊環境提供正確的配置。
重要的終端服務性能計數器
盡管衡量用戶體驗通常是一種主觀性的活動,它涉及的主要是個人感覺而非客觀指標,但也有一些非常有用的性能計數器,其測量指標可以幫助您確定終端服務器的性能,而這些性能將會影響到用戶的滿意度。您應考慮在終端服務器上測量以下計數器:
Memory\Available MBytes
如果此計數器減小到很小的值,則表示終端服務器上的進程正在消耗大部分可用物理內存。雖然較低的數值不一定不好,但當其與較高的線程數和較高的 pages/sec 一同出現時,較低的數值可能表示有過多的用戶正試圖在一臺服務器上執行過多的任務。
Memory\Pages/Sec
此計數器與磁盤從內存讀取數據或從內存向磁盤寫入數據的速率相關。如果此處的計數值較高且與較低的 Available MBytes 計數值同時出現,則可能表示可用內存不足,無法承擔服務器上加載的任務,并因而導致用戶體驗不佳。
Processor\% Processor Time
此計數器可明確地顯示出生產性工作正在使用的處理器數量。您應當密切關注此指標,尤其是在多處理器系統中,因為它可以指出處于掛起或峰值狀態的處理器。
System\Threads
服務器運行的每個進程都由多個線程組成。Threads 計數器是一個整數,表示系統上所有進程的總和。終端服務器通常具有較高的線程和進程計數,因為會有許多用戶同時使用系統資源。當此計數值很高時,有理由假定有大量活動正試圖同時在服務器上執行。較高的線程計數通常會導致較高的 Context Switches 計數,因為服務器會嘗試處理每個進程的需求。
System\Context Switches/Sec
“Context Switch”(上下文切換)發生在處理器每次更改其當前處理的線程時。每次上下文切換都會產生輕微的負荷,所以此處較高的計數(伴隨較高的線程計數)可能表示許多用戶正試圖同時執行大量任務。
System\Processor Queue Length
當處理器無法承擔所有負荷時,請求將開始排隊。用于該隊列的計數器稱為 Processor Queue Length。當此計數器的值很高時,可以假定服務器的處理器無法處理所有請求,這可能同時也表明會對用戶體驗的影響。
Terminal Services\Active Sessions 和 Terminal Services\Total Sessions
這兩項指標有助于高效評估相對于終端服務器上正在工作的用戶數量而言資源的使用情況。***個計數器衡量正在處理會話的用戶,而第二個計數器則包括處于空閑狀態或已經斷開連接的用戶。這兩個計數器與其他計數器相結合將有助于確定您的服務器在超負荷運行并導致用戶體驗受到影響之前,能夠處理的***用戶數量。
您看到的實際數量將取決于您的硬件組成、所安裝的應用程序以及系統中用戶的數量和類型。因此,如果提供精確的數值作為閾值可能會讓人產生誤解。相反,當您的指標與正常操作時的指標相差很大時,您應查看您自己的數量或時間的變化,并將其作為確定用戶體驗何時變差的***手資料。
(Windows Server 2008:新增功能和改進功能)由 SAPIEN 出版社出版。您可以通過 www.ConcentratedTech.com與 Greg 取得聯系。
Greg Shields 是一名 MVP,他同時還是 Concentrated Technology 公司的共同創始人和 IT 專家。他的新書《Windows Server 2008: What's New/What's Changed》
文章來源:TechNet中文網
【編輯推薦】