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