高能預(yù)警:最實用的虛擬化運(yùn)維實踐

責(zé)任編輯:editor005

作者:肖力

2015-08-03 14:19:18

摘自:程序員日志微信號

歸根結(jié)底,虛擬化能給企業(yè)帶來兩個好處:  第一個好處,節(jié)省成本。網(wǎng)絡(luò)技術(shù)生產(chǎn)環(huán)境選擇的建議如下:  Virtio:一般推薦優(yōu)先使用這個,因為它確實是一個性能非常好的解決方案;

“要么別人踩坑你過,要么你替別人踩坑!”

內(nèi)容提綱:

Why——為什么選擇虛擬化技術(shù)?

What——虛擬化實施及虛擬化技術(shù)?

How——如何部署虛擬化項目?

公有云選擇及運(yùn)維Why——為什么選擇虛擬化?

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:虛擬化能給企業(yè)帶來什么

首先需要想想為什么要虛擬化,虛擬化到底能帶給我們什么?歸根結(jié)底,虛擬化能給企業(yè)帶來兩個好處:

第一個好處,節(jié)省成本。三四年前,我們曾經(jīng)做過一款游戲,當(dāng)時有一款游戲用了500多臺物理機(jī),運(yùn)營了兩年就收支平衡了,換句話說就是不賺錢了,后來我們按照(1:7)的比例去做虛擬化,將500多臺物理機(jī)壓縮到70多臺宿主機(jī)上面,成本大大節(jié)省,游戲又開始盈利了,又能生存下去了。這是通過虛擬化節(jié)省成本的一個案例。

第二個好處,快速部署。從宿主機(jī)層面看,虛擬機(jī)就是一個鏡像文件,要想增加一臺虛擬機(jī),把這個鏡像文件復(fù)制一份就可實現(xiàn),這個過程通常就幾分鐘,最多十幾分鐘,還有一些技術(shù),比如插電鏡像技術(shù),我們可以秒級地得到虛擬機(jī)。

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:定戰(zhàn)略,說服老板和同事

確定使用虛擬化技術(shù)之后,就要面臨如何說服我們的老板和同事去使用虛擬化技術(shù)的問題了。

如何說服老板:畫餅、挖坑。

如何畫餅?比如我們有兩千臺服務(wù)器,即使按照(1:2)的比例去做,服務(wù)器數(shù)量立馬減半,這個效益非常明顯,一般老板都會支持的。但是,別忘了給老板挖個小坑,因為你做虛擬化項目過程中難免會碰到問題,這時候就需要老板的支持。所以要先跟老板說好,一旦出現(xiàn)問題一定要老板挺一下。

如何說服同事:樹立一個樣板。

怎么樣應(yīng)對同事的質(zhì)疑?就是樹立一個樣板,用事實說話。這就跟打仗一樣,比如說你的第一仗能打勝,后面的工作會容易開展好多,所以應(yīng)對同事的質(zhì)疑最好的方法就是樹立一個成功樣板。

What——虛擬化實施及虛擬化技術(shù)

如何選擇樣本項目?

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:如何選擇潛力股

首先,要選擇一個潛力股。最好在公司內(nèi)部去找最符合以下四個特征的業(yè)務(wù),作為第一個虛擬化項目。

1.單進(jìn)程,這是第一潛力股。如果我們的業(yè)務(wù)是單進(jìn)程的業(yè)務(wù),就非常容易做虛擬化,因為現(xiàn)在的CPU都是多核的,單進(jìn)程的業(yè)務(wù)非常容易通過虛擬化的技術(shù)進(jìn)行整合。

2.利用率不高,比如常年CPU利用率都是10%、20%,基礎(chǔ)業(yè)務(wù)也非常容易整合。

3.頻繁變動的業(yè)務(wù),拿游戲行業(yè)來說,手游頁游這種業(yè)務(wù)最愿意做虛擬化,因為通過虛擬化部署特點(diǎn),可以解決它的痛點(diǎn)。

4.非核心業(yè)務(wù),一開始我們盡量不要做核心業(yè)務(wù),因為核心業(yè)務(wù)萬一出了問題,影響很大,萬一出了問題,壓力就比較大。其實,像那種壓力特別高的業(yè)務(wù)就不適合做虛擬化。

虛擬化項目實施周期

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:虛擬化項目實施周期

一般來說,按照以下這個流程去實施就能夠保證比較穩(wěn)定地將業(yè)務(wù)遷移到虛擬化環(huán)境。強(qiáng)調(diào)一點(diǎn),做虛擬化的時候,尤其一開始一定要穩(wěn)扎穩(wěn)打,每一步都用數(shù)據(jù)說話,嚴(yán)格按照流程做。

先做業(yè)務(wù)的性能需求評估,就是收集業(yè)務(wù)的壓力數(shù)據(jù),提煉一個業(yè)務(wù)的壓力模型。

根據(jù)壓力模型設(shè)計一個虛擬化方案,虛擬化方案主要是虛擬化的比例如何選擇、軟硬件如何選型等。

搭建一個測試環(huán)境,首先進(jìn)行系統(tǒng)方面的測試,然后進(jìn)行業(yè)務(wù)方面的測試。業(yè)務(wù)方面的測試分為兩層,業(yè)務(wù)邏輯測試和業(yè)務(wù)壓力測試。

小規(guī)模部署,一般是找壓力最低的一組測兩周到四周。

全面部署,如果小規(guī)模部署沒有問題就找壓力比較大的一組再去測兩周到四周。

如果都沒問題,就可以按部就班逐漸地將業(yè)務(wù)遷移到虛擬化環(huán)境,直接進(jìn)入虛擬化運(yùn)維。

了解實施中要解決的問題

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:實施中要解決的哪些問題

在實施過程中我們還要解決哪些問題?

1.穩(wěn)定性。穩(wěn)定性其實是一些技術(shù)方面的問題。

2.快速管理。穩(wěn)定性解決好以后,我們可能會面臨的是想快速地得到一臺或者一批虛擬機(jī),所以往往就需要一個管理平臺。

3.與業(yè)務(wù)緊密結(jié)合。管理平臺搞定之后,我們希望和其他的業(yè)務(wù)運(yùn)維平臺對接起來,我們希望虛擬機(jī)開起來的時候,我們的業(yè)務(wù)程序也能在里邊,甚至一些業(yè)務(wù)配置也能跑起來。

4.要有一整套的監(jiān)控、報警、應(yīng)急響應(yīng)預(yù)案。有問題早發(fā)現(xiàn)早解決。如果你遷移到虛擬化環(huán)境以后,將好多業(yè)務(wù)都放在宿主機(jī)上面,如果有一個宿主機(jī)故障,你的影響面要大很多。

軟硬件選型

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:軟硬件選型

軟件方面,對于生產(chǎn)環(huán)境我們一般肯定要選擇穩(wěn)定版本。但是,在穩(wěn)定版本的基礎(chǔ)上,內(nèi)存版本越高越好,為什么?這里有一個數(shù)據(jù),數(shù)據(jù)時間比較長,同樣配置情況下CentOS 6.1和 CentOS 5.6的CPU計算能力的對比,CentOS 6.1要比CentOS 5.6好9%,就是內(nèi)核版本越高,它的CPU中斷和上下文切換優(yōu)化得越好,同時網(wǎng)絡(luò)IO、磁盤IO也優(yōu)化得越好。

硬件方面,盡量一開始配置要稍微好一點(diǎn),因為配置得越強(qiáng)悍,你可以虛擬的虛擬機(jī)越多,你最終肯定節(jié)省成本;另外,內(nèi)存也要稍微大一點(diǎn),因為你的宿主機(jī)跑上一段時間以后,往往你會發(fā)現(xiàn)內(nèi)存不夠,到時候又要加內(nèi)存。最后,盡量選擇主流品牌。

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:虛擬化引擎的對比

關(guān)于虛擬化引擎,目前常見的企業(yè)級的虛擬化引擎有四款:VMware、Hyper-V、Xen和KVM。

VMware:最早是x86平臺上的虛擬化引擎,1998年就有了,所以它成熟穩(wěn)定,兼容性也非常好。但是Vmware是個閉源方案,而且收費(fèi)非常高,所以一般可能互聯(lián)網(wǎng)行業(yè)用得比較少一點(diǎn)。

Hyper-V,微軟的Hyper-V發(fā)展非常迅速,尤其近幾年,但是Hyper-V也是個收費(fèi)的閉源方案,所以一般純Windows環(huán)境下可能用得比較多一點(diǎn)。

Xen,最早開源的虛擬化引擎,2003年就開源了,但是Xen的架構(gòu)比較復(fù)雜,代碼就40多萬行。

KVM,比較新的虛擬化引擎,有后發(fā)優(yōu)勢,架構(gòu)設(shè)計上比較簡單,內(nèi)核一個模塊,只有2萬行代碼。我這里有個數(shù)據(jù),2013年10月份openstack平臺上關(guān)于虛擬化引擎的一個選擇,這個其實是馬上快兩年的數(shù)據(jù),當(dāng)時KVM已經(jīng)占到71% 的份額,現(xiàn)在基本上國內(nèi)新一代的公有云基本上用的都是KVM。

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:CPU技術(shù)選擇

關(guān)于CPU技術(shù)的選擇:

1. CPU綁定,這是非常實用的技術(shù),而且是一個非常神奇的技術(shù),可以在線做;

2. 在線添加,如果說你前邊壓力模型分析比較好的情況下,基本上你不會用到在線添加;

3. host-passthrough,一般單機(jī)的情況下可以考慮這種技術(shù)。或者如果沒有做遷移,但有一批機(jī)器的CPU品牌型號都一模一樣的,也可以考慮這種配置;

4. Nested,就是個玩具,實驗室里面PC上玩一玩。

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:內(nèi)存技術(shù)選擇

對于KSM,建議生產(chǎn)環(huán)境關(guān)閉,測試環(huán)境和桌面虛擬機(jī)推薦使用;對于內(nèi)存氣球,相當(dāng)于在虛擬機(jī)里放了一個氣球,你想讓虛擬機(jī)釋放內(nèi)存,你就讓氣球膨脹,你想讓虛擬機(jī)有更高的內(nèi)存,可以讓氣球收縮;對于內(nèi)存限制,在一定范圍內(nèi)使用內(nèi)存,保證最低內(nèi)存使用量。

總體來說,建議在技術(shù)生產(chǎn)環(huán)境中,盡量不使用各種內(nèi)存壓縮限制技術(shù)。

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:網(wǎng)絡(luò)技術(shù)選擇

網(wǎng)絡(luò)方面要解決兩個問題:可管理性和性能。網(wǎng)絡(luò)技術(shù)生產(chǎn)環(huán)境選擇的建議如下:

Virtio:一般推薦優(yōu)先使用這個,因為它確實是一個性能非常好的解決方案;

SRIOV網(wǎng)卡獨(dú)占:如果網(wǎng)絡(luò)壓力非常高或者對發(fā)包率有要求可以考慮使用這種方案;如果說不是壓力特別高的,用Virtio夠了,因為這個方案不支持在線遷移,而且要手動配置;

網(wǎng)卡多隊列:這在CentOS67剛推出來的時候測了一下,好像效果也不是太理想,因為這是個相對新的特性。

Open vSwitch:如果在私有云的情況下一般是內(nèi)部用,管理方面要求不是特別強(qiáng)烈的情況下可以不用;如果是公有云,現(xiàn)在一般都要用,因為公有云強(qiáng)調(diào)管理。

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:磁盤技術(shù)選擇

關(guān)于磁盤技術(shù)生產(chǎn)環(huán)境選擇:

存儲方式,一般使用qcow2或者是IVM,因為這兩種方式有個共同的特點(diǎn)是可以動態(tài)擴(kuò)容;

緩存方式,一般是單機(jī)的情況下我們使用writethrough,但是如果是集群的話,在需要遷移的情況下必須使用none;

磁盤驅(qū)動,一般是驅(qū)動Virtio,它跟網(wǎng)卡的Virtio不一樣,因為磁盤不管你在Windows還是Linux系統(tǒng)上,它的工作都非常穩(wěn)定,從來沒有碰到過問題;

SSD,如果你預(yù)算充足的話,那肯定就是純SSD,閉著眼睛就上了,但是如果你追求性價比,那可以考慮Flashcache這種方案。

How——如何部署虛擬化項目?

物理機(jī)轉(zhuǎn)虛擬機(jī),適用于物理機(jī)的利用率非常低、軟件配置環(huán)境非常復(fù)雜的場景,主要有靜態(tài)和動態(tài)方式來完成這樣的轉(zhuǎn)換。

靜態(tài)方案,靜態(tài)的方案很簡單,物理機(jī)關(guān)機(jī)克隆,然后在虛擬機(jī)那邊還原,類似ghost的過程。一般推薦使用P2V這樣的工具,基本上把你做的過程完全自動化。

動態(tài)方案,在VMware以后用的都是動態(tài)方案。它有個軟件裝到物理機(jī)里面,物理機(jī)不關(guān)機(jī),然后將物理機(jī)上面的文件拷到虛擬機(jī)里面,就可以跑起來。

宿主機(jī)監(jiān)控

監(jiān)控方面有幾個注意點(diǎn):硬件方面,我們就使用帶外管理卡,因為現(xiàn)在的帶外管理卡非常完善了;CPU方面,我們建議每個核都要監(jiān)控起來,還要設(shè)報警;內(nèi)存方面,Swap要監(jiān)控起來;磁盤網(wǎng)絡(luò)方面,在上線之前要做壓力測試,要得到一個極限數(shù)據(jù),然后根據(jù)極限數(shù)據(jù)設(shè)置一個罰值。

災(zāi)備實踐經(jīng)驗

災(zāi)備有兩種思路:1. 應(yīng)用層災(zāi)備,基本上跟原來物理機(jī)上一樣,你在物理機(jī)上怎么做災(zāi)備,在虛擬機(jī)上用同樣的方法做災(zāi)備;2. 虛擬化災(zāi)備,做快照,做多份的鏡像復(fù)制。

一般建議在應(yīng)用層次做災(zāi)備,因為在應(yīng)用層做災(zāi)備消耗的資源要少很多。注意的是,災(zāi)備要定期演練,一方面讓大家熟悉過程,再來驗證一下災(zāi)備這個機(jī)制到底是不是生效。

公有云選擇

高能預(yù)警:最實用的虛擬化運(yùn)維實踐

  圖:公有云的選擇

關(guān)于共有云的選擇,往往你選擇公有云是因為市場因素,比如價格;第二個是口碑;第三個是網(wǎng)絡(luò)質(zhì)量,但是大家往往容易忽略,我建議如果選公有云,對這一塊也要兼顧起來。

公有云能提供一些比如數(shù)據(jù)分析運(yùn)維工具,包括我們?nèi)ミ\(yùn)維,工具豐富的平臺會更受運(yùn)維喜歡?,F(xiàn)在,公有云廠商也開始提供一些物理機(jī)支持,一些高壓力的業(yè)務(wù)可以考慮放到物理機(jī)上面。

公有云選擇好以后,我們在公有云上面如何運(yùn)維,按照前面提到的流程進(jìn)行,可以保證在公有云上面跑得比較穩(wěn)定,而且底層的技術(shù)不用擔(dān)心了,所以一般中小企業(yè)可以考慮用公有云。

總結(jié):

不論遷移前還是遷移完后,業(yè)務(wù)穩(wěn)定是第一位的,一定要選擇成熟的技術(shù)和比較好的預(yù)案,同時也一定要對業(yè)務(wù)比較熟悉,這樣你就知道如何根據(jù)壓力搭配,而且還可以知道優(yōu)先保障的級別。

最后,所有的一切就是兩個字——口碑,如果你的口碑做起來了,你在企業(yè)內(nèi)部會越推越順,甚至你不推都有人來找你做虛擬化。相反,如果你的口碑沒做起來,你做的幾個項目都砸了,那基本上就沒人找你,你就做不下去了。

附:KVM學(xué)習(xí)資料,摘自《深度實踐KVM》。

1 官方資料

1)RedHat官網(wǎng)資料,虛擬化相關(guān)章節(jié)

https://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/

2) Libvirt官網(wǎng)官方文檔

Libvirt是kvm虛擬化的管理工具,官方文檔非常詳細(xì),鏈接如下:

http://www.libvirt.org/docs.html

3) guestfish官網(wǎng)官方文檔

guestfish 是一套kvm虛擬化的鏡像管理工具,可以對鏡像進(jìn)行非常方便的管理,鏈接地址如下:

http://libguestfs.org

2 參考閱讀文檔

(1) KVM 官網(wǎng)文檔,鏈接為:

http://www.linux-kvm.org/page/Main_Page

(2) QEMU官網(wǎng)文檔,鏈接為:

http://www.qemu.org

3 KVM相關(guān)軟件的更新新特性發(fā)布頁面

Libvirt更新頁面鏈接:

http://www.libvirt.org/news.html

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號