■ 河南 劉景云
編者按:使用RDS(Remote Desktop Service,遠程桌面服務)服務,可以讓用戶實現遠程管理和控制。實際上,在Windows Server 2012中,RDS服務屬于微軟桌面虛擬化的基礎技術,并由此實現了桌面虛擬化和應用程序虛擬化,對于一些企業來說,對遠程桌面服務的使用有著嚴格的規范,所以就需要實現RDS的高可用性。
在Windows Server 2012中,RDS服務是由RD Web訪問、RD網關、RD授權、RD連接代理、RD虛擬化主機和RD會話主機等組件構成。利用RDS的高可用功能,即使某個環節出現問題,也可以保證RDS順利為客戶提供服務。在眾多的RDS組件中,會話主機、連接代理和Web訪問等組件是很常用的,對其實現高可用性就顯得很有意義。
例如,在某企業中,在域環境中的DC服務器上配置了活動目錄證書服務,為了便于管理數據,在后臺配置了SQL Server 2012數據庫服務器,將RdsServer1和RdsServer4服務器分別配置為會話主機,將RdsServer2和RdsServer4服務器分別配置為連接代理主機,將RdsServer3和RdsServer6服務器分別配置為Web訪問主機,來構建RDS高可用框架結構。
首先在RdsServer1服務器上將RdsServer1、RdsServer2、RdsServer3、RdsServer4、RdsServer5和RdsServer6等所有服務器添加到一個服務器組中,之后分別在RdsServer1、RdsServer2、RdsServer3上安裝會話主機,連接代理,RDWeb組件。并在會話主機上創建集合(例如名為“jihe”),發布相關的RemoteAPP程序。以下操作全部在RdsServer1上實現。
在其服務器管理器左側選擇“遠程桌面服務”→“概述”項(如圖1),在右側的“部署概述”欄中的“RD會話主機”項的右鍵菜單上點擊“添加RD會話主機服務器”項,在選擇服務器窗口中選擇RdsServer4主機,將其添加到“已選擇”列表中。點擊“下一步”按鈕,選擇“需要時重新啟動遠程計算機”項,點擊“添加”按鈕,在RdsServer4主機上安裝RD會話主機角色服務。
選擇“服務器管理器”→“遠程桌面服務”→“集合”→“jihe”項,在右側的“主機服務器”列表中點擊菜單“任務”→“添加RD會話主機服務器”項,將RdsServer4主機添加進來。
注意:因為RdsServer1和RdsServer4主機共同為外界提供會話主機服務,所以不僅需要在RdsServer1上安裝并發布程序,在RdsServer4主機上也必須安裝和發布同樣的RemoteAPP。這樣,就實現了RD會話主機的高可用性。

圖1 遠程桌面拓撲結構

圖2 集合屬性窗口
當RdsServer1和RdsServer4主機其中任意一臺主機出現問題的話,另外一臺照樣可以為外界用戶提供服務。實際上,在上述集合管理窗口中的“屬性”列表中點擊“任務”→“編輯屬性”項,在其屬性窗口(如圖2)左側選擇“負載平衡”項,在右側顯示會話主機的負載平衡信息,包括RD會話主機服務器,內存,相對權限,會話限制等內容。
在“相對權限”列中默認顯示的值為100,即按照平均分配的方法,來處理連接請求。如果將某臺主機的相對權重設置的比較大,那么其就會處理更多的連接任務。
對于會話主機高可用來說,之所以需要在概述RDS拓撲圖中添加會話主機,又需要在集合中添加會話主機,原因在于對于某臺會話主機來說,可能包含多個集合。
每個集合又包含不同的應用程序,不同的集合對應不同的應用類別。對于第一個步驟來說,是將RdsServer4添加到RDS高可用環境中,在其中安裝會話主機服務。而第二個步驟主要是將其分配給某一個存在的集合。這樣的話,可以提高RemoteAPP的管理效率。
對于RDS服務來說,RD連接代理可以將連接信息保存在后臺數據庫中。例如,在本例中的RDS高可用環境中,多臺RD連接代理服務會共用同一個SQL Server數據庫。因此,首先需要將RdsServer2和RdsServer5連接到后臺數據庫上。在其上分別安裝SQL Native Client。
注意:其版本需要和SQL Server保持一致,該工具需要.Net FrameWork3.5組件的支持。
為了讓連接順利進行,需要為這些服務器配置訪問權限。在域控上打開Active Directory用戶和計算機窗口,在其中新建一個容器(例如“RDSOU”),在該容器中創建一個名為“RDproxy”的安全組,將RdsServer2和RdsServer5添加進來。當然,也需要將訪問RDS服務的客戶端域賬戶也添加到上述容器中。
在SQL Server 2012服務器上登錄到Microsoft SQL Server Management Studio管理界面,在左側選擇“安全性”→“登錄名”項,在其右鍵菜單上點擊“新建登錄名”項,在彈出窗口(如圖3)中點擊“搜索”按鈕,在選擇窗口中的“選擇此對象類型”欄中選擇“組”,在“查找位置”欄中選擇“整個目錄”項,之后查找并導入上述“RDproxy”組。

圖3 建立所需的登錄名

圖4 配置RD連接代理向導界面
在左側選擇“服務器角色”項,在右側的“服務器角色”列表中選擇“dbcreator”與“sysadmin”項,確保在這些主機上可以執行創建數據庫的權限。點擊“確定”按鈕,保存配置信息。配置完成 后,重 啟RdsServer2和RdsServer5主機,目的是重新提交計算機賬戶密碼,來獲得連接SQL Server服務器和創建相關數據庫的權限。因為計算機賬戶同樣是一個賬戶,其賬戶名為計算機名,并擁有隨機生成的密碼。當然,該密碼在默認狀態下是無法直接查看的。
在服務器管理器中打開“遠程桌面服務”→“概述”項,在“部署概述”欄中的“RD連接代理”項的右鍵菜單上點擊“配置高可用性”。
在向導界面(如圖4)中的“數據庫連接字符串”欄中輸入連接字符串,用來設定連接的路徑,方式以及創建的數據庫的名稱等內容。例如,輸入“DRIVER=SQL Server Native Client 11.0;Ser ver=sqlserver

=Remote Desktop Ser vices Connection Broke r;DATABASE=Proxydb”,其中的“11.0”為SQL Server Native Client的版本號,打開其安裝路徑,從目錄名中即可顯示其版本號。“sqlserver1”為 后 臺SQL Server 2012服務器的名稱,“Proxydb”為所創建的數據庫名稱。在“存儲數據庫文件的文件夾”欄中設置保存數據庫文件的目錄,該目錄存在于SQL Server 2012服務器上。
因為RD代理服務高可用是基于DNS輪循機制運作的,所以需要在域控上打開DNS管理器,在左側選擇“正向查找區域”-“域名”項,在右側新建兩條A記錄,其名稱均相同,例 如“Rdproxyloop”,但是IP分別指向RdsServer2和RdsServer5主機的地址。
這樣,就實現了DNS的輪循機制。在“DNS輪詢機制名稱”欄中輸入“Rdproxyloop”,在下一步窗口中點擊“配置”按鈕,完成所需的配置操作。
然后,在“部署概述”欄中的“RD連接代理”圖標下會顯示“高可用性模式”字樣,說明已經配置成功。在SQL Server 2012服務器上打開管理界面,執行刷新操作后,在“數據庫”節點下顯示已經創建的名為“Proxydb”的數據庫。
選擇“數據庫”→“安全性”→“登錄名”項,在其中選擇上述“RDproxy”組。
在其屬性窗口左側選擇“用戶映射”項,在右側的“映射到此登錄名的用戶”列表中選擇“Proxydb”數據庫。
在“數據庫角色成員身份”列表中選擇“db_owner”項,點擊確定按鈕保存配置,這樣可以讓RD代理服務主機可以正常的編輯數據庫內容。
接下來需要將RdsServer5添加進來,在“部署概述”欄中的“RD連接代理”項的右鍵菜單上點擊“添加RD連接代理服務器”項,在向導界面中的“服務器池”列表中選擇RdsServer5主機,將其添加到“已選擇”列表中。
之后點擊“添加”按鈕,完成所需的操作。
為了保證訪問的可靠性,就需要設置RDWeb的高可用性,這需要基于NLB負載均衡群集來實現。在“部署概述”欄中的“RD Web訪問”項的右鍵菜單上點擊“添加RD Web訪問服務器”項,在向導界面中的“服務器池”列表中選擇“RdsServer6”主機,將其添加進來。為了保證連接的安全性,就涉及到證書的配置和使用。
因為在RdsServer3上已經安裝了RDWeb組件,所以在該機上打開IIS管理器,打開服務器證書管理窗口,點擊“創建域證書”鏈接,按照上述方法申請證書。假設證書名為“RDWebZS”。之后將該證書綁定到默認的網站上。在客戶端打開瀏覽器,輸入“https://RdsServer3.xxx.com/rdweb”網址,可以順利進行訪問。
對于RdsServer6主機來說,同樣需要配置證書,所不同的是不需要重新申請證書,而是需要和RdsServer3使用同一張證書。因為基于NLB群集的話,必須使用相同的域名進行訪問,因此證書必須一致。在上述服務器證書管理窗口中選擇“RDWebZS”證書項,在其右鍵菜單中選擇“導出”項,在導出證書窗口中設置導出路徑,例如名為“rdzs.pfx”。輸入密碼后,點擊“確定”按鈕將其導出。
在RdsServer6打開IIS管理器,打開服務器證書管理窗口,在右側點擊“導入”鏈接,在彈出窗口中選擇上述文件,輸入對應的密碼,在“選擇證書存儲”列表中選擇“Web宿主”項,點擊確定按鈕,完成導入操作。之后將該證書綁定到默認網站上。前面已經說道,RDWeb高可用性是基于NLB群集實現的。因此接下來需要配置NLB群集,在RdsServer3和RdsServer6上打開分別服務器管理器。點擊“添加角色和功能”項,在向導界面中的功能列表中選擇“網絡負載平衡”項,點擊“安裝”按鈕安裝該組件。
因為NLB群集使用同一個域名,需要在域控上打開DNS管理器,在其中創建一條A記錄,名稱為“RDfw”,為其設置新的IP,例如192.168.1.60。在RdsServer3或RdsServer6上打開網絡負載平衡管理器,在左側的“網絡負載平衡管理器”節點的右鍵菜單上點擊“新建群集”項,在向導界面中的“主機”欄中輸入本機IP,點擊“連接”和“下一步”按鈕,在“新群集:群集IP地址”窗口點擊“添加”按鈕,輸入群集的地址,例如192.168.1.60。
在下一步窗口中選擇群集操作模式,在端口規則窗口中的“端口范圍”欄中設置端口范圍從443到443,來實現SSL加密傳輸功能。點擊完成按鈕,等到本主機的狀態從掛起變成聚合之后,在左側的群集節點的右鍵菜單上點擊“添加主機到群集”項,在向導界面輸入另一臺主機的IP,點擊“連接”按鈕,之后依次點擊下一步按鈕,將其加入群集即可。在客戶端打開瀏覽器,輸入“https://rdfw.xxx.com/rdweb”網址,可以順利進行訪問。