譚文貴
(中國移動通信集團(tuán)重慶有限公司 重慶市 401121)
隨著開源軟件的大量使用,核心業(yè)務(wù)部署在基于Openstack 架構(gòu)下的KVM 虛擬化平臺使用較多,而KVM 虛擬機(jī)的高可用方案不夠完善?,F(xiàn)有Openstack 架構(gòu)下KVM 虛擬機(jī)高可用方案實現(xiàn)上,主要的缺點有:
(1)通過節(jié)點間心跳來確定計算節(jié)點的狀態(tài),計算節(jié)點狀態(tài)監(jiān)控和虛擬機(jī)狀態(tài)監(jiān)控網(wǎng)絡(luò)未分離,方法并不可靠;
(2)集群內(nèi)虛擬機(jī)遷移未考慮業(yè)務(wù)特點與底層服務(wù)器性能的結(jié)合,未充分考慮資源性能的合理利用,會出現(xiàn)計算資源浪費或不能很好滿足業(yè)務(wù)性能需求的情況;
(3)集群內(nèi)KVM 虛擬機(jī)遷移未考慮同一類型業(yè)務(wù)分布的宿主機(jī)對應(yīng)的物理機(jī)柜位置,未充分考慮機(jī)柜掉電的高可用保護(hù)和同類型的業(yè)務(wù)分散部署等問題。
鑒于上述的分析,本文提出一種Openstack 架構(gòu)下KVM 虛擬機(jī)高可用方案來保障業(yè)務(wù)連續(xù)性,用以解決現(xiàn)有技術(shù)中存在的上述問題。
本文提出一種實現(xiàn)KVM 虛擬機(jī)高可用的方法,系統(tǒng)網(wǎng)絡(luò)總體架構(gòu)如圖1 所示,本方案涉及的主體監(jiān)控任務(wù)由計算節(jié)點監(jiān)控服務(wù)器和kvm 虛擬機(jī)監(jiān)控服務(wù)器共同完成。計算節(jié)點監(jiān)控服務(wù)器:控制中樞,用于監(jiān)控計算節(jié)點狀態(tài)。采用雙機(jī)熱備方式部署,實現(xiàn)監(jiān)控節(jié)點自身高可用。kvm 虛擬機(jī)監(jiān)控服務(wù)器:注冊中心,用來監(jiān)控虛擬機(jī)狀態(tài)。采用負(fù)載分擔(dān)方式進(jìn)行,可實現(xiàn)水平擴(kuò)展,實現(xiàn)監(jiān)控節(jié)點自身高可用。
網(wǎng)絡(luò)總體架構(gòu)采用網(wǎng)絡(luò)分離的方式搭建,分為管理網(wǎng)絡(luò)和生產(chǎn)網(wǎng)絡(luò),計算節(jié)點監(jiān)控服務(wù)器和kvm 虛擬機(jī)監(jiān)控服務(wù)器部署在管理網(wǎng),采用網(wǎng)絡(luò)交換機(jī)vlan 隔離方式。計算節(jié)點部署在生產(chǎn)網(wǎng),集群采用網(wǎng)絡(luò)交換機(jī)vlan 進(jìn)行隔離,每個計算節(jié)點上都安裝有虛擬機(jī),每個虛擬機(jī)都注冊到kvm 虛擬機(jī)監(jiān)控服務(wù)器上。kvm 虛擬機(jī)監(jiān)控服務(wù)器用于監(jiān)控虛擬機(jī)狀態(tài),計算節(jié)點監(jiān)控服務(wù)器監(jiān)控計算節(jié)點狀態(tài)。通過對計算節(jié)點和虛擬機(jī)分別進(jìn)行監(jiān)控,并結(jié)合網(wǎng)絡(luò)狀況分析,定位故障原因,最終決定是否對虛擬機(jī)進(jìn)行恢復(fù)和遷移。
kvm 虛擬機(jī)遷移云管理平臺接口調(diào)用邏輯架構(gòu)如圖2 所示,本方案中云管理平臺接口調(diào)用涉及的模塊有:計算節(jié)點虛擬機(jī)agent部署模塊、kvm 虛擬機(jī)監(jiān)控服務(wù)器zookeeper 部署模塊、云管理平臺監(jiān)控程序部署模塊、云管理平臺高可用程序模塊、云管理平臺接口程序模塊。通過云管理平臺進(jìn)行統(tǒng)一調(diào)度管理和靈活的疏散策略實現(xiàn)方法,提升遷移操作效率和準(zhǔn)確性,遷移過程全程可監(jiān)控。

圖1:系統(tǒng)網(wǎng)絡(luò)總體架構(gòu)

圖2:云管理平臺接口調(diào)用邏輯架構(gòu)
本方案將kvm 虛擬機(jī)遷移管理對接云管理平臺,虛擬機(jī)遷移云管理平臺接口調(diào)用步驟如下:
步驟1:kvm 虛擬機(jī)監(jiān)控服務(wù)器zookeeper 監(jiān)控agent 心跳狀態(tài),當(dāng)發(fā)現(xiàn)agent 心跳狀態(tài)異常,通知給云管理平臺監(jiān)控程序進(jìn)行處理,跳轉(zhuǎn)到步驟2。
步驟2:云管理平臺監(jiān)控程序接收到zookeeper 報告的agent異常后,需要登陸agent 部署機(jī)器,判斷機(jī)器是否發(fā)生故障。并對agent 進(jìn)行重啟操作,若啟動失敗,跳轉(zhuǎn)到步驟啟動成功跳轉(zhuǎn)到步驟1。

圖3:kvm 虛擬機(jī)高可用調(diào)度流程圖
步驟3:失敗后,云管理平臺高可用程序自動監(jiān)控,根據(jù)設(shè)置的故障處理策略,找到一臺最優(yōu)機(jī)器。調(diào)轉(zhuǎn)到步驟4。
步驟4:云管理平臺接口程序,對主機(jī)下虛擬機(jī)進(jìn)行遷移操作,并對虛擬機(jī)進(jìn)行啟動。
Openstack 架構(gòu)下kvm 虛擬機(jī)高可用調(diào)度流程圖如圖3 所示,本方案在高可用調(diào)度過程中涉及的模塊有:監(jiān)控平臺模塊、云管理平臺調(diào)度模塊、短信或郵件能力平臺模塊、運維管理員監(jiān)控確認(rèn)模塊、虛擬機(jī)遷移疏散策略。
kvm 虛擬機(jī)高可用調(diào)度步驟如下:
① 通過計算節(jié)點和虛擬機(jī)分離監(jiān)控,發(fā)現(xiàn)故障主機(jī),隔離故障主機(jī)并記錄故障主機(jī)ID;
② 判斷故障主機(jī)所在的集群是否開啟高可用功能,如果開啟進(jìn)入步驟③;如果未開啟高可用功能進(jìn)入步驟④;
③ 集群自動化程度判斷,如果手動,選擇要疏散的主機(jī)進(jìn)入步驟⑥;如果半自動,發(fā)送確認(rèn)短信,進(jìn)入步驟⑤;如果自動直接進(jìn)入步驟⑥;
④對于不可疏散的虛擬機(jī)發(fā)送告警,分別處理不可疏散的虛擬機(jī);
⑤調(diào)用短信能力發(fā)送,執(zhí)行短信發(fā)送,發(fā)送確認(rèn)內(nèi)容,進(jìn)入步驟⑦;
⑥集群疏散策略調(diào)用,策略如下:
(1)只在集群自身內(nèi)部疏散;(2)優(yōu)先在集群內(nèi)部,剩余未疏散虛擬機(jī)疏散至高性能專屬集群;(3)只疏散至專用高性能專屬集群;(4)優(yōu)先高性能專屬集群,后在集群內(nèi)部疏散。
策略調(diào)用步驟如下:
步驟(1):進(jìn)行集群內(nèi)部根據(jù)底層物理服務(wù)器的高性能標(biāo)識專屬集群ID;
步驟(2):進(jìn)行計算節(jié)點宿主機(jī)對應(yīng)的機(jī)柜標(biāo)識ID;
步驟(3):根據(jù)kvm 虛擬機(jī)對應(yīng)業(yè)務(wù)對性能的需求,判斷是否向高性能專屬高可用集群疏散,如果滿足條件,執(zhí)行步驟(4);如果不滿足,執(zhí)行步驟(5);
步驟(4):在專屬集群內(nèi)根據(jù)業(yè)務(wù)類型結(jié)合步驟(2),判斷是否在同一機(jī)柜,執(zhí)行疏散策略,將同一類型業(yè)務(wù)進(jìn)行多機(jī)柜分散部署;
步驟(5):在非專屬集群內(nèi)部據(jù)業(yè)務(wù)類型結(jié)合步驟(2),判斷是否在同一機(jī)柜,執(zhí)行疏散策略,將同一類型業(yè)務(wù)進(jìn)行多機(jī)柜分散部署。
⑦確認(rèn)執(zhí)行疏散與否,如果疏散,進(jìn)入步驟⑥;如果不疏散,進(jìn)入步驟⑩結(jié)束;
⑧對于可用主機(jī)按照同類型業(yè)務(wù)多機(jī)柜分散部署,按照內(nèi)存、CPU 負(fù)載排序原則,進(jìn)入步驟⑨;
⑨判斷是否存在不可疏散的虛擬機(jī),如存在,分別處理不可疏散的虛擬機(jī);如不存在,進(jìn)行批量疏散,進(jìn)入步驟⑩;
⑩結(jié)束
本文闡述了一種Openstack 架構(gòu)下KVM 虛擬機(jī)高可用方案來保障業(yè)務(wù)連續(xù)性。
具體包括:
(1)提出一種監(jiān)控計算節(jié)點和KVM 虛擬機(jī)狀態(tài)的方法提升高可用有效性,采用計算節(jié)點和虛擬機(jī)分開監(jiān)控、管理網(wǎng)和業(yè)務(wù)網(wǎng)分開監(jiān)控的方法提高虛擬機(jī)監(jiān)控有效性;
(2)提出一種虛擬機(jī)遷移關(guān)聯(lián)業(yè)務(wù)性能需求和底層硬件性能的疏散策略及實現(xiàn)方法,提升資源使用效率;
(3)提出一種虛擬機(jī)遷移關(guān)聯(lián)業(yè)務(wù)分布與防止整機(jī)柜掉電高可用的疏散策略及實現(xiàn)方法,避免同一類型的所有業(yè)務(wù)部署到同一機(jī)柜,避免虛擬機(jī)遷移容易造成阻塞的問題,保障業(yè)務(wù)的連續(xù)性;
(4)提出一種虛擬機(jī)遷移通過云管理平臺進(jìn)行統(tǒng)一調(diào)度管理和靈活的疏散策略實現(xiàn)方法,提升遷移操作效率和準(zhǔn)確性,遷移過程易把控,遷移疏散策略靈活。