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