使用VMM和Operations Manager動態配置管理員角色
運行著世界上最大的 System Center Configuration Manager 2007 安裝之一,Microsoft 運營團隊較之您本無特別之處。
然而,我們正親眼見證我們數據中心的不斷發展變化,尤其是在引入虛擬化之后。Configuration Manager 2007 利用 Microsoft 虛擬化平臺,采用動態配置擴展其基于客戶端的服務,從而提高了靈活性。Microsoft 管理著超過 30 萬個客戶端,這迫使我們對規模擴展以外的事情進行些許思考,探尋提高自動化水平和效率之法。我們于此中所獲經驗教訓或可使您也受益匪淺。
VMM:構建核心
欲成功構建能夠快速并大規模擴展的 Configuration Manager 基礎結構,第一步就是要突破“基于服務器”的模型,轉變為“基于服務”的模型。在服務領域,您的擴展單元為硬件對象,如 CPU、內存、磁盤和網絡。這些資源所處的物理服務器將不再那么重要。
服務模型的起點是重新構建虛擬機 (VM) 基礎結構。不過,在我們對此做深入討論之前,先來了解一些基礎知識以掃清理解障礙。System Center Virtual Machine Manager 2008(簡稱 VMM)為您的數據中心提供了一系列可配置選項。VMM 由四個組件組成,所有這些組件都有各種不同的擴展單元:
- Virtual Machine Manager 服務器
- Virtual Machine Manager 庫
- Virtual Machine Manager 代理
- Virtual Machine Manager 自助門戶
基礎知識的介紹主要圍繞動態配置的概念展開。(本文介紹了前三項的內容。有關 VMM 自助門戶的更多信息,請參見系統要求:VMM 自助服務門戶。)
VMM 服務器安裝
作為整個系統中樞的 VMM 服務器依賴于 VMM 數據庫,該數據庫應在 SQL Server 群集上運行。該群集可確保執行所有 VM 主機和來賓任務(如創建和移動 VM 以及做出存儲決定)的作業引擎具備高可用性。
VMM 服務器是一個單獨的服務器,管理員可以在該服務器上查看其物理主機和虛擬資產。通過利用直接連接存儲 (DAS) 和存儲區域網絡 (SAN) 等數據中心已有的硬件技術,可以將您的環境轉變為動態配置的杰作。
首次安裝 VMM 需要安裝兩個組件:VMM 服務器(包括數據庫)以及 VMM 庫的第一個實例。此步驟中要進行大量的規劃工作;您可以在規劃高可用性中找到有用資源。
VMM 代理安裝
下一步是確保基于 Windows 的虛擬化服務器已經準備就緒并可用于 VMM 基礎結構。此處選擇的是具有 Hyper-V 角色的 Windows Server 2008 和獨立的 Hyper-V Server。VMM 提供了兩種設置虛擬主機的方法:基于 Active Directory 的發現和手動安裝。
我們將重點討論基于 Active Directory 的發現,因為這是最常見的方法。此過程非常簡單明了;實際決策僅涉及默認 VM 存儲位置(例如 D:\VMs)以及是否在 Windows Server 2008 中安裝 Hyper-V 角色(如果尚未啟用該角色)。
VMM 代理安裝在作為本地系統運行的每個基于 Windows 的服務器上;該代理通過 Windows 遠程管理 (WinRM) 與主機通信。代理安裝過程使 WinRM 可以允許在托管主機與 VMM 服務器之間進行基于 HTTP 的端口通信。
安裝一旦完成,VMM 管理員控制臺就應列出數據中心中可用的主機。
VMM 庫:動態配置的構建基塊
核心已準備就緒。現在要做什么?是時候了解一下庫了。VMM 庫為動態配置提供了基礎。庫是 VMM 的主要擴展單元。基礎結構中可以有多個庫服務器,但不能有多個 VMM 服務器。庫是部署和配置的構建基塊。在安裝過程中,第一個 VMM 庫放置在 VMM 服務器上;其他庫應放置在其他服務器上。在 Microsoft,我們將庫安裝盡可能靠近它們所服務的主機。例如,您可能有一個主機組,由服務于西雅圖數據中心的八個 Hyper-V 服務器組成,而位于波士頓的輔助數據中心只有一個 Hyper-V 主機(參見圖 1)。在西雅圖,您提供多個庫服務器來服務于主機組,而在波士頓只需要一個庫服務器。
.gif)
圖 1 對 System Center Virtual Machine Manager 使用多個庫。
這些數據中心庫存儲虛擬硬盤、腳本和映像。使庫靠近所服務的主機可節約配置時間。
將合適的庫服務器添加到基礎結構之后,下一步便是了解如何配置所需的服務。
不要使用克隆
有多種利用虛擬化的配置方法。克隆便是其中一種,使用克隆時會存儲整個計算機以供將來使用,其中包括特定于計算機的信息(如計算機名稱、IP 地址和特定于配置文件的數據)。
克隆在某些情況下用起來很方便,但這種方法對于動態配置則弊大于利。第一個問題是,克隆要求計算機保留為基礎結構的一部分(以 Active Directory、Operations Manager 等方式),即使系統本身并不在線(存儲在庫中)也是如此。當您在數據中心構建動態服務時,這種情況會導致許多誤報(處于離線狀態的系統也顯示為可用)。
克隆的第二個弊端在于存儲需求。由于需要完全存儲每個擴展單元(定義為一個服務器就是一個擴展單元),這導致 VM 存儲需求過大。例如,一個克隆的 Configuration Manager 2007 分發點 (DP) 包括總大小為 130GB 的三個虛擬硬盤。而這只是單個 DP 的存儲需求;在 Microsoft,僅運行一個站點便可能需要六個 DP。因此,這種情況下的克隆過程需要 780GB 的庫存儲。這會導致存儲需求飛速增長。
相比之下,“基本映像”配置方法通常更加可取。這種方法創建操作系統的基本映像,其中除了運行操作系統所需的默認服務以外無任何其他安裝。例如,Microsoft 將三個基本映像 Windows Server 2003 R2、Windows Server 2008 和 Windows Server 2008 R2 存儲為庫中的虛擬硬盤 (VHD)。每個基本映像大小約為 6GB 至 10GB,這比克隆所需的 130GB 要高效得多。
使用配置文件和模板
確定配置方法之后,下一步是創建配置文件。配置文件是 VMM 范圍的實體,對硬件或操作系統做出大體定義。硬件配置文件定義諸如 CPU 數量、硬盤數量和類型(如 IDE 或 SCSI)和網絡配置等項。來賓操作系統配置文件定義與所配置特定角色有關的基于 Windows 的特征。其中包括諸如計算機名稱、產品密鑰以及域相關信息等項。
動態配置依據硬件和來賓操作系統配置文件進行。可另建基于客戶端的 Configuration Manager 角色,但所有配置文件都遵循相同的原則。有關創建硬件和來賓操作系統配置文件及模板的詳細信息,請參見我的博客 Virtual Machine Manager 庫:這里沒有卡片目錄,你是瘋狂的圖書館管理員。
完成配置文件以后,您將創建模板。模板詳細定義服務器的硬件和操作系統特征(而不是針對每臺計算機逐一定義)。配置文件與模板的主要區別在于具體化程度:模板非常精確,配置文件則不然。例如,配置文件中包含要構建的網絡適配器類型,但不包含有關該適配器的特定于連接的信息。這類信息存儲在模板中。
因此,此分三步進行的過程先創建硬件配置文件,然后創建來賓操作系統配置文件,最后創建特定于站點的模板。若要將此過程應用于西雅圖-波士頓示例,應從 Configuration Manager DP 及其在西雅圖和波士頓數據中心的獨立主機組開始。首先,創建硬件配置文件;其次,設置整個基礎結構的操作系統信息;最后,基于這些配置文件構建每個站點的模板。由于西雅圖和波士頓的網絡不同,因此需要通過模板獲得自定義設置。
開始使用 WAIK 進行配置
完成配置文件和模板以后,便可以著手進行操作系統的動態配置了。對于 Microsoft,這意味著要使用 Windows 自動安裝工具包 (WAIK),通過該工具包可以自定義基于 Windows 的安裝(參見圖 2)。在動態配置領域,完整的操作系統安裝是不可行的,因為這樣做花費的時間太長。
.gif)
圖 2 循序漸進:在操作系統層分解動態配置。
我們使用您可能熟悉的一個進程(名為 sysprep),該進程可清理所有計算機已安裝的系統和特定于用戶的信息。在典型的使用 sysprep 清理過的服務器上,首次啟動時會向用戶詢問一組問題,用戶要對這些問題進行作答;余下的工作由服務器完成。可以通過創建無人參與的安裝文件自動回答這些問題。根據不同的操作系統,無人參與的文件存儲在庫中,作為來賓操作系統配置文件的一部分進行引用。
分解部署的有趣之處在于循序漸進地學習在部署新服務之前必須完成的工作。確定這些步驟之后,可執行通過無人參與文件完成這些工作的策略。
生成無人參與部署文件
在 Microsoft,我們要在無人參與文件中執行的一些關鍵配置如下:
- 添加本地管理員
- 啟用遠程桌面
- 禁用管理員的 IE 強化
- 設置顯示分辨率和組織信息
- 關閉 Server Manager 和初始配置任務
這些是典型的數據中心要執行的必要配置。要執行的配置遠不止這些;您可以查看位于無人參與 Windows 安裝參考上的 WAIK 參考指南,以了解如何配置其他選項。
圖 3 演示了一個無人參與安裝文件,用于動態部署我們的 Configuration Manager 站點角色。此 XML 代碼段僅包括上面列出的配置;完整的 XML 文件見我的博客針對 Windows Server 2008 及 R2 的 SCVMM 示例 Unattend.XML。
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="specialize"> <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <fDenyTSConnections>false</fDenyTSConnections> </component> <component name="Microsoft-Windows-IE-ESC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <IEHardenAdmin>false</IEHardenAdmin> </component> </settings> <settings pass="oobeSystem"> <UserAccounts> <DomainAccounts> <DomainAccountList wcm:action="add"> <Domain>Contoso</Domain> <DomainAccount wcm:action="add"> <Name>Chris</Name> <Group>Administrators</Group> </DomainAccount> </DomainAccountList> </DomainAccounts> <AdministratorPassword> <Value>Pa$$w0rd!</Value> <PlainText>true</PlainText> </AdministratorPassword> </UserAccounts> </component> </settings> <settings pass="generalize"> <component name="Microsoft-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> </component> <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> </component> </settings> </unattend>
請將此代碼段作為您的無人參與文件保存到庫共享中。若要訪問該文件,請在 VMM 管理員控制臺中右鍵單擊庫服務器并選擇“刷新”,從而刷新您的庫服務器。
在刷新后,可以將 unattend.xml 添加到前面創建的來賓操作系統配置文件。單擊“應答文件”以突出顯示該選項,然后單擊右側窗格中的“瀏覽”;找到該 XML 文件并單擊“確定”。
10 分鐘內將服務器轉變為 Configuration Manager 站點角色服務器
我們已經看到如何使用 unattend.xml 從基本映像有效地部署新的 Windows 服務器。雖然配置選項數量眾多,但其中沒幾個比 WAIK 所提供的自動登錄功能作用更大。此功能提供了很高的靈活性,也正是它實現了運行時配置的整個概念 — 僅在需要時提供需要的內容。
使用 <AutoLogon> XML 元素可以設置默認登錄憑據;該元素使用 LogonCount 確定自動登錄的頻率,從而可實現“GUIRunOnce 事件”的觸發。這些設置存儲在來賓操作系統配置文件中,當首次登錄時在服務器上同步運行。圖 4 提供了 GUIRunOnce 的一些示例使用方案。
圖 4 GUIRunOnce 使用方案 |
步驟 | 目標 |
安裝服務器功能 | 您的工作服務器可能需要一些 Windows 功能,如 IIS、群集或其他功能 |
配置功能 | 若要使某些應用程序正常運行,需要為特定功能修改或添加配置 |
部署應用程序 | 某些應用程序在安裝之前需要安裝其他特定應用程序,如 SQL server、.NET Framework |
配置應用程序 | 某些應用程序需要進行特定配置,才能完成安裝并使服務處于在線狀態 |
這些只是眾多可能性中的一小部分;了解這些可能情形有助于做好基礎工作,使管理員不必執行任何操作,即可將一個普通的 Windows 服務器轉變為 Configuration Manager 2007 站點角色服務器(如分發點)。
若要在已創建的 unattend.xml 中添加自動登錄,從而能夠在無需用戶干預(即用戶登錄)的情況下激發 GUIRunOnce,請插入圖 5 中顯示的 XML。
圖 5 在 unattend.xml 文件中添加自動登錄代碼
<settings> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> <AutoLogon> <Password> <Value>Pa$$w0rd!</Value> <PlainText>true</PlainText> </Password> <Username>administrator</Username> <LogonCount>1</LogonCount> <Enabled>true</Enabled> </AutoLogon> </settings>
接下來要設置啟用 Configuration Manager 站點系統所需的配置。第一步是確定完全安裝特定站點系統所需的操作。例如,假設成功創建 DP 需要以下特定任務;使用 GUIRunOnce 實現此目的需要以下步驟:
-
安裝 IIS
-
安裝 BITS Server 功能
-
安裝 WebDAV
-
在 IIS 配置中配置 WebDAV
-
將中心\主站點服務器添加到服務器的本地管理員組
-
部署分發點站點系統
-
將所有程序包添加到分發點
這些任務應順序執行,因為每一步都依賴于上一步的成功完成。圖 6 提供了有關如何完成每項任務的簡單指導。
圖 6 創建 Configuration Manager 分發點 |
步驟 | 命令 |
安裝 IIS | serverMgrCmd –install IIS –allSubFeatures |
安裝 BITS | serverMgrCmd –install BITS |
安裝 WebDAV | Msiexec –qna webdav.msi |
配置 WebDAV | Cmd –c \\server\share\scripts\ConfigureDP.bat |
將站點服務器添加到本地管理員組 | Net localgroup –add domain\siteservername$ administrators |
部署站點系統和角色 | Cmd –c \\server\share\scripts\DeployDP.vbs |
部署程序包 | Cmd –c \\server\share\scripts\DeployPackages.vbs |
圖 6 注釋:ConfigureDP.bat、DeployDP.vbs 和 DeployPackages.vbs 的腳本見我的博客文章使用腳本動態部署 ConfigMgr 站點角色。
測試動態配置的環境
做好基礎工作以后,應準備進行調整,因為所有配置第一次就能全部正常工作的情況很少見。但妙在一旦可正常工作,將來就幾乎不再需要進行更改。
下一步是觀察部署的進展,了解需要花費多少時間。了解直到服務處于在線狀態,完整部署需要花費多少時間,這對于確保良好的用戶體驗十分重要。
在此之后,應使用 Windows PowerShell 腳本或 VMM 管理控制臺測試您的部署。最簡單的方法是使用管理控制臺,然而 Windows PowerShell 腳本才是使動態配置得以實現的功臣。若要測試您的配置,請執行以下操作:
-
打開 VMM 管理控制臺
-
在“操作”菜單中單擊“新建虛擬機”
-
選擇選項以從模板進行創建,并基于硬件和來賓操作系統配置文件選擇合適的模板
-
選擇合適的主機
-
單擊以自動啟動并保存狀態
-
單擊復選框以在創建后自動啟動虛擬機
-
單擊“創建”
您的部署應花費大概 5 至 15 分鐘,具體取決于基本映像的大小。完成后,通過遠程桌面或在管理控制臺中訪問服務器。通過在控制臺中選擇 VM,右鍵單擊并選擇“連接到虛擬機”,可實現此目的。然后檢查以確保完成了預期配置。
從靜態到動態
迄今為止所闡述的內容都是靜態配置,轉變為動態意味著您的基礎結構應能夠監視您的應用程序并在需要時執行規定的操作。
到目前為止,我們已了解到可以使用 VMM 有效地配置 Configuration Manager 站點系統和角色。最后一步是集成 VMM 與 System Center Operations Manager 2007,以使您的 VM 可以根據需要進行擴展和收縮。
配置 Operations Manager 與 VMM 2008 的集成提供了有關集成 Operations Manager 2007 與 VMM 的指南。通過集成可以監視 Operations Manager 中的警告,從而使用 VMM 的 Windows PowerShell 界面采取操作,如創建向客戶端提供服務的服務器。
下面介紹一下我們是如何為 Microsoft 的 Configuration Manager 基礎結構實現集成的,這可以為您的環境提供一個藍圖。
第一步是確保 Operations Manager 能夠正確標識提供服務的服務器(如分發點),以便進行目標定位。為了簡化此過程,我們插入了 GUIRunOnce,這在服務器上添加了特定注冊表項和值。這可確保在安裝 Operations Manager 代理時,特定類型的角色將加蓋水印并可標識。例如,我們通過名為 ContosoDP、DWORD 類型為 0 的值,將一個名為 ContosoDP 的值放入 HKLM\Software\Microsoft\TechNetMag 中。
管理包 XML 代碼段位于構建“示例”SCOM 管理包以便基于物理或虛擬機的性能動態構建虛擬機中。該代碼段稱為“DynamicDP”,在此示例中觸發新 DP 的創建。為便于演示,我們將連接和采樣設置的值設得較低;這些值可基于您環境中的性能特征加以調整。
我們的 DynamicDP System Center Operations Manager 管理包有一個發現策略,該策略讀取為生產中的每個 Configuration Manager DP 創建的注冊表項。執行發現之后,我們創建了一條規則,用于監視特定性能計數器,如 IIS Web 服務并發連接數;在達到閾值時會生成警報。該警報會將相關 VM 的狀態從“狀態良好”更改為“嚴重”。我們據此執行恢復操作。圖 7 中演示了這些步驟。
.gif)
圖 7 動態監視和配置過程。(單擊圖像可查看大圖)
在此之后,我們使用 Operations Manager 創作控制臺創建了自己的自定義管理包。該管理包監視 DP 的并發 IIS 連接數;如果達到特定閾值,則服務會發出警報。
測試和驗證
若要使用 Microsoft 藍圖測試您環境中的所有配置是否都按預期工作,請增加 Configuration Manager DP 上的連接,從而引發警報。您應看到狀態從“狀態良好”變為“嚴重”。可以使用 HTTP 工具(如 TinyGet)執行此測試,該工具向 Web 服務器發送請求,從而生成大量連接。
復制代碼
time /t >>c:\temp\dplog.txt C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft System Center Virtual Machine Manager 2008 R2\bin\cli.psc1" -command ".\dp_recovery.ps1 -VMMSERVER:localhost -VMNAME:mydynamicVM"
驗證管理包正常工作之后,可著手構建恢復操作。應從小型恢復操作開始,例如創建文本文件。管理包恢復操作設置要在與 VMM 集成的 Configuration Manager RMS 服務器上執行的更正操作。在 Microsoft,我們在 Configuration Manager 服務器上創建了一個名為“recovery”的目錄,該目錄的一個 DP 文件夾中包含兩個文件:dp_recovery.cmd 和 dp_recovery.ps1。下面是一個 dp_recovery.cmd 示例,它與 Windows PowerShell 腳本集成以創建 VM:
復制代碼
C:\>tinyget5 -h -status:200 -SRV:localhost -uri:/test.txt -x:60 -l:5000 -o
最后一步是配置 Configuration Manager,以在發生故障時正確進行操作。此步驟利用了 Configuration Manager 的信道、訂閱和通知設置,使我們可以在創建警報時生成正確的操作。在我的博客構建“示例”SCOM 管理包以便基于物理或虛擬機的性能動態構建虛擬機上,提供了有關如何構建正確的信道、訂閱和通知設置的說明。
總結
設置物理服務器與虛擬服務器的任務是相似的,但也有重要區別。前期規劃和工作中的投入可以為您和您的團隊節約大量時間,因為服務器的部署將成為歷史,這使您可以集中精力擴展資源以支持您的服務。
Chris Adams 是 Microsoft 管理和服務部門的高級項目主管。他專門研究 System Center Configuration Manager 和 System Center Virtual Machine Manager。
文章來源:TechNet中文網
【編輯推薦】