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