張軍利
IBM中國 北京 100101
開源軟件(Open Source Software,OSS)在近幾年發(fā)展迅猛。隨著大數(shù)據(jù)等相關(guān)技術(shù)在行業(yè)應(yīng)用上的快速發(fā)展,OSS所涉及的領(lǐng)域也從傳統(tǒng)的操作系統(tǒng)、Web平臺等向更廣闊的空間擴展,并獲得業(yè)界的廣泛認同。國內(nèi)外很多知名廠商在新一代服務(wù)器的開發(fā)上,與OSS進行了更為緊密的結(jié)合。
早期,X86平臺在OSS的發(fā)展方面優(yōu)勢明顯。但從2013年以后出現(xiàn)的新開源項目來看,OSS在X86和Power Systems平臺上的發(fā)展幾乎同步。這一方面得益于Power Systems平臺自身的發(fā)展壯大,另一方面則得益于Docker的出現(xiàn)。
2013年8月,IBM、Google、TYAN、NVIDIA、Mellanox等5家公司發(fā)起成立了OpenPOWER聯(lián)盟,揭開IBM Power Systems的開放之路。憑借IBM強大的投資力度和日漸成熟的OSS生態(tài)系統(tǒng), Power Systems系統(tǒng)級的實力得以發(fā)揮,在X86之外為用戶提供了更多甚至更好的選擇。
在新型應(yīng)用負載主導平臺的爭奪戰(zhàn)中,X86和Power Systems兩大平臺一直是競爭對手。而最近火熱的Docker將有望成為Power Systems在與X86的角逐賽中實現(xiàn)“彎道超車”的利器。
Docker[1]是PaaS(應(yīng)用平臺即服務(wù))提供商dotCloud在2013年推出的一款基于Linux容器(Linux Container,LXC)的高級容器開源引擎。它基于go語言并遵從Apache2.0協(xié)議開源,源代碼托管在 Github上。由于Docker通過操作系統(tǒng)層的虛擬化實現(xiàn)隔離,所以Docker容器在運行時不需要諸如VMware的vSphere、微軟的Hyper-V或Linux的KVM等傳統(tǒng)虛擬機(VM)的額外操作系統(tǒng)開銷,有效提高了資源利用率,并提升了IO等方面的性能。目前,Docker可以在容器內(nèi)部快速自動化部署應(yīng)用,并可以通過內(nèi)核虛擬化技術(shù)來提供容器的資源隔離與安全保障。
Docker在英語里的意思為“碼頭工人”,而其Logo(如圖1所示)可以說是對運行原理的形象描繪。一艘酷似鯨魚外形的大船,運載著一堆集裝箱前往各地的碼頭。而從其理論上來看,Docker就像是一個集裝箱,利用LXC技術(shù)來整合不同規(guī)模、類型、層級的應(yīng)用鏡像,先通過集中匯總后,再進行有序地分發(fā)。每個碼頭就是一臺服務(wù)器或VM,大船就是Registry,碼頭的工人就是核心Engine,進行集裝箱的裝配。當然,它還需要一系列外圍的支持,比如最重要的管理等。
圖1 docker的圖標
Docker引起當時開源軟件界的廣泛關(guān)注,其開發(fā)公司docCloud甚至直接更名為Docker。Docker的興起主要是因為它有效解決了當時開源軟件發(fā)展面臨的四個主要問題。
1) 環(huán)境管理復(fù)雜問題。從各種OS到各種中間件再到各種App,一款產(chǎn)品能夠成功發(fā)布,作為開發(fā)者需要關(guān)心的東西太多,且難于管理,這個問題在軟件行業(yè)中普遍存在。Docker可以簡化部署多種應(yīng)用實例工作,比如Web應(yīng)用、后臺應(yīng)用、數(shù)據(jù)庫應(yīng)用、大數(shù)據(jù)應(yīng)用等,比如Hadoop集群、消息隊列都可以打包成一個Image來實現(xiàn)部署。
2) 云計算時代的軟件管理問題。業(yè)務(wù)流程管理開發(fā)平臺(AWS)的成功,引導開發(fā)者將應(yīng)用轉(zhuǎn)移到云上,解決了硬件管理問題,然而軟件配置和管理相關(guān)的問題依然存在。Docker的出現(xiàn)正好能幫助軟件開發(fā)者開闊思路,嘗試新的軟件管理方法來解決這個問題。
3) 虛擬化手段的變化問題。云時代采用標配硬件來降低成本,采用虛擬化手段來滿足用戶按需分配的資源需求,并保證可用性和隔離性。相對于原有的KVM和Xen,Docker為用戶提供了更高效的運行環(huán)境、更加輕量級的LXC,以及更加靈活和快速的部署。
4) LXC的便攜性問題。LXC在Linux 2.6的Kernel里就已經(jīng)存在,但其設(shè)計之初并非為云計算考慮的,它缺少標準化的描述和容器的可便攜性,其構(gòu)建出的環(huán)境難于分發(fā)和實現(xiàn)標準化管理。而Docker這個問題上做出了實質(zhì)性的創(chuàng)新方法。
傳統(tǒng)虛擬化中包含兩種類型(如圖2所示),即Type-1和Type-2。Type-1是指在服務(wù)器的硬件平臺上先部署虛擬機管理層(Hypervisor),在Hypervisor之上生成虛擬機,再為每個虛擬機安裝操作系統(tǒng)、運行庫和相關(guān)的應(yīng)用。Type-2則在裸機之上先安裝操作系統(tǒng)(比如Linux或Windows),再安裝Hypervisor。Type-1虛擬化比較常見的是VMw are的vSphere、微軟的Hyper-V、Linux的KVM以及Xen;Type-2的典型代表是VMware的Workstation以及Oracle的VirtualBOX。Type-1型Hypervisor更接近硬件底層,所以可以更多地降低系統(tǒng)支出。但Hypervisor本身仍需一層基本的OS“墊底”。因為虛擬機都要先經(jīng)過本地的OS再透過Hypervisor調(diào)用服務(wù)器的物理硬件資源,所以依然存在系統(tǒng)開銷。
與傳統(tǒng)的服務(wù)器虛擬化相比,LXC是一個將Linux運行時、庫以及其他軟件運行支撐環(huán)境與相關(guān)應(yīng)用進行封閉的技術(shù)。它本身就源于操作系統(tǒng)的內(nèi)核(Linux Kernel),相當于系統(tǒng)的一個本地進程,與一個裸機(無虛擬化)應(yīng)用沒有區(qū)別,無需額外的虛擬化指令以及相應(yīng)的系統(tǒng)虛擬化支出。Docker就是以LXC為根基構(gòu)建的,在實現(xiàn)應(yīng)用間隔離的同時,減少Hypervisor虛擬化管理層,基本消除了額外的系統(tǒng)支出。這可以說是Docker區(qū)別于傳統(tǒng)服務(wù)器虛擬化的一個重要特點。
雖然LXC較傳統(tǒng)的服務(wù)器虛擬化有所改進,但在技術(shù)發(fā)展中也逐漸顯示出弊端。LXC缺少全局的統(tǒng)一標準化描述定義,它在原始開發(fā)中沒有過多考慮可遷移性(共享),所以在管理方面比較復(fù)雜。在“互聯(lián)網(wǎng)+云計算”時代,應(yīng)用大規(guī)模擴展部署的情況時常出現(xiàn),傳統(tǒng)LXC缺乏有效的應(yīng)對辦法。而Docker的誕生很好地解決了這個問題,通過“云+端”的理念,以PaaS云管理模式為容器技術(shù)賦予了新生。
圖2 Docker與傳統(tǒng)VM以及Linux容器技術(shù)(LXC)的對比
從Docker的應(yīng)用封裝架構(gòu)(如圖3所示)中可以看出,其最基礎(chǔ)的運行內(nèi)核與底層鏡像就源于Linux的內(nèi)核,用戶可以利用Dockerfile生成好的應(yīng)用鏡像上傳至遠端的Docker Registry,例如Docker公司自己運營的云服務(wù)或是私有的Docker Registry,也可以從Docker Registry里下載一個別人已經(jīng)建立好的鏡像直接運行。Docker賦予了LXC更好的靈活部署和快速應(yīng)變能力。
Docker Registry和Docker Engine是Docker體系中的兩個關(guān)鍵組成。Docker Registry通過Docker Hub進行索引,在遠端(或稱云端)負責收集與分發(fā)Docker的應(yīng)用鏡像(Images)。Docker Engine在客戶端負責構(gòu)建Docker應(yīng)用容器。這是一個典型的PaaS云服務(wù)理念。當然,用戶也可以在自己的數(shù)據(jù)中心內(nèi)部建立私有的Docker Registry,以方便在私有云內(nèi)迅速生成自己的Docker集群,應(yīng)對靈活的、大規(guī)模的應(yīng)用擴展需求,就相當于在企業(yè)數(shù)據(jù)中心內(nèi)部形成了一個“云+端”的Docker架構(gòu)。
圖3 Docke的架構(gòu)封裝
從創(chuàng)新和特點可以看出,Docker最明顯的優(yōu)勢在于大幅度變革了傳統(tǒng)應(yīng)用DevOps的模式和流程,可以讓開發(fā)者更專注于應(yīng)用的本身,從而使得應(yīng)用的更新與共享、遷移更為容易。這也是云時代特別被看重的特性。
在單一類別應(yīng)用的大規(guī)模部署方面,Docker有著得天獨厚的優(yōu)勢。通過便利的鏡像組合,Docker可以做到一次生成之后進行隨意地極速部署。在云計算和互聯(lián)網(wǎng)IT形態(tài)日益普及的趨勢下,應(yīng)用集群的動態(tài)擴展需求非常普遍,對于那些客戶流量波動性大的企業(yè)更是如此。例如,大型電商在做促銷時訪問量峰值可能是平時的十倍甚至百倍,如何平滑地快速擴展相關(guān)應(yīng)用集群成為決定業(yè)務(wù)營收的關(guān)鍵。而在一臺POWER8的雙路PowerLinux服務(wù)器上,僅需40秒就可以部署100個Apache Web服務(wù)器實例,這在以往的虛擬化環(huán)境中是不可想象的。
憑借著眾多新穎的特性、優(yōu)秀的性能表現(xiàn)以及項目本身的開放性,Docker迅速成為PaaS領(lǐng)域里不可或缺的成員。目前,Docker官方Registry所注冊保存的Docker鏡像已經(jīng)超過6萬個,并在不到兩年的時間里迅速獲得諸多廠商的青睞,其中不乏Google、Microsoft、VMware、IBM等行業(yè)領(lǐng)導者。
2014年,Google推出Kubernetes提供Docker容器的調(diào)度服務(wù);同年8月,Microsoft宣布在Azure上支持Kubernetes;隨后,傳統(tǒng)虛擬化巨頭VMware宣布與Docker強強合作[2]。2014年9月中旬,Docker獲得4 000萬美元的C輪融資,以推動分布式應(yīng)用方面的發(fā)展。2014年12月,IBM宣布其PaaS平臺BlueMIX正式支持Docker,并提供傻瓜級的操作,最大程度地降低了Docker對具體操作技能的要求。與此同時,IBM自主的硬件平臺——Power Systems服務(wù)器與System z大型主機也開始全面支持Docker,配合相應(yīng)的OSS環(huán)境的建設(shè),開始了針對X86平臺的“趕超”。
Power Systems和Docker彼此促進、互為助力,兩者的相互影響主要體現(xiàn)在兩個層面:硬件層面和基礎(chǔ)設(shè)施軟件層面。
最主要的影響表現(xiàn)在基于POWER8的新一代PowerLinux服務(wù)器上。在這個服務(wù)器上,Docker所支持的Linux平臺更為豐富,除RedHat與SUSE外,還加入了Ubuntu[3]。就硬件系統(tǒng)而言,POWER8平臺為Docker提供了更高性能和高RAS特性帶來的可用性保障。性能的提升一方面讓Docker應(yīng)用受益,另一方面也意味著在性能體驗相同的情況下,可以讓單機上的Docker部署密度更高。實驗表明,Docker在POWER8平臺上的部署密度較X86可提升2倍甚至更高。通過POWER8獨家的CAPI接口所連接的存儲(如FlashSystem全閃存陣列)與網(wǎng)絡(luò)平臺, POWER8平臺的整體性能表現(xiàn)與負載能力在外圍I/O層面得到極大擴展,配合POWER8服務(wù)器自身完善的RAS特性,為Docker提供了比X86更為可靠、綜合性能更好的平臺。
在基礎(chǔ)設(shè)施軟件層面,Docker的使用將進一步體現(xiàn)出Power Systems的優(yōu)勢。雖然Docker較傳統(tǒng)VM更具優(yōu)勢,但并不表示有了Docker就不需要虛擬化了。事實上,Docker與虛擬化平臺在很多場合是相輔相成的。Docker是基于Linux內(nèi)核的一種特殊進程,雖然它具備了一些虛擬化的特性,但仍不具備動態(tài)遷移、應(yīng)用環(huán)境混合部署等一些關(guān)鍵的虛擬化特性,也無法滿足更進一步的應(yīng)用隔離與安全性等需求;因此,有必要借助傳統(tǒng)虛擬化平臺的能力來幫助Docker應(yīng)對更多的場景需求。
從Docker和虛擬機的對比(如圖4所示)結(jié)果可以看出,Docker完全可以部署在傳統(tǒng)的虛擬化環(huán)境中。只要支持64位的Linux,就能部署Docker,并由此具備虛擬機本身的一些優(yōu)點。為此,微軟、VMware等傳統(tǒng)虛擬化巨頭均紛紛表示支持Docker在其平臺上的部署。
為驗證POWER架構(gòu)對Docker的天然優(yōu)異支持性,我們可以對PowerVM和其他Hypervisor上部署的結(jié)果進行比較分析。
首先,雖然PowerVM也是Type-1級別的Hypervisor,但它是更接近“裸機”的虛擬化解決方案,與POWER平臺有著天生的結(jié)合能力,所以在性能的體驗上與Docker可謂異曲同工。在PowerVM上部署Docker就等同于在裸機上進行部署,能提供更好的性能保證。
其次,通過PowerVM,POWER服務(wù)器可以被劃分成多個邏輯分區(qū)(LPAR,相當于VM),在其上同時部署UNIX(AIX)和Linux操作環(huán)境,從而實現(xiàn)異構(gòu)平臺的混載,而這是X86廠商所做不到的。同時,PowerVM是目前公認最安全的Hypervisor,基于PowerVM環(huán)境,Docker可以獲得更好的安全防護。
PowerVM+Power Systems可以為Docker提供比X86更為強大和靈活的虛擬化平臺,為Docker應(yīng)對更多的應(yīng)用場景,尤其是將其帶入UNIX/Linux混合應(yīng)用環(huán)境打下良好基礎(chǔ)。
此外,PowerKVM的正式發(fā)布為熟悉KVM的用戶向PowerLinux平滑遷移提供了保障。與X86的KVM相比,PowerKVM的能耗管理、RAS特性與CPU調(diào)用更為強大(例如EnergyScale、Extended Error Handling、微核模式等),可以為Docker提供更好的KVM虛擬化平臺。
圖4 Docker和虛擬機對比
在軟件層面,Docker研發(fā)成員正與相關(guān)合作方一起全力構(gòu)建面向POWER架構(gòu)的Docker環(huán)境。在云方面,諸如BlueMIX等產(chǎn)品(系統(tǒng))已經(jīng)可以支持Docker的部署,Docker也已經(jīng)可以裸機部署在SoftLayer平臺或SoftLayer的虛擬化平臺上。在端方面,眾多公司開始與Docker公司圍繞 Docker Hub Enterprise (DHE) 在企業(yè)級應(yīng)用領(lǐng)域展開緊密合作,其中IBM將通過集成方案和單獨產(chǎn)品兩種模式生產(chǎn)和銷售DHE,為用戶提供基于云或他們自己數(shù)據(jù)中心內(nèi)部的Docker分發(fā)服務(wù)。
目前,全球TOP15的Docker鏡像已經(jīng)或?qū)⒅С諴OWER平臺。其中,已經(jīng)支持POWER的鏡像包括Ubuntu、MySQL、Rails、Postgres、Wordpress、Redis、Mongo、Python、Base(deprecated Ubuntu)、Debian、Java等,BusyBox與Centos則正在路上。
在Docker的管理方面,借助OpenStack中的HEAT組件,業(yè)內(nèi)領(lǐng)先的云管理平臺ICM(IBM Cloud Manager with OpenStack,算是OpenStack的IBM發(fā)行版)都在加快完善對Docker的支持。這里的支持與傳統(tǒng)的HEAT不太一樣。ICM云管理平臺本身是跨異構(gòu)平臺的,包括POWER、System z以及X86,它為用戶提供了一個統(tǒng)一的管理環(huán)境,為Docker開辟了更為廣闊的應(yīng)用環(huán)境。
Docker的出現(xiàn)可以說在理念上實現(xiàn)了巧妙的創(chuàng)新,給軟件的開發(fā)運維管理(DevOps)帶來重要的變革,最重要的是為整體的應(yīng)用形態(tài)和應(yīng)用的快速部署帶來深遠影響,足以促進相關(guān)的IT技術(shù)與基礎(chǔ)架構(gòu)發(fā)生重大的變化,這種變化既帶來挑戰(zhàn),也帶來機遇。
面向未來,OSS將在未來的IT環(huán)境中扮演越來越重要的角色,借助Docker的發(fā)展,Power Systems超越X86已經(jīng)不再僅是個夢想。
參考文獻
[1]James Turnbull.Docker[M].北京:人民郵電出版社,2015
[2]What is Docker[EB/OL].[2015-01-03].https://www.docker.com/whatisdocker/
[3]IBM Inc.[EB/OL].[2015-01-03].http://www-03.ibm.com/systems/power/?lnk=mprSY-psys-usen