在采訪小企業(yè)的IT專(zhuān)業(yè)人士時(shí),他們之所以猶豫不決、不愿部署虛擬化技術(shù),主要因素之一來(lái)自一種心態(tài),這種心態(tài)可以描述為“別把所有雞蛋都放在一只籃子里”。
我能明白為什么會(huì)有這樣的顧慮。虛擬化讓許多訪客操作系統(tǒng)可以在單單一個(gè)物理系統(tǒng)里面運(yùn)行。萬(wàn)一這個(gè)物理系統(tǒng)遇到硬件故障,駐留在上面的所有訪客系統(tǒng)就會(huì)立馬同時(shí)無(wú)法正常運(yùn)行。
這聽(tīng)起來(lái)很糟,但是也許不如我們最初設(shè)想的那么糟。
持雞蛋和籃子理論的人覺(jué)得,我們不該同時(shí)讓所有資源面臨險(xiǎn)境。這個(gè)理論一般適用于投資領(lǐng)域,鼓勵(lì)投資者分散風(fēng)險(xiǎn),投資于多家公司和多種類(lèi)型的證券,比如債券、股票、基金和大宗商品。以雞蛋(或貨幣)為例,我們談?wù)摰氖强梢曰Q的商品。一個(gè)雞蛋與另一個(gè)雞蛋基本上沒(méi)什么差別。一批雞蛋自然是多余的。
假設(shè)我們有一打雞蛋,打碎了六個(gè),我們照樣可以做一份煎蛋餅,可能小點(diǎn)而已,但是我們?nèi)钥梢猿?。吃小點(diǎn)的煎蛋餅可能幾乎跟吃大點(diǎn)的煎蛋餅一樣能填飽肚子——無(wú)論如何,我們吃后不會(huì)覺(jué)得餓。
把已經(jīng)多余的雞蛋放到多只籃子里讓我們可以?xún)擅嫦伦ⅰ@得雙保險(xiǎn)。沒(méi)錯(cuò),裝在兩只籃子里意味著,我們關(guān)注其中一只籃子的時(shí)間就比較少,所以這增加了丟失部分雞蛋的風(fēng)險(xiǎn),但是也減小了丟失全部雞蛋的幾率。
拿雞蛋來(lái)說(shuō),這的確是明智的做法。同樣,這也是你準(zhǔn)備拿退休金投資的明智方法。
這套理論隨后未經(jīng)認(rèn)真分析或充分認(rèn)識(shí)就被搬到了毫不相干的領(lǐng)域,比如服務(wù)器虛擬化。不過(guò),服務(wù)器卻不像雞蛋。
服務(wù)器、尤其是小公司的服務(wù)器是很少可以互換的商品:不是說(shuō)只要有6臺(tái)(而不是通常的12臺(tái))在工作就夠好了。服務(wù)器通常各自扮演獨(dú)特的角色,它們對(duì)確保公司業(yè)務(wù)的正常運(yùn)轉(zhuǎn)而言都相對(duì)很重要。
如果某臺(tái)服務(wù)器不重要,那么當(dāng)初也就不太可能證明有必要花成本來(lái)購(gòu)置和維護(hù)這臺(tái)服務(wù)器了,所以它恐怕根本就不會(huì)存在。(當(dāng)服務(wù)器可以互換時(shí),比如在大型的無(wú)狀態(tài)Web服務(wù)器場(chǎng)或計(jì)算集群,它們采用這樣的配置是為了擴(kuò)大計(jì)算容量,而不是僅限于單單一臺(tái)物理服務(wù)器,所以這不在本文探討的范圍之內(nèi)。)
公司中的IT服務(wù)通常“依賴(lài)整條鏈”,至少?gòu)哪撤N程度上來(lái)說(shuō)是這樣。也就是說(shuō),它們相互依賴(lài),某一項(xiàng)服務(wù)的丟失可能會(huì)影響其他服務(wù)。之所以會(huì)這樣,是由于它們?cè)诩夹g(shù)上相互依賴(lài)(比如某業(yè)務(wù)應(yīng)用程序依賴(lài)數(shù)據(jù)庫(kù)),或者是由于在工作流程方面相互依賴(lài)(辦公室員工需要文件服務(wù)器正常運(yùn)行才能進(jìn)行協(xié)作)。
這種情況下,丟失了單單一項(xiàng)關(guān)鍵的服務(wù)(比如電子郵件、網(wǎng)絡(luò)驗(yàn)證或文件服務(wù)),可能會(huì)導(dǎo)致工作能力嚴(yán)重喪失。如果共有十項(xiàng)關(guān)鍵的服務(wù),有一項(xiàng)服務(wù)停運(yùn),那么從IT服務(wù)的角度來(lái)看,公司生產(chǎn)力的下降幅度就可能遠(yuǎn)不止10%,在極端情況下有可能接近100%。
并非總是這種情況——在一些獨(dú)特的情況下,某項(xiàng)服務(wù)停運(yùn)后,員工還是能夠找到有效的“變通辦法”,但是這種情況很少見(jiàn)。就算員工仍能正常工作,他們的工作效率可能比平常要低得多。
面對(duì)物理服務(wù)器時(shí),每臺(tái)服務(wù)器各自就是一個(gè)故障點(diǎn)。所以,如果我們有十臺(tái)服務(wù)器,那么出現(xiàn)停運(yùn)的可能性是如果我們只有一臺(tái)這樣的服務(wù)器時(shí)的十倍。我們添加的每一臺(tái)服務(wù)器都會(huì)帶來(lái)各自的風(fēng)險(xiǎn)。
如果每次故障的停運(yùn)系數(shù)是2.5——也就是說(shuō),給公司帶來(lái)的經(jīng)濟(jì)損失占某段時(shí)間(比如一天)收入的25%,那么十年下來(lái)總的平均影響相當(dāng)于2.5次總的網(wǎng)站停運(yùn)。
我在這里使用系數(shù)和平均這個(gè)概念是為了簡(jiǎn)化這個(gè)問(wèn)題。沒(méi)有必要確定平均停運(yùn)事件的時(shí)間長(zhǎng)度或平均停運(yùn)事件的影響,因?yàn)槲覀冎灰_定這種情況下的相對(duì)影響,就可以比較場(chǎng)景。
這只是拿一種事件與另一種事件對(duì)停運(yùn)事件的累積經(jīng)濟(jì)影響進(jìn)行比較,不需要具體的數(shù)字——這不會(huì)幫助你確定你應(yīng)該花多少錢(qián),確定的只是相對(duì)可靠性。
虛擬化和整合
借助虛擬化,我們顯然能夠整合資源。在本例中,我們將假設(shè):可以把這現(xiàn)有的十臺(tái)服務(wù)器全部整合到一臺(tái)服務(wù)器上。我們?cè)谶@么做的時(shí)候,常常會(huì)引起“別把所有雞蛋放在一只籃子里”的反應(yīng)。
但是如果我們分析一下風(fēng)險(xiǎn),就會(huì)發(fā)現(xiàn)這通常僅僅是害怕和不確定的心理,并不是數(shù)學(xué)上得到支持的風(fēng)險(xiǎn)。如果我們假設(shè)存在與上述例子中一樣的風(fēng)險(xiǎn),那么我們的一臺(tái)服務(wù)器平均會(huì)帶來(lái)僅僅一次總的網(wǎng)站停運(yùn),每十年一次。
將這與造成危害相當(dāng)于2.5次總的網(wǎng)站停運(yùn)的第一個(gè)例子比較一下,會(huì)發(fā)現(xiàn)虛擬化整合解決方案帶來(lái)的風(fēng)險(xiǎn)只有傳統(tǒng)解決方案的40%。
現(xiàn)在牢記一點(diǎn),這基于這個(gè)假設(shè):丟失一些服務(wù)意味著造成的經(jīng)濟(jì)損失大于丟失的那項(xiàng)服務(wù)的絕對(duì)價(jià)值,幾乎總是這種情況。即使丟失的服務(wù)只是丟失了這一項(xiàng)服務(wù),我們也只是得失相當(dāng),無(wú)需擔(dān)心。
在很少見(jiàn)的情況下,丟失一個(gè)系統(tǒng)帶來(lái)的影響也非常小,這通常是由于人們隨機(jī)應(yīng)變,面對(duì)失效系統(tǒng),能夠想到變通辦法——比如要是即時(shí)通訊出了故障,人們只要轉(zhuǎn)而使用電子郵件,直到即時(shí)通訊服務(wù)恢復(fù)正常。但是這種情況很少見(jiàn),其影響通常僅限于多個(gè)系統(tǒng)中的少數(shù)幾個(gè)系統(tǒng);萬(wàn)一出現(xiàn)停運(yùn)事件,大多數(shù)系統(tǒng)會(huì)帶來(lái)極大的負(fù)面影響,比如企業(yè)資源規(guī)劃(ERP)、客戶(hù)關(guān)系管理(CRM)和電子郵件。
所以我們?cè)谶@里看到的是,在通常情況下,把十項(xiàng)服務(wù)從十臺(tái)服務(wù)器上遷移到一臺(tái)服務(wù)器上通??梢越档臀覀兊娘L(fēng)險(xiǎn),而不是增加風(fēng)險(xiǎn)——這與“雞蛋和籃子”理論徑直形成了鮮明對(duì)照。而這純粹是從硬件故障的角度來(lái)考慮的。不過(guò),整合帶來(lái)了可靠性方面的另外幾個(gè)重要因素,它們對(duì)我們的案例研究會(huì)帶來(lái)重大影響。
通過(guò)整合,我們可以減少需要IT部門(mén)加以監(jiān)控和管理的硬件數(shù)量。服務(wù)器數(shù)量較少,這意味著可以把更多的時(shí)間和注意力放到剩余的那些服務(wù)器上。更多的注意力意味著,更有機(jī)會(huì)及早發(fā)現(xiàn)問(wèn)題,有更多的機(jī)會(huì)準(zhǔn)備好零部件。監(jiān)控和維護(hù)工作改善了,可靠性也就更高了。
節(jié)省成本?
不過(guò),整合方面可能最重要的因素是,可以大幅節(jié)省成本;如果做法得當(dāng),這可以為提高可靠性帶來(lái)機(jī)會(huì)。由于服務(wù)器的總成本顯著降低,企業(yè)忍不住會(huì)繼續(xù)確保預(yù)算較少,試圖直接利用節(jié)省下來(lái)的成本。
這是可以理解的;對(duì)一些公司來(lái)說(shuō),這可能是正確的做法。但是在駁斥雞蛋和籃子理論時(shí),我不會(huì)推薦采用這種做法。
相反,通過(guò)采用一種更穩(wěn)健的做法——保持大幅節(jié)省成本的同時(shí),仍增加單臺(tái)服務(wù)器方面的開(kāi)支(相對(duì)而言),那樣你就能獲得一臺(tái)更高端(言外之意更可靠)的服務(wù)器,使用更好的零部件,擁有現(xiàn)場(chǎng)備件,等等。
虛擬化節(jié)省下來(lái)的成本常常可以直接轉(zhuǎn)化為提高可靠性,進(jìn)而更有利于支持采用單一服務(wù)器這個(gè)做法。
正如前面所述,一間磚房比一間或兩間草房更有可能抵擋得住風(fēng)暴。擁有更多的系統(tǒng)未必是更可靠的選擇。
這些好處純粹來(lái)自虛擬化的整合方面,而不是來(lái)自虛擬化本身。虛擬化還另外提供了緩解風(fēng)險(xiǎn)的功能。系統(tǒng)鏡像和快速恢復(fù)以及可恢復(fù)到不同硬件,這些都是大多數(shù)虛擬化平臺(tái)的主要優(yōu)點(diǎn)。這在災(zāi)難恢復(fù)策略中可以起到重要作用。
當(dāng)然,我提到的所有概念表明了一點(diǎn):?jiǎn)我环?wù)器虛擬化和整合可以勝過(guò)傳統(tǒng)的“一臺(tái)服務(wù)器一個(gè)應(yīng)用程序”這種做法,仍可以節(jié)省費(fèi)用——這表明,雞蛋和籃子這個(gè)例子有誤導(dǎo)性,并不適合虛擬化這種場(chǎng)景?;谶@些因素,企業(yè)可以比較放心地從傳統(tǒng)環(huán)境直接遷移到虛擬化環(huán)境。
值得一提的是,虛擬化隨后可以提高傳統(tǒng)大眾化硬件的可靠性,提供類(lèi)似大型機(jī)的故障切換功能,這種功能是非虛擬化平臺(tái)無(wú)力提供的。這使得大眾化硬件更加與比較大、比較貴的RISC平臺(tái)靠齊。
這些功能可以帶來(lái)極高的保護(hù)級(jí)別,但是超出了開(kāi)始遷離非故障切換的遺留硬件服務(wù)器環(huán)境的IT部門(mén)的正常需要。高可用性是一項(xiàng)出色的功能,但是常常成本高昂,而且往往沒(méi)有必要,特別是公司從過(guò)去相對(duì)不太可靠的環(huán)境遷移到如今更可靠的環(huán)境時(shí)。
考慮到我們已經(jīng)提高了可靠性,超過(guò)了過(guò)去被認(rèn)為必要的可靠性,現(xiàn)在很可能不需要極大幅度地提高可靠性。但是由于高可用性成本大幅下降,完全有可能在以前無(wú)法為高可用性證明成本合理性的情況下證明合理性。
虛擬化仍是太新的技術(shù)?
同樣,虛擬化常常讓人不安,因?yàn)榇蠹矣X(jué)得它是一項(xiàng)未得到證實(shí)的新技術(shù)。其實(shí)并非這樣,但是小企業(yè)和大眾化硬件領(lǐng)域存在這樣一種印象。
不過(guò)實(shí)際上,虛擬化早在上世紀(jì)60年代最先由IBM推出,此后一直是高端大型機(jī)和RISC服務(wù)器的主要功能——那些系統(tǒng)需要最佳可靠性。在大眾化服務(wù)器領(lǐng)域,虛擬化是個(gè)比較大的技術(shù)挑戰(zhàn),經(jīng)歷了漫長(zhǎng)的時(shí)間后才被高效地實(shí)施,以便在實(shí)際環(huán)境下用起來(lái)卓有成效。
但是即便在大眾化硬件領(lǐng)域,虛擬化也自從上世紀(jì)90年代末以來(lái)就存在了,也就是說(shuō)它大概有15年左右的歷史,早就不是什么新興技術(shù)——在IT行業(yè),它絕對(duì)稱(chēng)得上是古董級(jí)技術(shù)。
大眾化平臺(tái)虛擬化是個(gè)成熟的領(lǐng)域,有一些備受推崇、極其先進(jìn)的廠商和產(chǎn)品。使用虛擬化作為幾乎所有服務(wù)器應(yīng)用軟件的一個(gè)標(biāo)準(zhǔn),這是早就確立并認(rèn)可的“企業(yè)模式”,現(xiàn)在很容易被大大小小的公司所采用。
也許出人意料的是,虛擬化實(shí)際上是可靠性策略中一個(gè)至關(guān)重要的組成部分。虛擬化非但不會(huì)增加風(fēng)險(xiǎn),幾乎還可以看成是一種降低風(fēng)險(xiǎn)的平臺(tái)——這套工具可用于通過(guò)諸多途徑來(lái)提高貴公司計(jì)算平臺(tái)的可靠性。