李強+王寧



引言
企業私有云是為一個企業單獨使用而構建的,為其提供對數據、安全性和服務質量的有效控制。此模式賦予公司對于云資源使用情況的極高水平的控制能力,同時帶來建立并運作該環境所需的專門知識。
但是在互聯網時代,隨著企業業務的不斷發展,企業內部各需求部門對于應用系統的快速上線提出更高的要求,尤其是大數據平臺軟件,由于各業務部門對于資源的需求不同,在企業內部已經出現了大小規模不一、版本混亂的Hadoop分布式集群,而且資源在使用整合上存在利用率低、管理復雜等問題。如何支撐企業管理和運營效率提升,如何實現云計算和企業應用的快速銜接,如何基于私有云管理平臺實現平臺軟件服務資源的統一管理,如何實現軟件服務資源的快速響應,都需要我們認真加以研究。
本文從企業實際業務需求角度出發,基于企業私有“云”管理平臺,實現標準化軟件服務的自動化交付,有效提高了資源的整理利用率和軟件服務交付能力,節省投資成本。
1概述
關于云計算,從概念到成熟已經有10余年光景,大多數技術已經逐步成熟且得到廣泛應用,特別是對于大型企業來說,都在建設自己的企業私有云,用于支撐內部應用,且基于私有云管理平臺實現了IaaS層基礎資源(計算、存儲、網絡)的靈活快速分配,一定程度上滿足了企業對于基礎資源的快速響應需求。
公有云的發展充分印證了IaaS和PaaS交付是成功的,這里體現了標準化開發的重要性,而在企業私有云,由于需求規格不一、變化較大,平臺軟件服務的標準化建設反而進度緩慢,很多時候造成資源的浪費,這就需要企業注重云上軟件服務的整體規劃,自主掌控系統整體架構,從服務編排人手,提升平臺軟件的標準化水平,同時與企業IT新型人才實現聯動,培養DevOps人才,基于云平臺基礎架構和自動化編排工具實現自主開發運維,滿足個性化需求,實現軟件能力的快速交付。
本文從企業實際業務需求角度出發,基于企業私有“云”管理平臺,針對資源交付服務能力做一次案例實踐分享和探討,不涉及業務數據遷移、業務應用程序開發、測試和應用程序日常配置變更,通過實踐實現了云平臺和大數據資源運維架構一體化,基于虛擬化和Openstack編排工具完成標準化軟件服務的自動化交付,充分展示私有“云”管理平臺管理基礎架構資源的范圍,提升面向業務需求的軟件服務交付能力。
2私有云管理平臺快速交付服務能力實踐
2.1私有云管理平臺
私有云管理平臺面向企業內部IT支撐系統和業務平臺的資源需求,為用戶提供物理機、虛擬機、小型機、彈性塊存儲、軟件庫、公網IP地址、帶寬、防火墻、負載均衡等資源服務。云管理平臺負責私有云計算服務的運營和運維,并對私有云計算資源池系統以及其中的各類資源進行集中管理。
目前通信企業的資源異構形態嚴重、資源類型復雜、各種IT系統及發行版本眾多。在“云”服務能力的倡導下,各行各業都建設了自己專屬的基礎架構資源及其管理平臺,且大多數都基于開源項目Openstack研發。除了基于原生態的Openstack私有云管理平臺,還有更多基于Openstack開發衍生出的各種企業私有云管理平臺,其中包括諸如RedHat、Mariant、IBM、HPE、Easystack、Unistack等眾多國內外的IT技術服務公司的發行版。實際使用中,企業用戶或多或少都會接觸一個或多個發行版的Openstack,不同版本的Openstack平臺對基礎資源管理功能總體上是幾乎一致的,不過針對異構資源擴展管理能力的Openstack項目組件,隨著版本的不斷更新發布和具體的工程研究,項目開發實現還是有相當明顯差異性的。
由此產生基于Openstack服務all-in-one的廠商也越來越多,形成了以Openstack為技術核心的云服務廠商。由于Openstack技術越來越完善,之前以Openstack為技術瓶頸的服務能力越來越為大眾所接受,逐漸成為企業云管理平臺架構選型必須考慮的方案。
當前基礎設施架構環境下的云平臺,本質上屬于IT資源數據中心的旁側管理系統,主要用于控制基礎資源層,因此對于資源數據中心來說,要形成統一管理控制資源中心的所有資源其實還需要相當一段時間的錘煉。目前能治理數據中心級的資源管理服務廠商還不多,能夠滿足企業級數據中心復雜業務架構的服務廠商有限。圖1是目前以Openstack架構為技術標準的私有云服務提供廠商。
2.2 Hadoop平臺服務快速交付實踐
需求來源于Hadoop CDH平臺向HDP平臺遷移場景,通過虛擬資源交付一套Hadoop基礎架構平臺,該平臺主要通過MapReduce從數據源系統拉取數據并清洗輸出到HDFS,創建Hive數據表,使用Hive SQL對數據進行統計匯總運算,主要使用了大數據平臺中的HDFS、MapReduce、Hive,并使用Oozie進行任務編排。為了能夠有效的完成該遷移工作,我們制定了一套完整的遷移工作思路,用于指導整個遷移過程。平臺架構如圖2所示。
2.2.1遷移步驟及實踐
步驟一:差異性檢查
明確需要遷移的兩個平臺之間的差異、依賴組件的差異。檢查舊集群CDH和遷移目標集群HDP平臺特點,考慮到相關組件一般大版本號差異較小(除了從Hadoopl.x向Hadoop2:x升級),主要是組件的小版本號差異,理論上從低版本向高版本環境升級相對阻力較小,因為軟件升級一般都會考慮向下兼容,特制定以下版本遷移策略,如表1所示。
步驟二:參數修改
將舊平臺相關屬性配置參數更新至新平臺,如數據庫訪問地址,主機名稱等。核查項目代碼,將硬編碼、配置文件中和平臺相關的參數進行更新,主要包括Hadoop相關服務的參數配置、IP/host.name、數據庫地址、用戶名、密碼等,這一步需要細心核查,保證做到完全正確替換;當在調試階段時遇到一些舊平臺參數的報錯日志、連接不成功等現象時,一般都是參數修改不徹底導致的,可再針對性完成修改。endprint
步驟三:依賴更新
對于Java開發的應用,主要將CDH的相關依賴jar包更換為對應版本的HDP的jar包,重新打包編譯,因為版本的差異,可能涉及代碼級別的接口調用修改。
建議使用maven項目依賴管理工具來統一管理項目依賴以及打包上線的工作,如果使用ant之類的早期項目構建工具,建議優先改造成maven項目,這樣也可以顯著降低日后的項目維護成本。
使用maven構建項目時,按照第一步進行的差異性檢查清單,將對應組件的jar包名稱、版本進行更新。完成全部的更新后,使用“mvn package”完成對更新后的項目進行編譯打包。因為更新了iar包,對應的編程接口可能會發生變更,可以根據編譯過程中的編譯錯誤,逐一完成錯誤代碼片段的修改,直到程序可以正確編譯通過為止。
步驟四:測試調試
將編譯打包后程序部署到測試環境中,進行功能性、穩定性測試。功能性測試主要檢查程序的功能是否正常,產出的數據是否正確;穩定性測試主要檢查遷移后的應用在新平臺上可以長時間穩定運行。
步驟五:重新上線
通過功能性測試和穩定性測試后,將應用程序遷移到正式環境中(這里還需要做數據遷移,這里不展開討論),調試通過后,完成線上業務割接,后期再考慮下線舊有服務,最終應用能力的無縫遷移。
遷移過程中,主要在步驟2-4之間反復迭代若干次,遇到的主要問題是平臺參數配置錯誤和項目代碼依賴缺失、版本不一致的問題,占用研發人員較長時間,經過仔細的修改核對和嚴格測試,進一步展示基于云平臺實現大數據Hadoop平臺快速上線的有效實踐。
2.2.2基于虛擬化加快Hadoop集群交付
基于上述反復迭代實踐,對于Hadoop集群遷移有了比較深的理論基礎,為了加快Hadoop平臺服務交付,本文提出了一種基于虛擬化的Hadoop集群快速交付方法,適用于中小規模的Hadoop集群建設需求。
為了快速響應中小規模的Hadoop集群建設需求,本文從基礎架構設計出發,基于虛擬化搭建Hadoop平臺,根據CPU、內存、存儲實際需求分配資源,制定了Hadoop虛擬機模板,通過業務編排實現集群搭建、節點自動加載,通過自動化運維工具實現了Hadoop配置統一更新,從而創建了一套統一規格標準化的虛擬化Hadoop集群模型(對于特殊組件需求,由上層應用廠家專門定制打補丁),不再受限于有限的物理節點,實現了需求快速響應和架構彈性擴展,同時結合各個集群閑忙時特點,實現計算、I/0資源的高效利用。整個虛擬化Hadoop環境架構如圖5所示。
2.3常規軟件服務快速交付實踐
常規軟件服務交付主要通過云管理平臺編排能力實現,即通過虛擬資源交付一套業務應用程序,通過Openstack Heat編排交付IaaS資源,并通過編程接口基于虛擬機交付中間件、數據庫等一系列基礎軟件服務。為了能夠有效的交付應用服務,根據業務服務交付實際需要,本文設計了一套完整的編排流程來引領服務編排工作,用于指導整個應用軟件服務交付過程。一個完整的應用服務一般包括數據庫、中間件等軟件服務,下文主要依據Heat服務編排過程進行介紹:
第一步:編寫整套業務系統所需要的Heat模板,該模板在云管理平臺以服務目錄形式供終端用戶使用,Openstack Heat模板依照Heat統一模板編寫規范制定,比如heat中resource部分編排如下圖所示:
其他依照此模板編寫,最終可以將模板導入云管理平臺,自動化腳本和服務目錄能力交付如下圖所示:
第二步:依照架構中服務交付內容,通過SHELL或Perl或Python等腳本語言,完成組件資源自動化交付能力,比如以Weblogic為例,詳細闡明自動化腳本實現功能,完成Weblogic自動化服務交付能力,該腳本采用Shell編寫,經過了各種測試架構,可以直接使用。
第三步:基于云管理平臺操作編排接口,將Heat模板導人云平臺后,創建可供給終端用戶/租戶使用的服務目錄,交由租戶使用。當然服務目錄可以作為資源進行授權,也可以作為服務目錄管理和編排的實際交付服務,大致服務目錄如圖9所示。
第四步:當服務目錄完成授權后,租戶可以選擇可以交付的服務目錄,申請實現服務目錄,當然自動化服務目也需要提供各種參數信息,以此實現自動化交付軟件服務,如圖10所示(以Weblogic為例)。
第五步:服務目錄申請交付后進入服務運行模式,此模式需要相關運營和運維部門共同完成,大體流程如圖11所示。
綜述,租戶通過門戶啟動申請流程,基于以上五個步驟,可以開發各種不同自動化交付服務能力,同時根據技術標準和業務配置要求,最終實現整套業務在虛擬機環境下的自動化發布。
3結論
基于虛擬化和DevOps敏捷開發實現Hadoop集群的快速交付,部署時間可以壓縮到分鐘級,有效提高了資源的整理利用率,節省投資成本。
基于私有云管理平臺完成Hadoop集群、軟件服務的快速交付,再次證明云管理平臺加速交付服務的能力,通過云平臺構建大數據Hadoop服務,實現了云和大數據一體化環境架構的統一部署,使得企業私有云在標準化、池化、動態化、云化方面得到了進一步規范,私有云架構進一步成熟,提高了快速響應需求的能力,有利支撐了企業業務系統的快速上線。
實踐證明私有云管理平臺同時需要與企業開發運維團隊有效結合,面對不同的需求,在自動化部署遇到問題缺陷時,基于Openstack編排開發框架,運用Devops敏捷開發理念,不斷迭代開發解決并積累經驗,才能發揮現有私有云管理平臺自動化部署的最大效能,增強企業核心競爭力。endprint