線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2004
推到 Plurk!
推到 Facebook!

Microsoft Hotmail 移轉技術個案研究

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-11 03:48:28 IP:61.64.xxx.xxx 未訂閱
Microsoft Hotmail 移轉技術個案研究  http://www.microsoft.com/taiwan/technet/prodtechnol/windows2000serv/deploy/depopt/hotmailg.htm    簡介  Microsoft® Hotmail® 服務是一個領導業界的免費 Web 電子郵件提供廠商,它在今年一月時,全球使用者已經突破 1 億大關,並且持續以大約每季 11 00 萬的速率成長。平均每一天有多達 35 萬個新郵箱加入,同時有 200,000 個舊郵箱退出。一天之內的變更要求就超過 550,000 個。為了配合追求外語支援、改善效能、提高延展度、以及縮短開發週期等高度需求,Hotmail 選擇使用 Microsoft Windows® 2000 Server。     Hotmail 是網際網路上最廣為使用的免費電子郵件服務。這個電子郵件服務是 Microsoft 在 1997 年併購,擁有 900 萬個基本使用者,現在是由 Microsoft MSN® Web 內容當中最大的 server farm 所組成。該應用程式的原始建立者在各種 UNIX 系統旁建立了雙層架構,並且以 FreeBSD (一種類似 Linux 作業系統的仿 UNIX 系統) 執行負責處理登入、Microsoft Outlook® Express和 Web 內容傳遞作業的前端 Web 伺服器。目前網路共有 5,000 部以上的伺服器,一共組織為 12 個左右的叢集,每一個叢集都由連結到資料存放機器的前端伺服器所組成1。  如果您的瀏覽器不支援內嵌框架, 請按一下這裡,在單獨的頁面檢視。     每一個 Web 伺服器都有它自己的本機 FreeBSD 管理員帳戶。因此基本上是有好幾千個管理員帳戶需要同步處理。     Windows 2000 目標環境 Microsoft Hotmail 的 Windows 2000 移轉專案第 1 階段,要把所有現有的 FreeBSD\Apache Web 伺服器,全部移轉到 Windows 2000 和 Internet Information Services (IIS),而這個過程為期兩個月,大約要移轉 3,600 個伺服器。移轉程序可以擴展為每 24 小時 400 個伺服器。其瓶頸實際上是 LAN 區段頻寬。如果每個時段必須移轉更多伺服器,可以將目標機器分散到其他子網路上,以減輕 LAN 頻寬的問題。     在下面的〈部署和移轉〉一節當中,我們將詳細說明應用程式移轉。     實作 Microsoft Services for UNIX (SFU) 的目的,是為了提供標準 UNIX 公用程式 (如 grep 和 du) 給 Microsoft Hotmail 小組。     Microsoft Interix 所提供的環境,可以讓您在 Windows 2000 執行 UNIX 應用程式和指令碼。從另一個角度看,Microsoft Interix 等於是在 Windows 2000 上提供一個 UNIX 子系統/環境。Hotmail 小組則利用 Microsoft Interix 提供的系統記錄功能。這一點正是把對作業的影響降到最低的主要原因。因此您可以另外換掉技術,不必同時重新修整環境的作業和管理。不過這不表示 Microsoft Interix 容許您在不加修改的情況下,重複使用所有的指令碼。它與任何一個應用程式從作業系統移轉到另一個系統一樣,都必須進行測試。但是它可以將之前開發的指令碼做最好的發揮。     SSL 硬體加速器已經用不著了,因為 Microsoft Internet Information Services 所做的板上 SSL 處理,比利用 FreeBSD 的外部硬體方案更有效,且產量也更高。     Windows 2000 Active Directory™ – 附錄 2 和 3 以圖形表示 Windows 2000 網域和網站拓樸,並簡短說明拓樸的合理性。在第 1 階段當中,使用 active directory 有下列限制:     存放系統管理和伺服器帳戶的中央帳戶資料庫  存放群組原則物件 (GPO) 以進行組態管理 (內建式 GPO)。  由管理群組實作基本組織單位 (OU),也就是根網域中對應到 Hotmail 管理群組的 OU。  由資料中心實作網站。  此處必須注意的一點是,您不必為了部署 Windows 2000,而精心建構 Windows 2000 Active Directory 設計。其擴充或短缺都是根據商業動力而定。最重要的是必須保持簡單。這樣才能透過啟用目錄的應用程式,或是執行查詢 Windows 2000 Active Directory 存放區的商業邏輯,而套用商業動力。您可以透過組織單位,進一步的分割目錄,並且在必要時擴充架構。     下圖所示範的是撰寫本文時的高階伺服器拓樸。      如果您的瀏覽器不支援內嵌框架, 請按一下這裡,在單獨的頁面檢視。 Hotmail 選擇 Microsoft 互通性方案,不但享有 Windows 2000 移轉作業的優點,也能完全控制新的混合應用程式。這樣不但達到專案商業目標,建立更豐富的開發環境,同時也把作業和商業日常運作所受的影響降到最低。 部署和移轉 前面我們提過,在採取自動化程序的技術工程之前,必須先了解目標伺服器組態。但是判斷目標組態的方法,並不在這個技術個案研究的範圍內,因此我們假設目標組態已經決定並測試妥當,這個組態就是參考實作。參考實作是指每一個分別扮演特定角色之伺服器所要的伺服器組態,而不是伺服器專屬設定5。 它也是其他伺服器應該要配合的主要影像。 本節將說明: Hotmail 為了在 Web farm 快速部署參考實作所用的高階程序。 基本層面部署的其他方法,這一點適用於廣泛的客戶移轉案例。 以範例詳細解說 Hotmail 所用的自動操作方式。 由於下列原因,我們將提出從實際 Hotmail 移轉衍生而來的作業 (附錄 1 將有明確說明): 本範例含有本技術個案研究中所有方法共用的基本元素,也就是說,不管該方案是採用:i) 從網路開機、ii) 從另一個分割區開機、iii) 開機載入器、iv) 載入到診斷板或網路介面卡上的虛擬磁片,每一個都會使用虛擬開機片。本範例所用的開機片永遠不必取出,因此當伺服器放在電腦室地板的框架上之後,除非因為硬體失敗,而需要換掉元件或整個伺服器,否則操作員根本不必過來察看。 本範例代表一個方法,這個方法對於新的部署 (沒有內嵌的伺服器基座) 和移轉作業都相當有效。附錄 1 所提供的詳細範例,適用於許多部署案例。那些方法在好幾個大型的客戶實作都證實有效。 排程/邏輯 要確實達到移轉的目標 (包括「不影響使用者和存留時間」以及「將作業影響降到最低」),必須詳細規劃要移轉哪些伺服器。 大部份資料中心服務的設計和服務等級合約 (SLA),都必須將容錯整合到產品當中。大部份服務供應的設計,都是把伺服器集中在「服務群組」或「叢集」當中。每一個服務群組都有幾百個或幾千個前端伺服器,是用網路負載平衡或叢集的方法,進行負載平衡。負載平衡器會偵測到失敗發生,然後將資料流傳遞到仍在運作的伺服器。在部署新的作業系統時應該使用這個容錯功能,因為伺服器可能會有一小段時無法使用 (從 Hotmail FreeBSD 轉換到 Windows 2000 的時間是 75 分鐘)。 一個好的資料中心服務供應設計,應該要讓一定比例的伺服器或系統元件在失敗時,不會影響到使用者、存留時間、或「服務等級合約」(SLA)。伺服器移轉活動可以在每批更新時,從服務群組中選出一小組伺服器重新設定,而套用這項容錯功能。移轉規劃的設計,不應犧牲服務的可用性,即使再壞的情況都是。移轉規劃應該提供一個機制,在發生大問題時,快速還原到前一個狀態。 Windows 2000 在安裝時會產生許多記錄檔,這些記錄檔含有安裝程序的相關資訊,可以幫助解決安裝完成後所發生的問題。其中有兩個記錄檔對於排解疑難特別有幫助:動作記錄和錯誤記錄。動作記錄 (setupact.log) 主要在說明安裝時所採取的動作,而錯誤記錄 (setuperr.log) 則說明在安裝時所發生的錯誤。在進行大型的部署作業時,這些記錄都應該複製到一個集中目錄或主控台,以便進行運作驗證。這個動作可以在安裝結束時,透過一個指令檔加以完成。 Hotmail 是不分日夜的進行部署,使用位移來監視移轉活動,並且確定每一個叢集都有足夠數量的伺服器在線上,這樣才不會影響服務。不過,您不必在目標機器採用上面所提的記錄檔來除錯。當伺服器失敗時,會再重新執行復原程序。如果無法復原,便會還原舊的 OS。如果還是失敗,可能就是硬體或網路的問題,這時候就必須換掉伺服器了。 「Cron」工作/作業排程器 管理員通常覺得將「cron」工作移轉到 Windows 工作排程器事件比較有利。在大部份的情況下,Microsoft Interix 2.2 和 SFU 都容許管理員將「cron」移轉到 Windows 2000,而不做任何變更,讓管理員逐漸轉移排定的事件和指令碼,而不影響作業,也就是說,在移轉時,排定的事件仍然可以當作「cron」工作來執行。移轉之後,「cron」工作就可以移轉到 Windows 工作排程器事件了。Windows 工作排程器與事件記錄的整合較佳。 伺服器移轉程序 預先規劃步驟和基本需求 要在不影響作業的情況下,把伺服器從一個作業系統移轉到另一個,必須具備一些基本資訊。在知道要移轉幾個伺服器之後,就必須自動收集資訊,如伺服器名稱和網路資訊。這個自動化程序會產生資訊,並且製作格式,讓它在移轉伺服器 (也就是 pre-provision 資料庫檔案) 時自動派上用場。這些檔案含有專屬設定,如伺服器名稱、網路資訊、伺服器角色等,可以在進行自動安裝時使用。 進行自動伺服器安裝時,有兩種方法 (加上這兩種方法的混合) 可以使用,而且是現買現用6。它們是: 以 winnt.exe/winnt32.exe、unattend.txt 檔案 (回應檔)、應用程式軟體安裝的指令碼、以及企業部署工具進行原生安裝。有關這些工具的詳細解說,請參閱 Windows 2000 部署手冊。這個方法是結合固定格式的檔案 (稱為專屬性資料庫檔案 (UDF)7) 和 unattend.txt 回應檔,共同自動建置伺服器。 完全複製安裝的伺服器組態。您可以使用 Windows 2000 系統準備 (Sysprep) 公用程式和影像複製公用程式 (Sysprep 是在 Windows 2000 產品 CD 當中,但影像複製公用程式不是8)。這個方法是把 sysprep.inf 檔當作回應檔使用,本文稍後將有更詳細的解說。 混合方法。您可以使用系統準備工具 (sysprep)、影像複製公用程式、以及 Windows 2000 企業部署工具,在每一個具有特定角色的伺服器上,建立基本的伺服器建置,其中包括作業系統、應用軟體、系統公用程式、備份代理程式、防毒軟體等。這一點與上述兩者一模一樣。然後再使用 quiet (以指令碼寫成) 版本的應用程式原始安裝功能,安裝其他的應用程式,這個安裝作業會在複製時中斷,或者不一定安裝在每一個伺服器,因此並不在基本影像當中。 第一個方法和第二個方法最大的不同,在於將影像安裝在目標機器的時間。通常複製方法所用的時間比較短。比方說,Hotmail 採用第 3 個方法時,建置伺服器的時間總共是 60 分鐘,再加上 15 分鐘完成最後的自訂作業。而第 1 個方法至少就得花上 90 分鐘,再加上 15 分鐘完成最後的自訂作業9。 系統管理套件 (如 Microsoft Systems Management Server) 可以根據資產管理資料庫產生 UDF 檔案。許多公司都將資產資訊 (如伺服器名稱和網路資訊) 儲存在專屬資料庫當中,或者使用網路裝置,將資訊存放在 Bootp 或「動態主機設定通訊協定 」(Dynamic Host Configuration Protocol,DHCP) 表格中。根據移轉作業所用的伺服器數目而定,最划算的方法可能是產生一個公用程式來摘錄資料庫或 bootp 表格中的資訊,然後自動建立 UDF 檔案。Hotmail 是在移轉程序開始時實作這個案例,以 Perl 指令碼動態建置 sysprep.inf。 至於原始安裝方法的討論內容,已經超出本技術個案研究的範圍。其相關資訊,請參閱 Windows 2000 Server Deployment Planning Guide 。 不管您選擇上述哪一種方法,都必須預先收集同樣的基本資料。 使用影像進行部署 如果要移轉大量的伺服器,最有效的方法是透過影像軟體,例如 Microsoft 遠端安裝服務 (RIS)10、Norton Ghost、Altiris eXpress、StorageSoft ImageCast。製作影像可以讓管理員將影像從網路或 CD 迅速「推上」「un-provisioned 伺服器」,其速度比手動安裝或原始自動安裝 Windows 2000 (亦即 Microsoft Windows NT® 或 Microsoft Win32® 方法) 更快。 建立基本影像 – 建置參考機器 建立基本影像是 syprep/影像化方法部署大量伺服器的關鍵。在大部份的情況下,一般影像多半都是部署在資料中心的伺服器上。在伺服器建置的迷你安裝部份結尾時,會自動啟動指令碼,進一步自訂伺服器的角色。這時候您一定要讓不同類型的硬體使用同一個影像,或者在 UDF 檔案中指定。不過如果使用 sysprep 1.1 時,那麼用來建置參考伺服器的硬體,以及目標伺服器上的硬體,只要使用同樣的 Windows 2000 HAL11 就可以了。Windows 2000 為採取反向相容,而支援「Advanced Configuration and Power Interface」(ACPI) 規格,以及許多廠商實作的「進階電源管理」12。ACPI 是 APM 的後續和代替規格。因此 Windows 2000 Server/Advanced Server 作業系統 (OS) 會偵測出參考伺服器和目標伺服器之間的其他所有硬體差異,並且安裝適當的裝置驅動程式。但是如果要進行自動安裝,就必須在 %systemdrive%\sysprep\$OEM$ 目錄結構中提供必要的裝置驅動程式檔案13。 基本影像通常都包括所有的基本軟體在內,如作業系統、管理軟體、以及自動軟體等。待影像安裝之後,就可以用後置作業系統指令碼,來安裝每個機器的專屬軟體和設定。 影像用途通常都是首次展示伺服器、部署主要更新 (如服務封包)、重新部署軟體/硬體失敗方塊、以及重新準備讓伺服器扮演另一個角色。不過每一個影像的建立必須一致,而且最好能在參考伺服器使用回應檔上建立影像。回應檔不只是將伺服器建立作業自動化,並且要在建立影像的過程當中排除人為錯誤。有關回應檔的詳細資訊,請參閱 Sysprep 更新套件的 \Docs 所提供的 Microsoft Windows 2000 Guide to Unattended Setup (Unattend.doc)。 Sysprep 本節將針對與下面〈部署選項〉一節有關的 sysprep 公用程式,提出基本的一般說明。 Windows 2000 系統準備 (Sysprep) 公用程式是 Windows 2000 產品 CD \Support\Tools\deploy.cab 當中的一個元件。Riprep 則是與 sysprep 相仿的公用程式,負責準備 Microsoft RIS 所用的影像。 請注意 Microsoft RIS 不支援 Windows 2000 Server 或進階伺服器。RIS 也要求使用者提供基本資訊,因此不能用於完全自動化的安裝作業。 Sysprep 是一個簡單的公用程式,負責準備電腦硬碟進行下列作業: 複製磁碟:如果硬體相似的話,Sysprep 可讓您複製完整安裝的系統。它會移除/修改本端電腦安全識別碼 (SID),讓影像得以複製。同時也會修改作業啟動環境,像是在下次開啟伺服器時,啟動讓迷你安裝精靈。 將迷你安裝自動化:Sysprep 會建立一個簡化的 GUI 模式安裝 (稱為迷你安裝),只要花 3 到 10 分鐘的時間 (而不是 20 到 30 分鐘),並且只提示使用者輸入必要的使用者專屬資訊,例如,接受 Microsoft 軟體授權合約、輸入產品金鑰、以及加入他們的使用者和公司名稱。 審核 Sysprep 可以審核系統,讓系統回到出廠時的狀態。 Sysprep 會移除每一個伺服器的專屬設定,並且準備讓硬碟機進行磁碟複製。當目標伺服器第一次開機時,就會啟動迷你安裝精靈。迷你安裝精靈會問一些手動安裝時會問的問題。不過,這些問題都可以用回應檔 (sysprep.inf) 事先回答,那麼接下來的還原程序就可以自動進行。當影像置於本端伺服器上適當的分割區之後,會再重新開機,迷你安裝程式會先在 A: 碟尋找 sysprep.inf。如果找到了,便採用它,如果找不到,迷你安裝 (setupcl.exe) 便會在該影像所含的 %systemdrive%\sysprep\ 資料夾當中尋找。 將迷你安裝作業自動化的一個方法,是在每一個伺服器各插一片一般開機片,從磁片開機,再將「做過系統準備的」影像回復到目標機器上,然後再設定啟動順序,把磁片開機擺在最後一位。另一個方法是把 sysprep.inf 範本檔放進每一個影像當中。如果您選擇後面這個方法,可能得考慮將影像分割區格式設為 FAT32,並且轉換為 NTFS 檔案系統,當作在安裝完畢之後的後置 OS 作業。這樣就可以在啟動迷你安裝精靈之前,先在分割區上更新 sysprep.inf 了。 請注意 目標伺服器建置之後,就應該將軟碟機移除,或者擺在伺服器開機順序的最後一位。如果以後伺服器需要 re-provision 或重新設定用途時,可以再把 A:\ 碟擺在開機順序的第一位。 待作業系統「執行系統準備」之後,就可以用各種協力廠商影像製作工具來製作影像了。您可以用各種方法將影像傳遞到遠端方塊,包括網路 (單點傳送或多點傳送) 或 CD。有關 sysprep 和回應檔的詳細資訊,請參閱 Windows 2000 Server 產品 CD 所檢附的 MS Windows 2000 Guide to Unattended Setup (Unattend.doc) 白皮書。 部署選項 由於 Windows 2000 部署和移轉作業可以遠及分散各處資料中心的幾千部伺服器,而必須採用「非互動式的」作業系統、middleware 軟體、以及應用程式安裝作業。客戶可以從許多技術當中選擇一個,如開機管理員、Pre Execution Environment (PXE) 伺服器、或是 CD-ROM 或磁片上的自動和回應檔。 開機管理員在硬碟機上設了幾個分割區,讓管理員得以在作業系統載入之前,先變更開機參數或者執行事件。事件包括重新設定伺服器、變更基本輸入/輸出系統 (BIOS) 設定、或者編輯伺服器組態 (如網路參數)。 採用 PXE 的網路介面卡 (NIC) 與開機管理員的用途差不多,不過它是從網路開機,而且伺服器 BIOS 必須支援「從網路開機」。 以磁片或 CD 部署,是部署少量伺服器或工作站所用的傳統方法,如果要在每一個伺服器使用自訂回應檔來部署伺服器,也可以採用這個方法14。 不管是採用哪一種類型的伺服器開機機制來部署伺服器,前提一定是要使用部署機制,將「做過系統準備的」影像推上伺服器,再用 sysprep.inf 設定每一個伺服器的專屬設定,然後根據伺服器角色安裝適當的應用程式。 開機管理員 由於許多現有伺服器不見得都具有採用 PXE 的網路卡,因此必須使用另一個方法,在作業系統載入之前先控制伺服器。開機管理員是本端硬碟機上的一個小分割區,只要電腦一開機就跟著啟動。開機管理員可以是各種作業系統,包括 FreeBSD、Linux、Windows 98 和 DOS。它們通常會載入 IP 堆疊,然後連接到一個中央管理伺服器或開機伺服器。 開機管理員會宣告本身給管理伺服器,並且判斷在本端硬碟機啟動之前,是否有任何事件需要執行。這些事件包括執行指令碼 (例如,自動安裝 Windows 2000) 或者在硬碟機安裝新影像在內。如果沒有任何事件在等候,開機管理員便會從主要作業系統分割區開機。 下面這個流程圖將告訴您開機管理員如何運作。 請注意 附錄 1A 當中有一個 autoexec.bat 範例可能需要加以修改,在使用開機管理員分割區時,支援硬碟機代號。 PXE PXE 開發與開機分割區十分類似,但是硬碟機上的實體開機分割區,會換成整合到 NIC 中的開機可程式化唯讀記憶體 (PROM),這樣才能使用整個硬碟機。許多公司都是根據含有 PXE 的 Intel Wired for Management (WFM) 開端 http://developer.intel.com/ial/wfm/wfmover.htm ) 來建置產品,以便利用 NIC 和附在 PXE 伺服器上的 BOOT ROM,來判斷伺服器的啟動方式。像 Altiris eXpress 5.0 版 ( http://www.altiris.com ) 或 Symantec Ghost ( http://www.symantec.com ) 這類產品都支援 PXE,並且容許操作員在網路開機時自動安裝影像。如果目前正在使用另一組硬體,而且每一個伺服器也沒有採用 PXE 的網路卡,這些產品就容許操作員建立磁片,或者在本端硬碟機安裝小型的開機管理員分割區。 Pre Execution Environment (PXE) 是 Intel Wired for Management (WFM) 規格的一部份。您可以利用 PXE 技術,在遠端設定或重新設定系統,即使是空的硬碟機也行。電腦系統已經在本端 BIOS 載入通用服務代理程式,可讓系統與遠端伺服器產生互動,以便在網路上動態擷取所要的開機影像,來安裝作業系統和新系統的使用者組態,而不需要技術人員介入。 如果機器的 BIOS 支援「網路開機」設定,而且具有採用 PXE 的 NIC,那麼就可以用軟體套件 (例如 Altiris eXpress, http://www.altiris.com ),透過多點傳送技術同時部署大量伺服器。 PXE 開機影像通常會載入 IP 堆疊,然後連接到中央管理伺服器。用戶端會對管理伺服器宣告它本身,並且判斷在本端硬碟機啟動之前,是否有任何事件需要執行。這些事件包括執行指令碼 (例如,自動安裝 Windows 2000) 或者在硬碟機安裝新影像在內。如果沒有任何事件在等候,用戶端電腦便會從主要作業系統分割區開機。 下面這個流程圖將告訴您 PXE 如何運作。 在不久的將來,也許大家會以 PXE 設定伺服器。大部份的 PXE 伺服器都有中央主控台,可讓管理員指定伺服器設定,如名稱和網路設定等。主控台可以產生 sysprep.inf 影像,並且將影像置於在載入影像時可以讀取的位置。這樣,管理員就可以管理所有來自中央資料庫的資訊,並且將部署作業自動化。 網路開機片或 CD-ROM 在自動部署作業採用網路開機磁片開機,仍是伺服器部署作業自動化一個有效且好用的方法。這個方法的缺點是,操作員必須在建置之前,先在伺服器插入網路開機片,等伺服器建置程序進行之後,又必須取出開機片。 不過,現在各種硬體製造商推出的許多伺服器,已經沒有這個問題了。它們改善了許多地方,包括在遠端自動修改裝置開機順序,或者載入開機片當作虛擬裝置,讓開機片 (不管是真的或虛擬的) 得以一直保持在載入狀態。 只有在伺服器第一次安裝在框架,或者必須載入或執行新影像或前置 OS 作業時,才會把開機片設為開機順序的第一個裝置,而不是每次開機時都要用到。伺服器第一次啟動時,是從磁片開機。磁片會載入 IP 堆疊,並且判斷是否有事件在等候。如果沒有發現任何事件在等候,就修改開機順序,把本端硬碟機排在軟碟機之前。伺服器會自動重新開機,而且通常是從 C: 碟開機。下次當伺服器需要重新設定時,就在遠端修改開機順序,把 A: 碟擺在第一位,並且自動排定重新開機的時間,讓伺服器從 A: 碟開機,然後在這裡下載新影像。 開機片含有每一個伺服器的專屬 sysprep.inf,這一點可以透過下列一種方式完成: 所有的磁片都會在製作影像之前,先以一個專屬的 sysprep.inf 加以建立。每一個伺服器都有一個專屬的磁片。 每一個伺服器都含有同樣的一般網路開機磁片,在開機時查詢伺服器的序號,或是該伺服器專屬的參數。假設現在要查詢伺服器序號15 (詳細資訊,請造訪 http://www5.compaq.com/support/files/server/us/download/8935.html)。傳回的值是作為查詢 pre-provision 資料庫的金鑰,並且為該伺服器產生一個專屬的 sysprep.inf 檔。sysprep.inf 會複製到伺服器的 A: 碟,作為迷你安裝的回應檔使用。 如果磁片一直放在軟碟機當中,伺服器便可以隨時 re-provision,並且套用專屬設定。 為了避免每次都以磁片開機,有的硬體廠商 (如 Compaq) 容許管理員以指令碼編寫 BIOS,只要用不著開機磁片,就從開機順序中移除它。這樣不但節省開機時間,同時也避免不慎發生重新設定伺服器的情況。 您可以參閱附錄 1A 的一般網路開機片 autoexec.bat 範例。所有必需的檔案和網路分散共用區都可以從這裡下載。這個開機片和相關的分散共用區會執行完整的自動還原作業,將 sysprep 還原到伺服器。 請注意 要還原的實際影像並不包括在內16。不過,您應該可以把伺服器上呼叫的 autoexec.bat 檔、指令檔、和指令碼檔案全部執行一次,以了解如何透過 sysprep 影像還原,完整的在遠端自動安裝 Windows 2000 Server/Advanced 伺服器以及應用程式和公用程式。 在本個案研究的詳細範例,與 Hotmail 所用程序之間,唯一的差異是 Hotmail 採用之前提過的一個開機管理員方法,來載入預先執行作業系統。而這個方法會啟動 sysprep 影像還原,而不是使用一般開機片。FreeBSD 已經實作並且使用這個開機伺服器機制,因此決定繼續用它部署 Windows 2000。 Hotmail 移轉方法 前言 下面這個程序大致勾勒出將 FreeBSD 伺服器移轉到 Windows 2000 Server 的整體程序。 參考伺服器:影像建立程序 – 主要伺服器影像 建立參考伺服器: 安裝 Windows 2000 Server 加上基本系統軟體,亦即,服務封包和安全警示。設定 Microsoft Internet Information Server 5.0。 安裝和設定 Microsoft Services for UNIX、Interix 2.2、雜項資源套件工具、以及 Windows 2000 支援工具。 執行由 Windows 2000 和 Internet Information Services (IIS) 第 5 版自動執行的安全指令碼 (請參閱附錄 4)。 準備讓參考伺服器進行複製。 建立 %systemdrive%\sysprep 目錄。複製 sysprep.inf、setupcl.exe 並且建立 $OEM$ 目錄結構 cmdlines.txt 檔等等。請參閱 http://www.microsoft.com/windows2000/downloads/deployment/sysprep/default.asp 在參考伺服器上執行 sysprep。 透過影像複製公用程式,將影像複製到遠端開機伺服器。 目標伺服器:FreeBSD\Apache 到 Windows 2000\IIS 5 的重建程序 必須開機三次 (處理時間總共是 60 分鐘)。 使用 kickstart 伺服器,排定分散影像和指令碼檔案的時間表。該指令碼檔案可以: 製作硬碟機格式,並且分割硬碟機,修改某一批伺服器的目標機器上的開機核心。 透過 Perl 指令碼自動產生 sysprep.inf。 設定在預先排定的時間執行關機/重新開機,將 sysprep 影像還原到伺服器。 在指定時間,執行在前一個步驟排好的重新開機作業。 第一次重新開機之後,便從 kickstart 伺服器下載 sysprep 影像、將專屬 sysprep.inf 複製到 %systemdrive%\sysprep 磁碟機、並且自動將伺服器重新啟動 (第二次重新開機)。 系統啟動時,會執行下列作業: 執行指令碼編寫的迷你安裝精靈,使用預先建立的 sysprep.inf 檔來回答所有的迷你安裝問題,如主機名稱和 IP 等。 修改開機順序,例如,將軟碟機擺在開機順序的最後一位。 完成迷你安裝作業時,將伺服器自動重新開機 (第三次重新開機)。 系統啟動時,會執行下列作業: Windows 2000\iis5\SFU\Interix 完全正常運作,必要時,也可以隨時將指令碼檔案進行 rdist 分散作業。 從安裝程式自動呼叫 Rdist,以便進一步部署自訂的指令碼。 確認 Windows 2000 Server\IIS 5 建置影像的品質並且加以測試 除了效能測試和功能實驗室之外,Hotmail 還有三個預先生產測試組態。它透過與生產實作 (RDIST、「cron」、指令碼檔案) 同樣的機制,將軟體分散到測試環境。這一點加強了測試軟體分散功能的優點,並且讓工作人員在用於生產之前,先行熟悉軟體分散方法。程式碼的狀態會決定適當的測試環境。實驗室以外的最初測試是在環境 1 進行。待證實該程式碼在環境 1 的穩定性之後,再於環境 2 加以測試,依此類推。 測試環境: 環境 1 –;測試前端 Web 伺服器 (所有的 Windows 2000),測試儲存伺服器。 環境 2 –;測試前端 Web 伺服器 (50% 的 Windows 2000,50% 的 Apache),測試儲存伺服器。 環境 3 –;測試前端 Web 伺服器 (50% 的 Windows 2000,50% 的 Apache),生產儲存伺服器。 執行測試 (功能和效能): 測試伺服器的品質:從遠端開機程序/sysprep 影像建置。 偵測錯誤,在參考機器上實作修改程式。 透過遠端開機程序,重新分散影像。 重複程序 – 除了明顯的品質測試之外,這個重複執行建置、部署、測試的程序,也提供機制讓您排練實際的移轉作業。 Stake holder 登出: 在排定將變更分散到生產環境之前,Stake holder 必須執行一個正式程序和登出作業。 作業/客戶服務/開發。 安全保護 (幫助對抗入侵者,保護內部公司安全)。 將金色影像分散到生產環境 採用與測試和開發同樣的遠端開機程序。 應用程式移轉 所有 Hotmail 的 Web 伺服器,都是雙重 Pentium 處理器伺服器。原先這些伺服器是以 FreeBSD 建置,把 Apache 當作 Web 伺服器加以執行。大部份的網頁都是由 Perl CGI 所產生。由於所用的 Apache 並不是多緒版本,因此每一個要求都由另一個由上層程序衍生的 Apache 程序所處理。衍生新程序非常昂貴,而 Perl 又是直譯過的語言,因此這些機器的效能並不是很好。 當 Microsoft 購買 Hotmail 時,開發小組所採取的第一個動作,就是將所有的 CGI 從 Perl 轉換成 C++。其原因如下 #151; 最重要的原因是效能。為了有更好的偵錯工具,當這個動作完成時,會有好幾個開發人員建置該程式碼,並且在 Windows NT 上執行。 完成這個動作之後,Windows NT 和 Microsoft Visual C++® 便成為開發環境。程式碼會在 Windows NT 上撰寫和除錯,然後在 FreeBSD 建置和測試,這樣比較容易除錯。這時候,生產碼仍是在 FreeBSD 以 gcc 建置為個別 CGI。 後來因為許多技術和效能問題過於嚴重,於是考慮將即時網站從 FreeBSD 移到 Windows 2000。由於前端機器急速增加,與 Hotmail 的擴增並駕齊驅,使得在財務上、運作上、以及實際上都很難維護機器增加的速率。因此必須想辦法壓抑伺服器的效能。目前有好幾個 FreeBSD 方法都被列入考慮範圍,包括將程式碼放在 Apache 模組當中 (Apache 相當於 Internet Server API [ISAPI]);切換到 Zeus、支援 ISAPI 的多緒 UNIX Web 伺服器、以及一些 Web 伺服器。同時,還需要支援其他語言。要支援這麼多語言,必須使用 Unicode。FreeBSD 能夠使用的 Unicode 支援不夠充分,必須花時間努力開發,才能符合我們的需求。Windows 2000 已經發行 beta版,因此可以考慮作為這些問題的解決方案。國際化小組在調查 Windows 2000 Unicode 支援之後,判定它符合要求。接下來就是測試效能。 Perfmon 顯示了為數可觀的內容切換。根據進一步的調查顯示,這是因為在配置和清出程序堆疊的記憶體時,發生執行緒阻隔。為了解決這個問題,因此在每一個執行緒配置一個私人堆疊。只要一出現要求,每一個執行緒就會建立和損毀堆疊,此舉不但大量減少內容切換,同時也解決最大的穩定性問題:漏失記憶體。程式碼中所有的記憶體管理呼叫都被全數覆寫。只要一建立新的、刪除的、malloc 或另一個類似的呼叫時,便從執行緒的私人堆疊配置或清出記憶體。該堆疊會在要求與要求之間被擲出,因此也無從漏失記憶體。 第二名的效能改善,要歸功於不必再對每一個要求載入和剖析 Hotmail 專屬組態檔案。過去每執行一個 CGI,都必須載入和剖析這些檔案。組態檔是在載入 ISAPI extension 時載入和剖析,並且將資料保存在共用記憶體當中。自從做了這些主要變更和少數其他次要變更之後,每秒能夠處理的要求數目幾乎飆到即時網站的兩倍之多。執行舊 cgi 指令碼的速度,也快了將近 30%,因為啟動作業不必再剖析組態檔案或分叉程序了。 結果顯示在幾個月內,不必大量更動程式碼庫,就明顯提升了同一個硬碟的產量。幾乎所有的應用程式邏輯都與 FreeBSD 版的程式碼庫一樣。 一般說來,開發小組在使用現代互動式開發環境來建立 Hotmail 前端程式碼庫之後,其產量立即大幅飆升,令人滿意。如果您在即時網站上使用 WinDBG 立即追蹤和診斷問題,這個方法是比將 gdb 附加在暫時 cgi 程序,或者使用「printf 除錯」要好得多。現在只要幾分鐘 (而不是幾天) 的時間就可以找出並解決錯誤了。過去使用 FreeBSD 時,由於缺乏工具的關係,很難發現錯誤和記憶體漏失的情形。現在使用 Windows 2000 和 IIS 5 之後,不但有充分的工具讓效能發揮到最高點,同時也能隨時清楚程式碼正在做什麼。 附錄 附錄 1 - 下載程式 http://www.Compaq.com 取得。 此處所檢附的下載程式,含有一個分散目錄結構18,可以架設在實驗室的伺服器上,並且作為原型,幫助客戶和廠商熟悉開發完全自動化的伺服器建置程序。目錄結構最上層的摘錄檔案後面是: Rootshr\ Prod BootFloppy 這個程序是採用一般開機磁片,插進每一個需要建置的目標伺服器當中。開機磁片檔可以在 rootshr\bootfloppy 目錄19 下找到。要使用這個開機片時,還需要準備一個含有 command.com、io.sys、msdos.sys、和 drvspace.bin 的 Windows 98 開機片。然後將 rootshr\bootfloppy 目錄的內容,複製到可以開機的磁片當中。 請注意 每一個目標機器所用的開機磁片都一樣。autoexec.bat 檔的資料流、此程序所呼叫的其他指令檔和指令碼中都含有備註,說明每一個常式的功能。 下載程式 (Rootshr.exe) 不含實際的 sysprep 影像。您必須建置一個參考機器來執行 sysprep,然後再使用協力廠商工具,將影像複製到它們分散伺服器的 \rootshr\prod\images 目錄下才行。此外,這個下載程式的指令檔和指令碼中,也參照了非 Microsoft 工具和公用程式。但是,下載程式卻略過此技術個案研究範例所用的協力廠商工具的執行檔,而在分散共用區上該執行檔所在的地方,改用一個具有類似名稱 (.txt) 的文字檔。文字檔的內容,含有通往協力廠商網站的 web 連結,您可以在那裡找到工具和執行檔。比方說,「systype.exe」就在 Compaq SmartStart 指令碼工具箱當中。該檔在共用區上稱為「systype-exe.txt」,其中含有通往 Compaq SmartStart 指令碼工具箱位置的 web 連結。 一般程序將說明如下: 將 \rootshr\bootfloppy 目錄的內容,複製到含有 Windows 98 開機檔案 (亦即 command.com、io.sys、msdos.sys 和 drvspace.bin) 的開機磁片。 根據下面指示編輯 autoexec.bat 檔:將 \\MyServer\rootshr 換成實驗室分散共用區的實際伺服器名稱,亦即 \\\rootshr 將 \rootshr\prod 目錄複製到網路分散伺服器。將 rootshr 作為 rootshr 一起共用。 建置一個要作為主要影像伺服器使用的「參考伺服器」20 http://www.compaq.com (此技術個案研究範例所用的 Compaq SmartStart Scripting Toolkit,可以在下述網站下載: http://www.compaq.com/manage/toolkit.html ). Dell Computer: http://www.dell.com Symantec: http://www.symantec.com/ (有關 Symantec Ghost 6.5 的詳細資訊,請造訪: http://enterprisesecurity.symantec.com/products/products.cfm?productID=3 ) Altiris eXpress:( http://www.altiris.com ) StorageSoft: http://www.storagesoft.com/ (有關 StorageSoft ImageCast IC3 的詳細資訊,請造訪: http://www.storagesoft.com/ic3/ )。 PowerQuest: http://www.powerquest.com (有關 PowerQuest Drive Image Pro 的詳細資訊,請造訪: http://www.powerquest.com/driveimagepro/ ) 附錄 1A - 自動化部署的 Autoexec 下面是可以用在磁片、開機分割區或 PXE 開機影像的一個範例 autoexec。您可能得修改一些磁碟機代號,才能讓開機分割區或 PXE 使用 autoexec.bat。系統假設您已經用適當的設定,為每一部電腦建立了 sysprep.inf,而且您也具備有效的分散共用區。 附錄 2 – Windows 2000 Active Directory 設計 此處是採用委派的 DNS 子網域方法來命名。尤其要注意的是,internal.hotmail.com 是 Windows 2000 名稱區的根。DNS 子網域名稱和 Windows 2000 網域名稱之間採一對一對應,而且這些子網域名稱都是一樣的。「完整的網域名稱」(Fully Qualified Domain Names,FQDN) 與本節後面注意事項所提的會有一些不同。 基本上 Windows 2000 網域名稱是對應到 pre-Windows 2000 FreeBSD front-door 叢集 DNS 子網域。在伺服器移轉時,所有在 law3 FreeBSD 叢集當中的 front-door 機器 (具有 %hostname%.law3.hotmail.com 的 FQDN),都會併入 law3 Windows 2000 子網域中。 請注意 在移轉到 Windows 2000 之後,law 3 叢集當中 Windows 2000 front-door 機器的 DNS FQDN,就是 %computername%.law3.hotmail.com,而不是 %computername%.law3.internal.hotmail.com,即使 internal.hotmail.com 是 windows 2000 名稱區的根也一樣。唯一的例外是網域控制站。例如,Win2K 網域 (稱為 internal.hotmail.com) 的 Windows 2000 網域控制站的 FQDN,就是 dcx.internal.hotmail.com。同樣的,Windows 2000 網域 (稱為 Law3.internal.hotmail.com) 的 Windows 2000 網域控制站的 FQDN,是 dcx.law3.internal.hotmail.com。比方說: Windows 2000 Domain Controller FQDN Member Server FQDN dc1.law3.internal.hotmail.com f1.law3.hotmail.com dc2.law3.internal.hotmail.com f352.law3.hotmail.com dc1.law6.internal.hotmail.com F12.law6.hotmail.com 開發 Windows 2000 名稱區設計的最佳方法,是先了解有哪些目錄商業應用程式是在支援之列,同時假設該設計是由一個只含單個網域的生產對外樹系所組成22。接下來就是指出因素 (這個動作最好能夠移到多網域名稱進行)。 因此一開始我們是從只含單網域之單樹系的設計階段著手。不過,在 pre-Windows 2000 組態當中,FreeBSD 機器出現了重複的主機名稱。每一個 FreeBSD 伺服器叢集都含有一個範圍的主機名稱,這些主機名稱在該叢集當中都是不重複的。一個叢集大約有 300 個前端機器,每一個叢集都對應到一個 DNS 子網域,例如,law1.hotmail.com、law2.hotmail.com、law3.hotmail.com 等。但是每一個叢集所用的主機名稱都在同一個範圍內。由於 DNS 階層本質的關係,這些機器的 FQDN 都不會重複。舉個例說: 如果某一部伺服器在 DNS 網域 law1.hotmail.com 和 law2.hotmail.com 當中的主機名稱為 f1,依此類推,其他伺服器的名稱就是 f1.law1.hotmail.com/f1.law2.hotmail.com23 到 f300.law1.hotmail.com/f300.law2.hotmail.com。 理論上來說,我們只能使用一個 Windows 2000 網域,並且建立一個與伺服器所用 DNS 名稱區相符的階層 DNS 名稱區。但是,在 Active Directory 的網站容器中難免會有撞名的情況發生。這是因為在現版 Windows 2000 當中,將機器物件存放在 Active Directory 的預設行為是採用簡稱,而不是 fqdn 或 ldap 名稱。比方說,存放在 Active Directory 的是 server name = f1,而不是 cn=f1、cn=computers、dc=law2、dc=internal、dc=hotmail、dc=com 等 ldap 名稱,或是 f1.law2.hotmail.com 等 dns 名稱。 因此,基於上述種種原因,Windows 2000 網域當中的主機名稱絕對不能重複。以技術上來說,從 FreeBSD 移轉到 Windows 2000 時,要更改機器名稱並不難。但是,它會在移轉作業的關鍵路徑上,另外加上一層應用程式迴歸測試,而導致排程上的失誤。另外還有一個方法,是將同樣簡稱的機器名稱,放在不同的 Windows 2000 網域中。後者是在當時選取,不會有排程上的失誤。因此所做的決定也不會對排程產生負面影響。網域數目減少,排程失誤的風險當然也跟著降低。 後面這個例子,正可以說明為什麼最後出現了 18 個網域:Law1-Law15、Pav0、Pav1 和 internal.hotmail.com。由於所有的伺服器已經全部改名,因此該環境下除了網域控制站之外,已經沒有重複的主機名稱存在。下一個邏輯步驟就是收合網域,將名稱重複的 DC 去除。比方說,如果所有的網域都收合到 objects.internal.hotmail.com 或 internal.hotmail.com 當中,就不需要 dc1.law5.hotmail.com 了。 如果您的瀏覽器不支援內嵌框架, 請按一下這裡,在單獨的頁面檢視。 附錄 3 – Windows 2000 網站拓樸 Hotmail Windows 2000 網站是對應到伺服器所在的實體資料中心。下面這個符號就代表一個網站。 其中 datac1 = data center 1;datac2 = data center 2,依此類推。 每一個實體資料中心都含有兩個來自 Windows 2000 樹系 (internal.hotmail.com) 的網域控制站。這是為了讓所有的網域查詢從本機解析到資料中心。 下面這個圖解所示範的是三個網站:Datac1、Datac2 和 Datac3。Windows 2000 網站是子網路的集合。在設計網站時,網站應該是一個具有高頻寬和優質連線的網路連線區域。根據 Hotmail 的記錄規劃,每一個資料中心都是一個 Windows 2000 網站。 雖然討論決定 Windows 2000 網站的因素,並不在本技術個案研究的範圍之內。不過,GC 和「彈性單一主機操作 」(Flexible Single Master Operation,FSMO) 角色持有者分配還是與本主題習習相關。 網站中通用類別目錄和 FSMO 分配的一般方針: 每個網站至少放置 1 個 DC 和 1 個 GC,以便在本機查閱 GC。如果能放置兩個 GC 更好,讓本機有重複項目。 在非 GC DC 放置基礎架構主機 (不是必要條件)。 在 Hotmail,每一個網域都有一個 GC,這雖不是必要條件,卻也無妨。 FSMO 資料點 樹系通用的角色有兩個 (每個樹系只能有其中一個): 網域命名 架構 網域通用的角色有 3 個 (每個網域必須具有其中一個) PDC RID 基礎架構 下圖將描述 FSMO 角色持有者:
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-05-17 18:46:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!