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