高能預(yù)警:最實(shí)用的虛擬化運(yùn)維實(shí)踐
“要么別人踩坑你過(guò),要么你替別人踩坑!”
內(nèi)容提綱:
- Why——為什么選擇虛擬化技術(shù)?
- What——虛擬化實(shí)施及虛擬化技術(shù)?
- How——如何部署虛擬化項(xiàng)目?
公有云選擇及運(yùn)維Why——為什么選擇虛擬化?
圖:虛擬化能給企業(yè)帶來(lái)什么
首先需要想想為什么要虛擬化,虛擬化到底能帶給我們什么?歸根結(jié)底,虛擬化能給企業(yè)帶來(lái)兩個(gè)好處:
***個(gè)好處,節(jié)省成本。三四年前,我們?cè)?jīng)做過(guò)一款游戲,當(dāng)時(shí)有一款游戲用了500多臺(tái)物理機(jī),運(yùn)營(yíng)了兩年就收支平衡了,換句話說(shuō)就是不賺錢(qián)了,后來(lái)我們按照(1:7)的比例去做虛擬化,將500多臺(tái)物理機(jī)壓縮到70多臺(tái)宿主機(jī)上面,成本大大節(jié)省,游戲又開(kāi)始盈利了,又能生存下去了。這是通過(guò)虛擬化節(jié)省成本的一個(gè)案例。
第二個(gè)好處,快速部署。從宿主機(jī)層面看,虛擬機(jī)就是一個(gè)鏡像文件,要想增加一臺(tái)虛擬機(jī),把這個(gè)鏡像文件復(fù)制一份就可實(shí)現(xiàn),這個(gè)過(guò)程通常就幾分鐘,最多十幾分鐘,還有一些技術(shù),比如插電鏡像技術(shù),我們可以秒級(jí)地得到虛擬機(jī)。
圖:定戰(zhàn)略,說(shuō)服老板和同事
確定使用虛擬化技術(shù)之后,就要面臨如何說(shuō)服我們的老板和同事去使用虛擬化技術(shù)的問(wèn)題了。
如何說(shuō)服老板:畫(huà)餅、挖坑。
如何畫(huà)餅?比如我們有兩千臺(tái)服務(wù)器,即使按照(1:2)的比例去做,服務(wù)器數(shù)量立馬減半,這個(gè)效益非常明顯,一般老板都會(huì)支持的。但是,別忘了給老板挖個(gè)小坑,因?yàn)槟阕鎏摂M化項(xiàng)目過(guò)程中難免會(huì)碰到問(wèn)題,這時(shí)候就需要老板的支持。所以要先跟老板說(shuō)好,一旦出現(xiàn)問(wèn)題一定要老板挺一下。
如何說(shuō)服同事:樹(shù)立一個(gè)樣板。
怎么樣應(yīng)對(duì)同事的質(zhì)疑?就是樹(shù)立一個(gè)樣板,用事實(shí)說(shuō)話。這就跟打仗一樣,比如說(shuō)你的***仗能打勝,后面的工作會(huì)容易開(kāi)展好多,所以應(yīng)對(duì)同事的質(zhì)疑***的方法就是樹(shù)立一個(gè)成功樣板。
What——虛擬化實(shí)施及虛擬化技術(shù)
如何選擇樣本項(xiàng)目?
圖:如何選擇潛力股
首先,要選擇一個(gè)潛力股。***在公司內(nèi)部去找***以下四個(gè)特征的業(yè)務(wù),作為***個(gè)虛擬化項(xiàng)目。
1.單進(jìn)程,這是***潛力股。如果我們的業(yè)務(wù)是單進(jìn)程的業(yè)務(wù),就非常容易做虛擬化,因?yàn)楝F(xiàn)在的CPU都是多核的,單進(jìn)程的業(yè)務(wù)非常容易通過(guò)虛擬化的技術(shù)進(jìn)行整合。
2.利用率不高,比如常年CPU利用率都是10%、20%,基礎(chǔ)業(yè)務(wù)也非常容易整合。
3.頻繁變動(dòng)的業(yè)務(wù),拿游戲行業(yè)來(lái)說(shuō),手游頁(yè)游這種業(yè)務(wù)最愿意做虛擬化,因?yàn)橥ㄟ^(guò)虛擬化部署特點(diǎn),可以解決它的痛點(diǎn)。
4.非核心業(yè)務(wù),一開(kāi)始我們盡量不要做核心業(yè)務(wù),因?yàn)楹诵臉I(yè)務(wù)萬(wàn)一出了問(wèn)題,影響很大,萬(wàn)一出了問(wèn)題,壓力就比較大。其實(shí),像那種壓力特別高的業(yè)務(wù)就不適合做虛擬化。
#p#
虛擬化項(xiàng)目實(shí)施周期
圖:虛擬化項(xiàng)目實(shí)施周期
一般來(lái)說(shuō),按照以下這個(gè)流程去實(shí)施就能夠保證比較穩(wěn)定地將業(yè)務(wù)遷移到虛擬化環(huán)境。強(qiáng)調(diào)一點(diǎn),做虛擬化的時(shí)候,尤其一開(kāi)始一定要穩(wěn)扎穩(wěn)打,每一步都用數(shù)據(jù)說(shuō)話,嚴(yán)格按照流程做。
- 先做業(yè)務(wù)的性能需求評(píng)估,就是收集業(yè)務(wù)的壓力數(shù)據(jù),提煉一個(gè)業(yè)務(wù)的壓力模型。
- 根據(jù)壓力模型設(shè)計(jì)一個(gè)虛擬化方案,虛擬化方案主要是虛擬化的比例如何選擇、軟硬件如何選型等。
- 搭建一個(gè)測(cè)試環(huán)境,首先進(jìn)行系統(tǒng)方面的測(cè)試,然后進(jìn)行業(yè)務(wù)方面的測(cè)試。業(yè)務(wù)方面的測(cè)試分為兩層,業(yè)務(wù)邏輯測(cè)試和業(yè)務(wù)壓力測(cè)試。
- 小規(guī)模部署,一般是找壓力***的一組測(cè)兩周到四周。
- 全面部署,如果小規(guī)模部署沒(méi)有問(wèn)題就找壓力比較大的一組再去測(cè)兩周到四周。
- 如果都沒(méi)問(wèn)題,就可以按部就班逐漸地將業(yè)務(wù)遷移到虛擬化環(huán)境,直接進(jìn)入虛擬化運(yùn)維。
了解實(shí)施中要解決的問(wèn)題
圖:實(shí)施中要解決的哪些問(wèn)題
在實(shí)施過(guò)程中我們還要解決哪些問(wèn)題?
1.穩(wěn)定性。穩(wěn)定性其實(shí)是一些技術(shù)方面的問(wèn)題。
2.快速管理。穩(wěn)定性解決好以后,我們可能會(huì)面臨的是想快速地得到一臺(tái)或者一批虛擬機(jī),所以往往就需要一個(gè)管理平臺(tái)。
3.與業(yè)務(wù)緊密結(jié)合。管理平臺(tái)搞定之后,我們希望和其他的業(yè)務(wù)運(yùn)維平臺(tái)對(duì)接起來(lái),我們希望虛擬機(jī)開(kāi)起來(lái)的時(shí)候,我們的業(yè)務(wù)程序也能在里邊,甚至一些業(yè)務(wù)配置也能跑起來(lái)。
4.要有一整套的監(jiān)控、報(bào)警、應(yīng)急響應(yīng)預(yù)案。有問(wèn)題早發(fā)現(xiàn)早解決。如果你遷移到虛擬化環(huán)境以后,將好多業(yè)務(wù)都放在宿主機(jī)上面,如果有一個(gè)宿主機(jī)故障,你的影響面要大很多。
軟硬件選型
圖:軟硬件選型
軟件方面,對(duì)于生產(chǎn)環(huán)境我們一般肯定要選擇穩(wěn)定版本。但是,在穩(wěn)定版本的基礎(chǔ)上,內(nèi)存版本越高越好,為什么?這里有一個(gè)數(shù)據(jù),數(shù)據(jù)時(shí)間比較長(zhǎng),同樣配置情況下CentOS 6.1和 CentOS 5.6的CPU計(jì)算能力的對(duì)比,CentOS 6.1要比CentOS 5.6好9%,就是內(nèi)核版本越高,它的CPU中斷和上下文切換優(yōu)化得越好,同時(shí)網(wǎng)絡(luò)IO、磁盤(pán)IO也優(yōu)化得越好。
硬件方面,盡量一開(kāi)始配置要稍微好一點(diǎn),因?yàn)榕渲玫迷綇?qiáng)悍,你可以虛擬的虛擬機(jī)越多,你最終肯定節(jié)省成本;另外,內(nèi)存也要稍微大一點(diǎn),因?yàn)槟愕乃拗鳈C(jī)跑上一段時(shí)間以后,往往你會(huì)發(fā)現(xiàn)內(nèi)存不夠,到時(shí)候又要加內(nèi)存。***,盡量選擇主流品牌。
圖:虛擬化引擎的對(duì)比
關(guān)于虛擬化引擎,目前常見(jiàn)的企業(yè)級(jí)的虛擬化引擎有四款:VMware、Hyper-V、Xen和KVM。
- VMware:最早是x86平臺(tái)上的虛擬化引擎,1998年就有了,所以它成熟穩(wěn)定,兼容性也非常好。但是Vmware是個(gè)閉源方案,而且收費(fèi)非常高,所以一般可能互聯(lián)網(wǎng)行業(yè)用得比較少一點(diǎn)。
- Hyper-V,微軟的Hyper-V發(fā)展非常迅速,尤其近幾年,但是Hyper-V也是個(gè)收費(fèi)的閉源方案,所以一般純Windows環(huán)境下可能用得比較多一點(diǎn)。
- Xen,最早開(kāi)源的虛擬化引擎,2003年就開(kāi)源了,但是Xen的架構(gòu)比較復(fù)雜,代碼就40多萬(wàn)行。
- KVM,比較新的虛擬化引擎,有后發(fā)優(yōu)勢(shì),架構(gòu)設(shè)計(jì)上比較簡(jiǎn)單,內(nèi)核一個(gè)模塊,只有2萬(wàn)行代碼。我這里有個(gè)數(shù)據(jù),2013年10月份openstack平臺(tái)上關(guān)于虛擬化引擎的一個(gè)選擇,這個(gè)其實(shí)是馬上快兩年的數(shù)據(jù),當(dāng)時(shí)KVM已經(jīng)占到71% 的份額,現(xiàn)在基本上國(guó)內(nèi)新一代的公有云基本上用的都是KVM。
#p#
圖:CPU技術(shù)選擇
關(guān)于CPU技術(shù)的選擇:
1. CPU綁定,這是非常實(shí)用的技術(shù),而且是一個(gè)非常神奇的技術(shù),可以在線做;
2. 在線添加,如果說(shuō)你前邊壓力模型分析比較好的情況下,基本上你不會(huì)用到在線添加;
3. host-passthrough,一般單機(jī)的情況下可以考慮這種技術(shù)。或者如果沒(méi)有做遷移,但有一批機(jī)器的CPU品牌型號(hào)都一模一樣的,也可以考慮這種配置;
4. Nested,就是個(gè)玩具,實(shí)驗(yàn)室里面PC上玩一玩。
圖:內(nèi)存技術(shù)選擇
對(duì)于KSM,建議生產(chǎn)環(huán)境關(guān)閉,測(cè)試環(huán)境和桌面虛擬機(jī)推薦使用;對(duì)于內(nèi)存氣球,相當(dāng)于在虛擬機(jī)里放了一個(gè)氣球,你想讓虛擬機(jī)釋放內(nèi)存,你就讓氣球膨脹,你想讓虛擬機(jī)有更高的內(nèi)存,可以讓氣球收縮;對(duì)于內(nèi)存限制,在一定范圍內(nèi)使用內(nèi)存,保證***內(nèi)存使用量。
總體來(lái)說(shuō),建議在技術(shù)生產(chǎn)環(huán)境中,盡量不使用各種內(nèi)存壓縮限制技術(shù)。
圖:網(wǎng)絡(luò)技術(shù)選擇
網(wǎng)絡(luò)方面要解決兩個(gè)問(wèn)題:可管理性和性能。網(wǎng)絡(luò)技術(shù)生產(chǎn)環(huán)境選擇的建議如下:
- Virtio:一般推薦優(yōu)先使用這個(gè),因?yàn)樗_實(shí)是一個(gè)性能非常好的解決方案;
- SRIOV網(wǎng)卡獨(dú)占:如果網(wǎng)絡(luò)壓力非常高或者對(duì)發(fā)包率有要求可以考慮使用這種方案;如果說(shuō)不是壓力特別高的,用Virtio夠了,因?yàn)檫@個(gè)方案不支持在線遷移,而且要手動(dòng)配置;
- 網(wǎng)卡多隊(duì)列:這在CentOS67剛推出來(lái)的時(shí)候測(cè)了一下,好像效果也不是太理想,因?yàn)檫@是個(gè)相對(duì)新的特性。
- Open vSwitch:如果在私有云的情況下一般是內(nèi)部用,管理方面要求不是特別強(qiáng)烈的情況下可以不用;如果是公有云,現(xiàn)在一般都要用,因?yàn)楣性茝?qiáng)調(diào)管理。
圖:磁盤(pán)技術(shù)選擇
關(guān)于磁盤(pán)技術(shù)生產(chǎn)環(huán)境選擇:
- 存儲(chǔ)方式,一般使用qcow2或者是IVM,因?yàn)檫@兩種方式有個(gè)共同的特點(diǎn)是可以動(dòng)態(tài)擴(kuò)容;
- 緩存方式,一般是單機(jī)的情況下我們使用writethrough,但是如果是集群的話,在需要遷移的情況下必須使用none;
- 磁盤(pán)驅(qū)動(dòng),一般是驅(qū)動(dòng)Virtio,它跟網(wǎng)卡的Virtio不一樣,因?yàn)榇疟P(pán)不管你在Windows還是Linux系統(tǒng)上,它的工作都非常穩(wěn)定,從來(lái)沒(méi)有碰到過(guò)問(wèn)題;
- SSD,如果你預(yù)算充足的話,那肯定就是純SSD,閉著眼睛就上了,但是如果你追求性?xún)r(jià)比,那可以考慮Flashcache這種方案。
How——如何部署虛擬化項(xiàng)目?
物理機(jī)轉(zhuǎn)虛擬機(jī),適用于物理機(jī)的利用率非常低、軟件配置環(huán)境非常復(fù)雜的場(chǎng)景,主要有靜態(tài)和動(dòng)態(tài)方式來(lái)完成這樣的轉(zhuǎn)換。
- 靜態(tài)方案,靜態(tài)的方案很簡(jiǎn)單,物理機(jī)關(guān)機(jī)克隆,然后在虛擬機(jī)那邊還原,類(lèi)似ghost的過(guò)程。一般推薦使用P2V這樣的工具,基本上把你做的過(guò)程完全自動(dòng)化。
- 動(dòng)態(tài)方案,在VMware以后用的都是動(dòng)態(tài)方案。它有個(gè)軟件裝到物理機(jī)里面,物理機(jī)不關(guān)機(jī),然后將物理機(jī)上面的文件拷到虛擬機(jī)里面,就可以跑起來(lái)。
宿主機(jī)監(jiān)控
監(jiān)控方面有幾個(gè)注意點(diǎn):硬件方面,我們就使用帶外管理卡,因?yàn)楝F(xiàn)在的帶外管理卡非常完善了;CPU方面,我們建議每個(gè)核都要監(jiān)控起來(lái),還要設(shè)報(bào)警;內(nèi)存方面,Swap要監(jiān)控起來(lái);磁盤(pán)網(wǎng)絡(luò)方面,在上線之前要做壓力測(cè)試,要得到一個(gè)極限數(shù)據(jù),然后根據(jù)極限數(shù)據(jù)設(shè)置一個(gè)罰值。
災(zāi)備實(shí)踐經(jīng)驗(yàn)
災(zāi)備有兩種思路:1. 應(yīng)用層災(zāi)備,基本上跟原來(lái)物理機(jī)上一樣,你在物理機(jī)上怎么做災(zāi)備,在虛擬機(jī)上用同樣的方法做災(zāi)備;2. 虛擬化災(zāi)備,做快照,做多份的鏡像復(fù)制。
一般建議在應(yīng)用層次做災(zāi)備,因?yàn)樵趹?yīng)用層做災(zāi)備消耗的資源要少很多。注意的是,災(zāi)備要定期演練,一方面讓大家熟悉過(guò)程,再來(lái)驗(yàn)證一下災(zāi)備這個(gè)機(jī)制到底是不是生效。
#p#
公有云選擇
圖:公有云的選擇
關(guān)于共有云的選擇,往往你選擇公有云是因?yàn)槭袌?chǎng)因素,比如價(jià)格;第二個(gè)是口碑;第三個(gè)是網(wǎng)絡(luò)質(zhì)量,但是大家往往容易忽略,我建議如果選公有云,對(duì)這一塊也要兼顧起來(lái)。
公有云能提供一些比如數(shù)據(jù)分析運(yùn)維工具,包括我們?nèi)ミ\(yùn)維,工具豐富的平臺(tái)會(huì)更受運(yùn)維喜歡。現(xiàn)在,公有云廠商也開(kāi)始提供一些物理機(jī)支持,一些高壓力的業(yè)務(wù)可以考慮放到物理機(jī)上面。
公有云選擇好以后,我們?cè)诠性粕厦嫒绾芜\(yùn)維,按照前面提到的流程進(jìn)行,可以保證在公有云上面跑得比較穩(wěn)定,而且底層的技術(shù)不用擔(dān)心了,所以一般中小企業(yè)可以考慮用公有云。
總結(jié):
不論遷移前還是遷移完后,業(yè)務(wù)穩(wěn)定是***位的,一定要選擇成熟的技術(shù)和比較好的預(yù)案,同時(shí)也一定要對(duì)業(yè)務(wù)比較熟悉,這樣你就知道如何根據(jù)壓力搭配,而且還可以知道優(yōu)先保障的級(jí)別。
***,所有的一切就是兩個(gè)字——口碑,如果你的口碑做起來(lái)了,你在企業(yè)內(nèi)部會(huì)越推越順,甚至你不推都有人來(lái)找你做虛擬化。相反,如果你的口碑沒(méi)做起來(lái),你做的幾個(gè)項(xiàng)目都砸了,那基本上就沒(méi)人找你,你就做不下去了。
附:KVM學(xué)習(xí)資料,摘自《深度實(shí)踐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虛擬化的鏡像管理工具,可以對(duì)鏡像進(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ā)布頁(yè)面
Libvirt更新頁(yè)面鏈接:
http://www.libvirt.org/news.html
QEMU更新頁(yè)面鏈接:
http://wiki.qemu.org/Download
Fedora新版本特性鏈接:
https://fedoraproject.org/wiki/Features4 兩個(gè)非常不錯(cuò)的網(wǎng)站
(1)虛擬機(jī)技術(shù)
http://virtualizationreview.com/home.aspx
(2) IBM developerworks虛擬化專(zhuān)題
http://www.ibm.com/developerworks/cn/linux/theme/virtualization/index.html
5 虛擬化管理軟件
PVE官網(wǎng)http://pve.proxmox.com
oVirt 官網(wǎng)http://www.ovirt.org 中國(guó)社區(qū)http://ovirt-china.org
http://cloudstack.apache.org
OpenStack官網(wǎng) www.openstack.org 中國(guó)社區(qū)www.openstack.cn
Convirt 官網(wǎng) www.convirture.com
Puppet虛擬化組件 https://github.com/carlasouza/puppet-virt