譚文貴
(中國移動通信集團重慶有限公司 重慶市 401121)
隨著開源軟件的大量使用,核心業(yè)務部署在基于Openstack 架構下的KVM 虛擬化平臺使用較多,而KVM 虛擬機的高可用方案不夠完善?,F(xiàn)有Openstack 架構下KVM 虛擬機高可用方案實現(xiàn)上,主要的缺點有:
(1)通過節(jié)點間心跳來確定計算節(jié)點的狀態(tài),計算節(jié)點狀態(tài)監(jiān)控和虛擬機狀態(tài)監(jiān)控網(wǎng)絡未分離,方法并不可靠;
(2)集群內(nèi)虛擬機遷移未考慮業(yè)務特點與底層服務器性能的結合,未充分考慮資源性能的合理利用,會出現(xiàn)計算資源浪費或不能很好滿足業(yè)務性能需求的情況;
(3)集群內(nèi)KVM 虛擬機遷移未考慮同一類型業(yè)務分布的宿主機對應的物理機柜位置,未充分考慮機柜掉電的高可用保護和同類型的業(yè)務分散部署等問題。
鑒于上述的分析,本文提出一種Openstack 架構下KVM 虛擬機高可用方案來保障業(yè)務連續(xù)性,用以解決現(xiàn)有技術中存在的上述問題。
本文提出一種實現(xiàn)KVM 虛擬機高可用的方法,系統(tǒng)網(wǎng)絡總體架構如圖1 所示,本方案涉及的主體監(jiān)控任務由計算節(jié)點監(jiān)控服務器和kvm 虛擬機監(jiān)控服務器共同完成。計算節(jié)點監(jiān)控服務器:控制中樞,用于監(jiān)控計算節(jié)點狀態(tài)。采用雙機熱備方式部署,實現(xiàn)監(jiān)控節(jié)點自身高可用。kvm 虛擬機監(jiān)控服務器:注冊中心,用來監(jiān)控虛擬機狀態(tài)。采用負載分擔方式進行,可實現(xiàn)水平擴展,實現(xiàn)監(jiān)控節(jié)點自身高可用。
網(wǎng)絡總體架構采用網(wǎng)絡分離的方式搭建,分為管理網(wǎng)絡和生產(chǎn)網(wǎng)絡,計算節(jié)點監(jiān)控服務器和kvm 虛擬機監(jiān)控服務器部署在管理網(wǎng),采用網(wǎng)絡交換機vlan 隔離方式。計算節(jié)點部署在生產(chǎn)網(wǎng),集群采用網(wǎng)絡交換機vlan 進行隔離,每個計算節(jié)點上都安裝有虛擬機,每個虛擬機都注冊到kvm 虛擬機監(jiān)控服務器上。kvm 虛擬機監(jiān)控服務器用于監(jiān)控虛擬機狀態(tài),計算節(jié)點監(jiān)控服務器監(jiān)控計算節(jié)點狀態(tài)。通過對計算節(jié)點和虛擬機分別進行監(jiān)控,并結合網(wǎng)絡狀況分析,定位故障原因,最終決定是否對虛擬機進行恢復和遷移。
kvm 虛擬機遷移云管理平臺接口調(diào)用邏輯架構如圖2 所示,本方案中云管理平臺接口調(diào)用涉及的模塊有:計算節(jié)點虛擬機agent部署模塊、kvm 虛擬機監(jiān)控服務器zookeeper 部署模塊、云管理平臺監(jiān)控程序部署模塊、云管理平臺高可用程序模塊、云管理平臺接口程序模塊。通過云管理平臺進行統(tǒng)一調(diào)度管理和靈活的疏散策略實現(xiàn)方法,提升遷移操作效率和準確性,遷移過程全程可監(jiān)控。
圖1:系統(tǒng)網(wǎng)絡總體架構
圖2:云管理平臺接口調(diào)用邏輯架構
本方案將kvm 虛擬機遷移管理對接云管理平臺,虛擬機遷移云管理平臺接口調(diào)用步驟如下:
步驟1:kvm 虛擬機監(jiān)控服務器zookeeper 監(jiān)控agent 心跳狀態(tài),當發(fā)現(xiàn)agent 心跳狀態(tài)異常,通知給云管理平臺監(jiān)控程序進行處理,跳轉(zhuǎn)到步驟2。
步驟2:云管理平臺監(jiān)控程序接收到zookeeper 報告的agent異常后,需要登陸agent 部署機器,判斷機器是否發(fā)生故障。并對agent 進行重啟操作,若啟動失敗,跳轉(zhuǎn)到步驟啟動成功跳轉(zhuǎn)到步驟1。
圖3:kvm 虛擬機高可用調(diào)度流程圖
步驟3:失敗后,云管理平臺高可用程序自動監(jiān)控,根據(jù)設置的故障處理策略,找到一臺最優(yōu)機器。調(diào)轉(zhuǎn)到步驟4。
步驟4:云管理平臺接口程序,對主機下虛擬機進行遷移操作,并對虛擬機進行啟動。
Openstack 架構下kvm 虛擬機高可用調(diào)度流程圖如圖3 所示,本方案在高可用調(diào)度過程中涉及的模塊有:監(jiān)控平臺模塊、云管理平臺調(diào)度模塊、短信或郵件能力平臺模塊、運維管理員監(jiān)控確認模塊、虛擬機遷移疏散策略。
kvm 虛擬機高可用調(diào)度步驟如下:
① 通過計算節(jié)點和虛擬機分離監(jiān)控,發(fā)現(xiàn)故障主機,隔離故障主機并記錄故障主機ID;
② 判斷故障主機所在的集群是否開啟高可用功能,如果開啟進入步驟③;如果未開啟高可用功能進入步驟④;
③ 集群自動化程度判斷,如果手動,選擇要疏散的主機進入步驟⑥;如果半自動,發(fā)送確認短信,進入步驟⑤;如果自動直接進入步驟⑥;
④對于不可疏散的虛擬機發(fā)送告警,分別處理不可疏散的虛擬機;
⑤調(diào)用短信能力發(fā)送,執(zhí)行短信發(fā)送,發(fā)送確認內(nèi)容,進入步驟⑦;
⑥集群疏散策略調(diào)用,策略如下:
(1)只在集群自身內(nèi)部疏散;(2)優(yōu)先在集群內(nèi)部,剩余未疏散虛擬機疏散至高性能專屬集群;(3)只疏散至專用高性能專屬集群;(4)優(yōu)先高性能專屬集群,后在集群內(nèi)部疏散。
策略調(diào)用步驟如下:
步驟(1):進行集群內(nèi)部根據(jù)底層物理服務器的高性能標識專屬集群ID;
步驟(2):進行計算節(jié)點宿主機對應的機柜標識ID;
步驟(3):根據(jù)kvm 虛擬機對應業(yè)務對性能的需求,判斷是否向高性能專屬高可用集群疏散,如果滿足條件,執(zhí)行步驟(4);如果不滿足,執(zhí)行步驟(5);
步驟(4):在專屬集群內(nèi)根據(jù)業(yè)務類型結合步驟(2),判斷是否在同一機柜,執(zhí)行疏散策略,將同一類型業(yè)務進行多機柜分散部署;
步驟(5):在非專屬集群內(nèi)部據(jù)業(yè)務類型結合步驟(2),判斷是否在同一機柜,執(zhí)行疏散策略,將同一類型業(yè)務進行多機柜分散部署。
⑦確認執(zhí)行疏散與否,如果疏散,進入步驟⑥;如果不疏散,進入步驟⑩結束;
⑧對于可用主機按照同類型業(yè)務多機柜分散部署,按照內(nèi)存、CPU 負載排序原則,進入步驟⑨;
⑨判斷是否存在不可疏散的虛擬機,如存在,分別處理不可疏散的虛擬機;如不存在,進行批量疏散,進入步驟⑩;
⑩結束
本文闡述了一種Openstack 架構下KVM 虛擬機高可用方案來保障業(yè)務連續(xù)性。
具體包括:
(1)提出一種監(jiān)控計算節(jié)點和KVM 虛擬機狀態(tài)的方法提升高可用有效性,采用計算節(jié)點和虛擬機分開監(jiān)控、管理網(wǎng)和業(yè)務網(wǎng)分開監(jiān)控的方法提高虛擬機監(jiān)控有效性;
(2)提出一種虛擬機遷移關聯(lián)業(yè)務性能需求和底層硬件性能的疏散策略及實現(xiàn)方法,提升資源使用效率;
(3)提出一種虛擬機遷移關聯(lián)業(yè)務分布與防止整機柜掉電高可用的疏散策略及實現(xiàn)方法,避免同一類型的所有業(yè)務部署到同一機柜,避免虛擬機遷移容易造成阻塞的問題,保障業(yè)務的連續(xù)性;
(4)提出一種虛擬機遷移通過云管理平臺進行統(tǒng)一調(diào)度管理和靈活的疏散策略實現(xiàn)方法,提升遷移操作效率和準確性,遷移過程易把控,遷移疏散策略靈活。