序
目前為止,OpenStack已經(jīng)走過了將近10個年頭。在這10年間,OpenStack沒有一刻停歇地發(fā)展壯大著,已經(jīng)有數(shù)以千計的開發(fā)者參與到完善OpenStack各項(xiàng)功能的工作中,數(shù)以百計的大型企業(yè)及不計其數(shù)的中小型企業(yè)正在采用并不斷豐富著OpenStack的使用場景。整個OpenStack生態(tài)已經(jīng)或者即將在后臺支撐和引領(lǐng)著我們生活和工作的方方面面。
毫無疑問,作為行業(yè)的領(lǐng)導(dǎo)者,英特爾在OpenStack上的投資也從未間斷過,無論是在產(chǎn)業(yè)上的推廣方面,還是在項(xiàng)目上的開發(fā)完善方面,英特爾都在不遺余力地投入。作為OpenStack基金會初期的會員之一,英特爾在國內(nèi)已經(jīng)和騰訊、百度、中國移動、中國聯(lián)通和中國電信等眾多公司在OpenStack的研發(fā)和使用上建立了牢固的合作關(guān)系。作為OpenStack代碼貢獻(xiàn)最大的10家公司之一,英特爾也常年活躍在Nova、Neutron、Cinder和Cyborg等各個主要的項(xiàng)目社區(qū)中。
中國一直都是英特爾重要的市場之一,擁有不計其數(shù)的有天賦且十分努力的年輕人,他們在不斷地為計算機(jī)科技的發(fā)展貢獻(xiàn)著力量。本書的組織編寫是為了幫助更多的人更好地理解OpenStack并更容易地為OpenStack在中國的發(fā)展做出自己的貢獻(xiàn)。英特爾中國一直都是中國開源社區(qū)的“黃埔軍!,在操作系統(tǒng)、虛擬化、云計算、大數(shù)據(jù)、機(jī)器學(xué)習(xí)、Web技術(shù)和安全等領(lǐng)域培育出了很多優(yōu)秀的技術(shù)人才和領(lǐng)軍人物,自然也不吝于為OpenStack開源生態(tài)在中國的教育和推廣盡一份力。
我非常希望本書能夠?qū)penStack愛好者、使用者和開發(fā)者有所幫助,也希望它成為OpenStack中國社區(qū)知識經(jīng)驗(yàn)積累的寶貴財富。
練麗萍
英特爾系統(tǒng)軟件開發(fā)部云計算軟件研發(fā)高級總監(jiān)
前言
至此落筆之際,OpenStack問世近10年。10年的時間對于很多項(xiàng)目來說已經(jīng)足夠走過一個從創(chuàng)建發(fā)展到?jīng)]落的輪回,而對于OpenStack來說,10年的時間仍然遠(yuǎn)遠(yuǎn)不夠讓我們看到它最終所能夠達(dá)到的高度。
從哲學(xué)的辯證角度:今天的必然正是由之前的一系列偶然所決定的。2010年的一個偶然,OpenStack由Rackspace和美國國家航空航天局合作發(fā)布。隨后的時間里,無數(shù)公司與個人偶然初識OpenStack并深陷其中。而正是這些偶然聯(lián)合在一起,決定了會有這樣一本書,會有現(xiàn)在寫下的這些話。那么,當(dāng)你偶然拿起這本書,偶然看到這段話,是否會問自己:這樣的偶然又會導(dǎo)致什么樣的必然?
如果你依然決定繼續(xù)這次的偶然之旅,還請你問自己一個問題:我是在強(qiáng)迫自己學(xué)習(xí)OpenStack嗎?很希望你能回答不是,但希望與現(xiàn)實(shí)往往有一段不小的“距離”,因?yàn)楹芏鄷r候,我們都是因?yàn)楦鞣N原因而強(qiáng)迫自己去喜歡的。或許,針對這個問題,最讓人愉悅的回答是“說實(shí)話,我學(xué)習(xí)的熱情從來都沒有低落過。Just for fun!”
其次,在你繼續(xù)之前,面對OpenStack這樣一個新生事物,最讓人惴惴不安的問題或許便是:我該如何更快、更好地適應(yīng)這個全新的世界?人工智能與機(jī)器學(xué)習(xí)領(lǐng)域研究的一個很重要的問題是“為什么我們小時候有人指著一匹馬告訴我們那是馬,于是之后我們看到其他的馬就知道那是馬了?”針對這個問題的一個結(jié)論是:我們頭腦里形成了一個生物關(guān)系的拓?fù)浣Y(jié)構(gòu),我們所認(rèn)知的各種生物都會被放進(jìn)這個拓?fù)浣Y(jié)構(gòu)里,而我們隨著年紀(jì)不斷成長的過程就是形成并完善各種各樣或樹形或環(huán)形等拓?fù)浣Y(jié)構(gòu)的過程,并以此來認(rèn)知我們所面對的各種新事物。
由此可見,或許我們認(rèn)知OpenStack最快也最為自然的方式就是努力在腦海里形成它的拓?fù)浣Y(jié)構(gòu),并不斷地進(jìn)行細(xì)化。比如,作為一個云計算的平臺,OpenStack包括了哪些功能,這些功能分別對應(yīng)哪些項(xiàng)目,各個項(xiàng)目又實(shí)現(xiàn)了哪些服務(wù)及功能,這些服務(wù)及功能又是以什么樣的方式實(shí)現(xiàn)的,等等。對于感興趣的項(xiàng)目或服務(wù),我們可以更為細(xì)致地勾勒其中的脈絡(luò)。這類似于我們頭腦里形成的有關(guān)一個城市的地圖,包含這個城市有哪些區(qū),區(qū)里又有哪些標(biāo)志性建筑及街道,而對于熟悉的地方,哪怕一個微不足道的角落,我們都可以將它的周圍放大、細(xì)化。
而對這個拓?fù)浣Y(jié)構(gòu)細(xì)化的過程能夠起到有效輔助作用的是概念空間的勾勒。站在架構(gòu)設(shè)計的角度,軟件從需求進(jìn)到架構(gòu)出的全過程中,勾勒、描繪概念空間是一個很重要的中間過程。這個階段會形成需要引入的各種新概念,如操作系統(tǒng)中的進(jìn)程、虛擬內(nèi)存、系統(tǒng)調(diào)用等,它們就類似于一個拓?fù)浣Y(jié)構(gòu)中的標(biāo)志性建筑,而我們在認(rèn)知、研究這個軟件時,描繪這個概念空間也就不可避免地成為重中之重。
本書的組織形式
本書的內(nèi)容組織正是為了盡力幫助讀者形成有關(guān)OpenStack及各個重要項(xiàng)目與功能的、比較細(xì)致的拓?fù)鋱D。
首先,第1~4章希望能夠幫助讀者對OpenStack有一個全面的認(rèn)識和了解,從而形成關(guān)于OpenStack整體的拓?fù)鋱D。
第1章主要介紹了OpenStack的成長史,以及它的體系結(jié)構(gòu)和社區(qū)現(xiàn)狀。
第2章介紹了OpenStack開發(fā)的基礎(chǔ)流程,以及如何分析OpenStack的源碼。
第3章介紹了OpenStack的底層基石——虛擬化。OpenStack的大多數(shù)使用者和開發(fā)者并不了解虛擬化的一些細(xì)節(jié),通過這一章的學(xué)習(xí),能夠?qū)penStack有一個更好的認(rèn)識。
第4章介紹了OpenStack眾多項(xiàng)目中所用到的通用技術(shù)。通過這一章的學(xué)習(xí),讀者在理解各個具體項(xiàng)目的設(shè)計與實(shí)現(xiàn)時,可以減少很多的阻礙。
然后,第5~14章對OpenStack主要組件及項(xiàng)目的實(shí)現(xiàn)進(jìn)行了介紹。按照認(rèn)識的發(fā)展規(guī)律,通過前面幾章的學(xué)習(xí),讀者應(yīng)當(dāng)已經(jīng)對OpenStack有了一個全面的認(rèn)識和了解,接下來就可以以興趣或工作需要為導(dǎo)向,尋找一個組件或項(xiàng)目,對其實(shí)現(xiàn)進(jìn)行深入的鉆研和分析。這些章節(jié)的作用是幫助讀者形成相應(yīng)項(xiàng)目的比較細(xì)致的拓?fù)浣Y(jié)構(gòu),并不追求對所有實(shí)現(xiàn)細(xì)節(jié)進(jìn)行詳盡分析。
第5章討論計算組件,也就是Nova項(xiàng)目。Nova實(shí)現(xiàn)了OpenStack這個虛擬機(jī)世界的抽象,控制著一臺臺虛擬機(jī)的狀態(tài)變遷與“生老病死”,管理著它們的資源分配。
第6章討論與存儲相關(guān)的4個項(xiàng)目:Swift、Cinder、Glance及Ceph。它們共同為這個虛擬機(jī)世界的主體——虛擬機(jī)提供了安身之本,負(fù)責(zé)為每臺虛擬機(jī)本身的鏡像及它所產(chǎn)生的各種數(shù)據(jù)提供一個家,盡量實(shí)現(xiàn)“居者有其屋”。
第7章討論網(wǎng)絡(luò)組件,也就是Neutron項(xiàng)目。沒有網(wǎng)絡(luò),任何虛擬機(jī)都將只是這個虛擬機(jī)世界中的“孤島”,不知道自己生存的價值。
第8章針對安全問題進(jìn)行討論,包括Keystone項(xiàng)目及可信計算池的相關(guān)內(nèi)容。
第9章討論有關(guān)計量與監(jiān)控的項(xiàng)目Ceilometer,計量與監(jiān)控是公有云運(yùn)營的一個重要環(huán)節(jié)。
第10章的內(nèi)容與物理機(jī)管理有關(guān),Ironic項(xiàng)目被應(yīng)用于OpenStack中的裸機(jī)管理和部署。
第11章介紹了OpenStack的控制面板。對于OpenStack來說,提供一個簡潔方便、用戶友好的控制界面給最終的用戶和開發(fā)者尤為重要。
第12章討論OpenStack對容器的支持,以及Kata安全容器項(xiàng)目。
第13章的內(nèi)容與部署有關(guān),但是這里討論的并不是部署的詳細(xì)步驟與過程,而是與部署有關(guān)的幾個主要項(xiàng)目。
第14章介紹了一個新興的項(xiàng)目Cyborg,旨在為加速資源(即GPU、FPGA、ASIC、NVMe、DPDK / SPDK等)提供通用管理框架。
感謝
作為英特爾的開源技術(shù)中心,參與OpenStack的開發(fā)與推廣是很自然的事情。除了為OpenStack的完善與穩(wěn)定貢獻(xiàn)更多的思考和代碼,我們也希望能通過這本書讓更多的人更快捷地融入OpenStack的大家庭。
如果沒有Mark Skarpness(英特爾副總裁兼系統(tǒng)軟件開發(fā)部總經(jīng)理、OpenStack基金會白金會員董事)、練麗萍(英特爾系統(tǒng)軟件開發(fā)部云計算軟件研發(fā)高級總監(jiān))、王慶(英特爾系統(tǒng)軟件開發(fā)部云計算軟件中國研發(fā)總監(jiān)、OpenStack基金會個人獨(dú)立董事)的支持,這本書不可能完成,謹(jǐn)在此感謝他們在本書編寫過程中的關(guān)懷與幫助。
也要感謝本書的編輯孫學(xué)瑛老師,從選題策劃到最后定稿的整個過程中,都給予了我們無私的幫助和指導(dǎo)。
然后要感謝參與第1版、第2版與第3版各章內(nèi)容編寫的各位同事,他們是王君毅、方亮、蘇濤、鐘露瑤、王昕然、王慶、丁建峰、任橋偉、陸連浩、翟綱、徐賀杰、程盈心、李曉燕、臧銳、賀永立、郭瑞景、喬立勇、陳巍、杜永豐、楊林、張磊、馮少合、金運(yùn)通、魏剛、田雙太、汪亞雷、譚霖、辛?xí)曰,為了本書的順利完成,他們付出了很多努力。他們不僅為英特爾開源技術(shù)中心做出了很多的貢獻(xiàn),而且長期活躍在中國的云計算技術(shù)生態(tài)系統(tǒng)中。
最后感謝所有對OpenStack抱有興趣或從事OpenStack工作的人,沒有你們的源碼與大量技術(shù)資料,本書便會成為“無源之水”。