可靠性是眾多企業(yè)日常運行所關(guān)注的重點。毫無疑問,對關(guān)鍵應(yīng)用程序的干擾將對用戶、客戶以及業(yè)務(wù)伙伴的生產(chǎn)和收入造成重大損失。企業(yè)必須實施高可用性計劃以減少由軟件、服務(wù)器、網(wǎng)絡(luò)甚至外部運營商帶來無法預(yù)料問題所造成的影響。
高可用性(HA)技術(shù)可以充分利用虛擬化所提供的靈活性,但是虛擬化本身并不是一個解決方案。更強大的可用性綜合了虛擬化的工具和更傳統(tǒng)的方法,其中包括仔細(xì)的規(guī)劃、設(shè)計以及對你的虛擬環(huán)境的連續(xù)監(jiān)控。一旦你對虛擬數(shù)據(jù)中心中高可用性的基本概念有了了解,那么你的下一步就是要想方設(shè)法熟悉和實施高可用性方法了。
針對高可用性的基礎(chǔ)設(shè)施規(guī)劃
在一個虛擬環(huán)境中建立高可用性通常需要對基礎(chǔ)設(shè)施進行充分的設(shè)計和管理。從項目一開始,正確的設(shè)計就是非常重要的,因為必須針對關(guān)鍵應(yīng)用程序部署冗余硬件。例如,一個交易數(shù)據(jù)庫可能需要配備兩個以上的服務(wù)器以及對LAN和SAN的冗余訪問。其目的就是要消除應(yīng)用程序及其用戶之間的故障點。
總之,最好是從一開始就規(guī)劃和部署高可用性基礎(chǔ)設(shè)施,并為每一個物理主機分配一個冗余虛擬機(VM)。否則,你就有可能要在之后某個時間對生產(chǎn)環(huán)境進行架構(gòu)變更,而這將帶來穩(wěn)定性和性能方面的風(fēng)險。
“除非你真的喜歡定期重建整個基礎(chǔ)設(shè)施,否則你最好在一開始就用正確的方法做好正確的事,”Kroll Factual Data(一家總部位于科羅拉多州Loveland的商業(yè)信息供應(yīng)商)的核心技術(shù)架構(gòu)師、微軟MVP Christopher M. Steffen說。但是,對于那些不太重要的應(yīng)用程序來說,在虛擬機發(fā)生故障之后在同一臺物理服務(wù)器上重啟一個虛擬機則是可以接受的。
對于眾多運行日常業(yè)務(wù)的應(yīng)用程序來說,虛擬化所提供的重啟和實施遷移的靈活性是對可用性性能的一個顯著提升。一臺虛擬機可以在發(fā)生故障后的數(shù)分鐘內(nèi)重啟,而一臺非虛擬機則可能會經(jīng)歷一個較長的停機時間了。
管理工具和程序變化
雖然虛擬化幾乎沒有因為高可用性而改變(當(dāng)然如果真的有的話)基礎(chǔ)設(shè)施的設(shè)計考慮,但是從頂層出發(fā)考慮用于管理高可用性虛擬基礎(chǔ)設(shè)施的軟件和工具的改變則是很重要的。
“你的管理工具套件對于你彈性需求是極為重要的,”Steffen說,他以微軟公司系統(tǒng)套件這類可擴展工具的重要性為例,該工具主要用于實現(xiàn)簡單配置、故障轉(zhuǎn)移以及遷移。在高可用性中的一個顯著發(fā)展趨勢就是出現(xiàn)了容錯(FT)工具,這類工具非常適合于虛擬化。兩個例子包括Marathon科技公司的EverRun系列軟件產(chǎn)品和VMware公司vSphere的容錯功能產(chǎn)品。
專家警告說,虛擬化中的容錯功能只應(yīng)根據(jù)需要使用。“有人認(rèn)為那就是高可用性的未來,一切都將是容錯的,我會告訴他們,他們錯了,”Burton集團公司(一家總部位于猶他州Midvale的IT研究咨詢公司)的高級分析師Chris Wolf說。Wolf認(rèn)為,如果沒有一個令人信服的業(yè)務(wù)需求,那么公司根本不會為無處不在的容錯或冗余物理服務(wù)器的普及而買單。
網(wǎng)絡(luò)連接也產(chǎn)生了新的彈性問題。本地服務(wù)器和存儲設(shè)備的冗余是現(xiàn)成的,也是易于實現(xiàn)的,但是糟糕的網(wǎng)絡(luò)連接性往往會讓最積極的故障轉(zhuǎn)移或集群策略也顯得一無是處。
“我們的網(wǎng)絡(luò)連接是每天都在接受著壓力測試的,”Steffen說,他解釋道,物理服務(wù)器是易于更換的。“但是如果我們失去了與我們所有主要供應(yīng)商的網(wǎng)絡(luò)連接,我們就完了,我們根本無法正常地完成任何業(yè)務(wù)。”Steffen建議管理員應(yīng)對冗余網(wǎng)絡(luò)連接和持續(xù)測試故障轉(zhuǎn)移/故障恢復(fù)機制做好規(guī)劃。
也許,虛擬化高可用性中最重要的但也是最不受歡迎的改變是重點的改變。高可用性在很大程度上是與技術(shù)相關(guān)的,但是其重點卻正轉(zhuǎn)向正確而合適的程序。
通過正確而合適的程序是可以輕松實現(xiàn)虛擬環(huán)境中的可用性的。我們根本無需擔(dān)心在可移除式驅(qū)動器上的文檔副本與PC硬盤驅(qū)動器上的副本是否一致。同樣,管理員也不再需要擔(dān)心虛擬機副本是否是一個完整的機器映像。
只要有一個穩(wěn)定的虛擬機副本,它就可以在主機上重啟而無需擔(dān)心配置或應(yīng)用程序測試等問題。不再需要花費大量的時間精力來讓機器正常運行。與之相反,采取正確的程序就可以快速而高效地恢復(fù)虛擬機。
HA成本削減相當(dāng)昂貴
高可用性涵蓋了多種混合組合,有硬件和軟件組件冗余服務(wù)器、電源供電器、控制器、網(wǎng)絡(luò)適配器、交換機、多路徑軟件和強健的高可用性應(yīng)用。管理員必須部署正確的混合組合為企業(yè)應(yīng)用實現(xiàn)可接受程度的可用性。管理員還糾結(jié)于如何合適的執(zhí)行高可用性技術(shù),即便開發(fā)的很好。根據(jù)Greg Schulz所述,高可用性的有效性會受到不充分的部署和過度的成本削減的威脅。他是Storage IO的創(chuàng)始人兼高級分析師,這是一家技術(shù)和分析咨詢公司。
“當(dāng)然也有場景能夠省錢,通過唯一放置單一的適配器,而不是為第二個適配器支付額外的資金,”Schulz說道,并指出任何用戶和應(yīng)用之間的單點失敗都會危害可用性。失去可用性的代價就是失去收益、生產(chǎn)力和用戶信任,這樣的成本顯然要明顯高于一個冗余網(wǎng)絡(luò)適配器或者交換機的成本。認(rèn)識到可用性沒有單一的方法很重要,而且不用的業(yè)務(wù)應(yīng)用通常需要不同水平的可用性。
Schulz表示竅門就是估計每一個應(yīng)用的重要性并在可用性上做出適當(dāng)?shù)耐顿Y,這樣做就能充分保護每一個應(yīng)用了。
Schulz也給出了分層可用性的底線以及成本的削減只能在非關(guān)鍵應(yīng)用上,那些應(yīng)用可以用低性能或者不好的可接受度。“如果你不能經(jīng)受性能沖擊,你將不得不用一些資金來適應(yīng)正確類型的配置,”他說。
不要只看服務(wù)器。管理員也需要關(guān)注存儲可用性。存儲矩陣之間的同步是數(shù)據(jù)保護和存儲可用性的關(guān)鍵部分。在一個矩陣內(nèi),磁盤重建會減少存儲可用性,尤其是當(dāng)大型硬件驅(qū)動在大型RAID群中部署時。Schulz建議選擇更小的驅(qū)動或者群來更快的恢復(fù)可用性。
另一個存儲可用性錯誤是同步前沒有足夠的高級緩存或者緩沖。Schulz強調(diào)需要在所有磁盤寫入完成后同步整個磁盤狀態(tài)。“假如1%的數(shù)據(jù)人就在緩沖區(qū)中,就永遠(yuǎn)不復(fù)制了嗎?”Schulz說道,“那么整個同步可能就是無用的。”
操作人員的人為錯誤將會破壞可用性
高可用性中最常見的問題主要是人為錯誤,疏忽和自以為了解基礎(chǔ)設(shè)施設(shè)計的錯誤假設(shè)。例如,一個公司可能需要24/7的全天候互聯(lián)網(wǎng)訪問,但是其冗余連接及流量負(fù)載能力從未經(jīng)過測試,因為管理員擔(dān)心這類測試有可能導(dǎo)致對現(xiàn)有用戶的干擾。他們只是假設(shè)冗余訪問是正常運行的。
“現(xiàn)在當(dāng)災(zāi)難來臨時,管理員必須啟用該冗余連接,結(jié)果卻發(fā)現(xiàn)其配置不正確或者其容量未經(jīng)擴展無法滿足正常運行的需求,”Steffen說。“由于人為錯誤或錯誤假設(shè)所造成的故障要遠(yuǎn)比我們估計的故障高得多。”
網(wǎng)絡(luò)架構(gòu)師經(jīng)常會在他們的設(shè)計中忽視簡便性的重要性,從而造成測試的復(fù)雜化以及在安裝、配置、連接等等環(huán)節(jié)出現(xiàn)越來越多的問題。在一個高可用性網(wǎng)絡(luò)結(jié)構(gòu)中應(yīng)考慮一個冗余的LAN交換機。
現(xiàn)在,每個端點都有兩個可能的交通路徑,而故障的關(guān)鍵點也被移除。如果使用了第三臺冗余的LAN交換機(每個端點將擁有三條潛在的交通路徑),那么網(wǎng)絡(luò)將變得復(fù)雜而難以布線,他們需要絞盡腦汁增加第三臺交換機,事實上額外的復(fù)雜性將累及系統(tǒng)的彈性。
部署虛擬機則是另一個主要的人為錯誤。虛擬化允許在物理服務(wù)器之間進行虛擬機遷移而無需過多的直接管理控制。但當(dāng)兩臺冗余虛擬機位于同一臺主機服務(wù)器時,這可能就是一個問題。在這種情況下,共同的主機服務(wù)器將成為一個潛在的單點故障。
“我需要確保虛擬基礎(chǔ)設(shè)施是了解虛擬機是如何分布的,從而就能夠避免那些虛擬機在同一時間位于同一臺主機上,”Wolf說。
從32位平臺遷移至64位平臺將進一步造成基礎(chǔ)設(shè)施升級工作的復(fù)雜化。例如,Steffen報告,在他的組織中從32位微軟虛擬軟件到64位Hyper-V的遷移工作進行得很順利。但是,災(zāi)難恢復(fù)站點所采用的32位硬件將直接使公司陷入不設(shè)防的窘境;64位虛擬機將無法在舊版的32位數(shù)據(jù)恢復(fù)服務(wù)器上正常運行。
“他們不必是完全相同的,但至少你的平臺必須是比較一致的,”Steffen說。“這是我們始料未及的狀況之一。”總之,盡早規(guī)劃高效的災(zāi)難恢復(fù)是非常重要的。企業(yè)經(jīng)常創(chuàng)建大型虛擬機,然后在虛擬機上運行操作系統(tǒng)和應(yīng)用程序而讓它們不堪重負(fù)。這一切都是能夠正常運行的,但問題往往出現(xiàn)在拍快照的時候,或者更糟糕的是在站點之間復(fù)制虛擬機的時候。
“你可能會認(rèn)為GB或TB級無用復(fù)制數(shù)據(jù)是毫無必要的,”Wolf說,“我建議最好是創(chuàng)建精益虛擬機,并最好現(xiàn)在就為復(fù)制做好規(guī)劃,即便復(fù)制并不屬于數(shù)據(jù)保護的范疇。
你的過程是否牢不可摧?
每一個企業(yè)都為計劃、部署和管理可用性開發(fā)了自己的最佳實踐和過程。在創(chuàng)建過程時,確保覆蓋了以下五點,保證保持正確的方向。
1、一種方法并不適用所有人。為應(yīng)用匹配可用性等級,或者更為特殊的是,為正在保護的虛擬機匹配可用性等級。將決策和業(yè)務(wù)需求和目標(biāo)保持一致。為每一個應(yīng)用匹配完全相同等級的可用性是不對的,這樣會過度保護非核心應(yīng)用,而且浪費資金。
2、確保冗余虛擬機分離。虛擬化允許任何VM在幾乎所有服務(wù)器上運行;然而你應(yīng)該在相同的物理服務(wù)器上阻止多種虛擬機非故意遷移或者失敗。遷移工具的配置阻止了單點失敗。
3、監(jiān)控和負(fù)載平衡服務(wù)器性能。用監(jiān)控工具密切關(guān)注每一個物理服務(wù)器的性能。平緩且長期的計算資源短缺可能預(yù)示著服務(wù)器使用的增長,應(yīng)該通過升級解決。突發(fā)性資源短缺可能預(yù)示著非期望的動態(tài)遷移本身會失敗。
4、定期測試可用性戰(zhàn)略。當(dāng)你沒有計劃好時,問題通常會突然出現(xiàn)。任何可用性實現(xiàn)都應(yīng)該定期測試,拉拉插頭或者斷開有線網(wǎng)絡(luò)或者服務(wù)器斷電,確保工作負(fù)載能故障處理或者冗余虛擬機持續(xù)工作。
5、為災(zāi)難恢復(fù)安置虛擬機。并非用非必須的附屬條件創(chuàng)建標(biāo)準(zhǔn)的VM,創(chuàng)建更小的VM,也就是說對于支持各自的應(yīng)用足夠大就行。這樣能夠讓故障恢復(fù)、重啟、快照和同步發(fā)生的更快,而且不需要任何多余的存儲空間。
高可用性是否能夠正常工作?測試高可用性
實現(xiàn)虛擬化并不是說可以不需要對可用性進行測試。實際上,可用性問題很少涉及硬件或虛擬化平臺。通常,問題更多地是發(fā)生在安裝、配置以及源于糟糕的策略制定或程序。
雖然可以安裝自動故障轉(zhuǎn)移,但缺少一個簡單的路由表。在另一種情況下,一個技術(shù)人員可能在某個基礎(chǔ)設(shè)施處做出了一個看似無害的修改,同時又未能正確記錄該修改。如果這一修改導(dǎo)致了問題的產(chǎn)生,那么就有可能沒有辦法撤銷產(chǎn)生問題的修改操作。
Steffen敘述了一個近期發(fā)生的事件,在事件中他就無法切換至冗余的WAN供應(yīng)商。“我想,這可能是一個特別的程序問題,”他說。“但是,事實證明是他們(WAN供應(yīng)商)修改了IP地址,從而造成他們被擋在防火墻外。”
諸如此類的錯誤都會破壞可用性,這也進一步凸顯了明確安裝和變更管理步驟的重要性。“一個”人是潛在的單點故障,因此應(yīng)當(dāng)避免只安排一名高級技術(shù)人員來管理基礎(chǔ)設(shè)施。任何初級技術(shù)人員都應(yīng)該能夠完成諸如安裝、配置以及恢復(fù)這樣的任務(wù)。
實際的測試方法也是多種多樣的。目前還沒有一個測試高可用性基礎(chǔ)設(shè)施的公認(rèn)方法。雖然如此,還是有一些指導(dǎo)原則可以有助于提高你的測試質(zhì)量。從審查故障轉(zhuǎn)移、遷移以及容錯開始,通常需要采取一定量的物理交互,例如開關(guān)服務(wù)器或不間斷電源(UPS),或斷開服務(wù)器網(wǎng)絡(luò)控制器的LAN電纜。
無容錯的虛擬機在發(fā)生故障后應(yīng)當(dāng)在一個可接受的時間段內(nèi)轉(zhuǎn)移至另一臺服務(wù)器。如果采用了集群或容錯部署,應(yīng)用程序可用性就應(yīng)當(dāng)能夠?qū)崿F(xiàn)無間斷運行。
Wolf建議進一步測試網(wǎng)絡(luò)流量負(fù)載下的遷移性能,即盡可能模擬正常應(yīng)用程序(用戶)的流量場景。
該測試可為管理員提供測試期間和測試后應(yīng)用程序可用性的最準(zhǔn)確結(jié)果。例如,如果在有三臺服務(wù)器的集群中有一個節(jié)點發(fā)生故障,那么剩余的兩個節(jié)點必須仍然滿足應(yīng)用程序正常運行的服務(wù)等級需求。
同樣,了解決定虛擬機故障轉(zhuǎn)移位置的標(biāo)準(zhǔn)也是很重要的。在某些情況下,可使用虛擬化管理工具提前規(guī)劃故障轉(zhuǎn)移位置。其他情況下,可根據(jù)CPU或內(nèi)存使用水平等因素自動選擇故障轉(zhuǎn)移位置。
請確保,當(dāng)你部署虛擬機時,你還同時考慮了應(yīng)用程序的所有計算需求。例如,Citrix XenServer考慮了I/O使用率。如果遷移一個I/O密集型應(yīng)用程序而不考慮目標(biāo)服務(wù)器上的可用I/O資源,那么虛擬機的性能就有可能變糟或虛擬機性能可能變得不穩(wěn)定。
“如果虛擬機被部署在錯誤的服務(wù)器上,”Wolf說。“一開始我并不會知道發(fā)生了問題,直到虛擬機不在那里,虛擬機無法滿足其服務(wù)等級需求。這樣就必須安排一名管理員重新分配虛擬機,“可用性測試必須重點關(guān)注虛擬化分布以及重啟虛擬機的方法。一些環(huán)境可能會按照一個簡單的次序重啟:節(jié)點1、節(jié)點2、節(jié)點3等等。但是實際的重啟次序可能對應(yīng)用程序可用性有著舉足輕重的重要性。
假設(shè),某個業(yè)務(wù)使用了一個依賴后端數(shù)據(jù)庫的應(yīng)用程序。在應(yīng)用程序使用數(shù)據(jù)庫之前,數(shù)據(jù)庫必須處于運行狀態(tài)。如果應(yīng)用程序首先重啟,而數(shù)據(jù)庫還不可用,那么應(yīng)用程序就可能會發(fā)生故障或?qū)е轮袛唷?/p>
對于測試協(xié)議的情況,還沒有公認(rèn)的可用性測試的頻度標(biāo)準(zhǔn),它取決于基礎(chǔ)設(shè)施和你的業(yè)務(wù)需求。但是,更為常見的是采用交錯測試以便于使關(guān)鍵系統(tǒng)(核心應(yīng)用程序、開關(guān)、備用發(fā)電機)能夠比非關(guān)鍵系統(tǒng)更頻繁地被測試(或任何部署變更和更新的時間)。
Steffen在應(yīng)用防火墻補丁時經(jīng)歷了這一情況。“它破壞了防火墻的高可用性。我們立即就察覺了,并密切地監(jiān)控防火墻,“他說,同時指出其后果可能是災(zāi)難性的。“你必須測試關(guān)鍵的東西。”
做出正確的存儲選擇
快照和同步工具是保護虛擬機(VM)非破壞性捕捉的標(biāo)準(zhǔn)要求,而且卻好不必重啟另一臺服務(wù)器。然而,捕獲和重啟VM的功能要求管理員再設(shè)計和實現(xiàn)高可用性基礎(chǔ)架構(gòu)期間就要注意。
任何類型的存儲系統(tǒng)都可以保護VM。例如,盡管一個存儲區(qū)域網(wǎng)絡(luò)是最普遍的一種存儲形式,對于現(xiàn)代數(shù)據(jù)中心、網(wǎng)絡(luò)附屬存儲、隨機附贈存儲,甚至是物理主機上的本地磁盤來說都是很合適的方法。
不管你使用的是那種存儲類型,關(guān)鍵在于提供性能和可用的層級能夠匹配你的高可用性需求。比如,一個VM必須在一個快照流程期間復(fù)制到存儲,然后在恢復(fù)或者重啟期間恢復(fù)到一個服務(wù)器上。在很多例子中,快照和恢復(fù)可能涉及很多VM,這也進一步強調(diào)了存儲性能的重要性。畢竟,如果存儲不能和應(yīng)用同步,重啟就沒有意義,因為應(yīng)用或者其數(shù)據(jù)都是不可用的。
不斷改進中的高可用性
隨著虛擬化部署的不斷深入普及,次重要應(yīng)用程序的可用性將得到相應(yīng)的改善。目前,在服務(wù)器發(fā)生故障期間,受延長停機時間影響的非關(guān)鍵應(yīng)用程序也將以虛擬機形式出現(xiàn)。由于虛擬機可以實現(xiàn)故障轉(zhuǎn)移并在另一臺服務(wù)器上重啟,長達數(shù)小時的停機時間將顯著地減少至數(shù)分鐘。
硬件成本也隨之大幅降低,這也使得企業(yè)能夠?qū)Ω嗟膽?yīng)用程序部署高可用性技術(shù),而在之前由于費用問題是無法做到這一點的。例如,一個公司可能會以超過兩臺服務(wù)器的價格購買兩臺服務(wù)器搭建一個以上的集群來提高最重要應(yīng)用程序的可用性。
管理員必須將服務(wù)器硬件置于掌控中,并管理好其虛擬機的故障轉(zhuǎn)移行為。未來成功的可用性取決于所采用的管理工具以及管理服務(wù)器的方法。工具總是能夠提升特性、功能以及與其它虛擬化平臺的互操作性。
Wolf預(yù)測,工具將不再是簡單監(jiān)控虛擬機和服務(wù)器運行狀況的“黑盒子”,它們將更深入地監(jiān)測應(yīng)用程序的運行狀態(tài)。畢竟來說,企業(yè)還是更多地關(guān)心應(yīng)用程序和它們的數(shù)據(jù),而不是底層的硬件。管理工具的改進同樣也會促進服務(wù)器的改進,例如高速緩存和內(nèi)部芯片組功能。