一、 虛擬化集群介紹、設計思路及架構
使用虛擬化集群的目標是克服單機虛擬化的局限性,利用技術手段提高虛擬機可用性,最終達到業務不中斷或者減少中斷時間,確保業務數據更安全的目標。
1. 虛擬化集群介紹
1)什么是虛擬化集群
虛擬機集群最顯著的特征是有共享存儲,因為有了共享存儲,虛擬機就可以實現非常快速的在線遷移,并在虛擬化層配置高可用。筆者在生產環境使用的集群有兩種存儲方式,基于商業存儲和基于開源分布式文件系統。
2)虛擬化集群的高可用和基于應用層高可用的區別
高可用是經常用到的運維技術,在系統、網絡、數據庫、Web業務等各個應用層面都有使用。高可用技術是指至少有主備兩個節點,當主節點故障的時候,迅速切換到備用節點。為了避免備用節點誤判,有時候還有第三個節點,或者主節點和備用節點共同能訪問到的存儲空間,用于做仲裁判斷。應用層面的高可用還有一個特點,就是一般都有浮動IP,當切換發生的時候,IP從主節點漂移到備用節點。應用層面的高可用一般切換時間比較快,從幾毫米到幾秒中,同時應用層面的高可用一般需要專用軟件,比如常用的Keepalived,Heartbeat等。
虛擬化層面的高可用是虛擬機系統層面的高可用,即當一臺計算節點故障的時候,在另外一臺計算節點上自動將故障節點上的虛擬機啟動起來。注意如果虛擬機上的業務不能做到開機自啟動,即使虛擬機自動啟動了,并不能保證業務層面的自動恢復!
另外還有一個問題,就是即使虛擬機啟動起來了,當啟動到一半虛擬機的系統卡住了,也不能及時恢復業務!
虛擬化層的高可用一般業務恢復實際是系統重啟的時間,加上業務開機自啟動的時間,通常是分鐘級別。
雖然虛擬化層高可用有業務不能恢復的風險,業務恢復時間也相對比較長,但是虛擬化層高可用有個非常巨大的優勢,就是不需要在應用層面配置,大大的拓寬了高可用的適用范圍,使原來在應用層難以使用高可用技術的應用,也能做到高可用,尤其是在某些專用的軟件領域。
其實虛擬機層高可用和應用層面高可用并不矛盾,在虛擬機的系統里面,也可以配置應用層面的高可用,做這樣的配置的時候,注意主備節點放置到不同宿主機上!
3)虛擬化集群后端存儲的使用
最早的時候,筆者在生產環境使用的集群都是以機柜為單位的小集群,主要因為筆者一直搭建的是私有云,在IDC機房里面機柜都是要計算費用的,為了充分利用資源,合理節省成本,筆者私有云一個設計思想就是能夠按照機柜,靈活擴展或者伸縮。
后來隨著虛擬化的規模擴大,也進行了一些基于開源分布式文件系統集群的搭建,基于開源分布式文件系統的集群,規模可以更大,擴展性更好,適用于KVM的開源分布式文件系統在第9章、第10章都有詳細的介紹。開源的虛擬化管理平臺,本書第11章、第12章、第13章有詳細介紹,所以本章不再介紹開源分布式文件系統及管理平臺。
2. 使用虛擬化集群的優勢
虛擬化集群相對于單機虛擬化,有以下幾點優勢:
q 快速的在線遷移(Live Migration),設備、系統維護造成的業務計劃內停機時間減少到零。
q 高可用(HA),一臺計算節點故障,上面的虛擬機可以很快在其他計算節點上啟動運行起來,極大縮短計劃外停機時間。
q 動態資源調度,業務負載發生變化引起計算節點壓力分布不均勻時,可手動或者自動平衡物理機負載。也可在整體壓力較低的時間段,將虛擬機集中在部分計算節點上,將不用的計算節點臨時關閉,達到節能的目標。
q 業務快速部署,集群將資源池化,通過和管理平臺結合,在集群的容量范圍內,業務部署的速度非常快。
q 數據更安全,后端存儲采用冗余度更高的商業存儲,或者分布式文件系統,數據可靠性可以達到99.99%以上。
q 網絡速度、可靠性更高,集群網絡采用冗余架構,網絡設備、網絡連接都是雙冗余,網絡速度更高,可靠性也更高,單臺網絡設備、單根網線、單個網卡故障都不會引起網絡中斷。
提示:
1)什么是計劃內停機與計劃外停機
計劃內停機是指可預期可計劃的停機,比如定期的維護,提前通告的維護。計劃外停機是指突發事件引起的停機事件,比如硬件故障,網絡DDOS攻擊等。一般計劃內停機因為是提前預知的,會做好預防措施,不會有數據丟失,對業務的損失是比較小的。計劃外停機則因為是突發事件,對業務的損失要大很多。運維的重要職責之一就是通過技術手段減少計劃外和計劃內停機時間,對虛擬化來說,虛擬化集群能夠做到在線虛擬機遷移,并且是全冗余設計,需要計劃內硬件和軟件維護的時候,可以做到計劃內停機時間為零。當宿主機發生緊急硬件故障的時候,虛擬機可以很快在其他宿主機上開起來,所以虛擬化集群也能有效降低計劃外停機。
2)在線遷移并不是災備手段
在線遷移實際遷移的是虛擬機的內存,當宿主機發生故障的時候,虛擬機的內存信息已經丟失了,這時候是不能再去做虛擬機的在線遷移的。所以在線遷移解決的是有計劃的維護問題,比如要升級宿主機內存,可以將宿主機上的虛擬機在線遷移到其他宿主機上,內存升級完成后,在將虛擬機在線遷移回來。
3. 集群設計及架構
1)虛擬化集群設計
為保證虛擬機的盡量的在線時間,靈活的擴展,虛擬化集群的設計需要滿足以下要求:
q 有共享存儲,虛擬機能夠在線遷移;
q 通過增加計算節點、存儲、網絡設備可以橫向擴展;
q 沒有單點故障,計算節點有多個,商業存儲為雙控制器,分布式文件系統鏡像寫多份,網絡設備冗余;
q 性能滿足要求,并且通過增加設備,性能可以擴展
2)虛擬化集群的架構
一套虛擬化集群體系包括以下組成部分:
q 若干計算節點,承載虛擬機的計算、內存、網絡資源;
q 管理節點及管理平臺,管理虛擬機的鏡像,虛擬機生成、維護、銷毀的生命周期,虛擬機的調度;
q 后端存儲,存儲虛擬機鏡像存放;
q 網絡設備。
二、虛擬化集群技術方案
1. 前端計算
虛擬化集群前端計算節點可以使用普通機架式服務器,也可以使用刀片服務器。
1)機架式服務器做為計算節點的優缺點
機架式服務器做為計算節點的優點是:
q 架構簡單,安裝配置方便;
q 擴展節點數量和升級較為容易;
q 成本有一定的優勢。
缺點是:
q 隨著節點數量的增多,占用的機柜空間也在增大,單機柜服務器密度低;
q 網絡結構復雜,每臺服務器有公網、私網、存儲網;
q 交換機端口數量多,接線容易出錯。
2)刀片服務器做為計算節點的優缺點
使用刀片服務器作為計算節點的優點是:
q 刀片服務器內置交換機,可以靈活的配置網絡;
q 刀片服務器連線簡單,占有交換機端口數量少,網絡非常簡潔;
q 單位機柜服務器密度大;
q 功耗低;
q 刀片服務器冗余電源和風扇,冗余交換模塊,是全冗余的架構。
使用刀片服務器的缺點是:
q 成本較高;
q 配置復雜,安裝配置需要專業的知識;
q 往往需要改造機柜電源,并受限于機柜最高電流。
另外目前還有一種多節點服務器,就是在1U或者2U的空間里面,能夠容納2到4臺服務器,這些服務器很像是刀片服務器,共享電源和機框,但是網絡接口獨立。多節點服務器密度介于機架式服務器和刀片服務器之間,使用上和機架式服務器完全一樣。
服務器的配置選型,根據筆者的經驗,選擇比較高的配置,雖然初期投入高,但是長遠看,因為能夠容納更多的虛擬機,其實是節省成本的。宿主機在運行一段時間后,往往會發現內存是瓶頸,所以一開始配置的時候,內存盡量配置大一些。具體宿主機如何選型在第15章已經有詳細的介紹,本章就不重復介紹了。
3. 后端存儲技術方案
虛擬化集群的后端存儲可以使用商業存儲和分布式文件系統,商業存儲有三類:NAS、IP SAN、FC SAN。
1)NAS共享存儲
NAS(NETWORK ATTACHED STORAGE )即網絡附加存儲,網絡上直接掛接的存儲設備,相當于一個網絡文件共享服務器。
測試環境可以用一臺普通的主機模擬NAS,只要這臺主機有自己的磁盤和文件系統,并且對外提供訪問文件系統的接口。最常見的NAS有Linux下的NFS和windows下的CIFS。
2)IP SAN共享存儲
SAN(STORAGE AREA NETWORK)即存儲區域網絡,主要是基于TCP/IP的網絡來實現數據存取,即傳輸介質為IP網絡。通過IP網絡將計算計算節點和存儲設備連接起來,計算節點通過發送Block I/O的請求到存儲設備,最常見的就是用ISCSI技術,計算節點通過SCSI協議發出讀取數據的請求,并用TCP/IP包封裝SCSI包,就可以再TCP/IP網絡中進行傳輸,即SCSI over TCP/IP。
測試環境也可以用普通服務器模擬ISCSI存儲。
3)FC存儲
FC(Fibre Channel 光纖通道)SAN類似于IP SAN,只是以光纖作為傳輸介質,性能較高,目前使用最廣。計算節點上安裝光纖接口的HBA(Host BusAdapter,提供服務器內部的I/O通道與存儲系統的I/O通道之間的物理連接)卡,為了冗余HBA卡一般有兩塊,分別接兩臺光纖交換機,存儲一般有兩個控制器,也分別接兩臺光纖交換機,達到全容易的目標。FC SAN計算節點直接將I/O請求通過FC網絡發送到存儲設備,性能非常高。
4)生產環境如何選擇存儲類型
在實際部署的生產環境中,選擇存儲類型,取決于以下幾個因素:
q 業務性能及可靠性需求
q 預算
q 運維對技術熟悉程度
一般來說,對性能要求非常高的業務,使用FC SAN存儲,FC SAN存儲也是成本最高的一種方案。如果業務性能需要稍低,可以使用NAS、IP SAN的存儲,NAS、IP SAN的存儲是性價比比較高的方式。如果業務主要是CPU消耗型的,可以考驗使用分布式文件系統,本書第9章介紹的DRBD、GlusterFS,第10章介紹的CEPH,工作都很穩定,但是性能相對比較低,很適合CPU消耗型的虛擬機。
關于NFS和ISCSI,業內一直有爭論,NFS配置簡單,但是因為是應用層的協議,有人認為性能低,其實商業存儲做了許多優化,性能也不見得比ISCSI差。如何選擇主要取決于預算、運維的技術習慣、具體的存儲品牌型號,筆者生產環境喜歡使用ISCSI存儲。
(內容節選自《深度實踐KVM》)