OpenStack設計與實現(第3版)
  • 推薦0
  • 收藏0
  • 瀏覽76

OpenStack設計與實現(第3版)

英特爾亞太研發有限公司 (作者)  孫學瑛 (責任編輯)

  • 書  號:978-7-121-39286-3
  • 出版日期:2020-08-07
  • 頁  數:500
  • 開  本:16(185*235)
  • 出版狀態:上市銷售
  • 維護人:孫學瑛
紙質版 ¥109.00
本書是一本介紹OpenStack設計與實現原理的書。本書內容以Train版本為基礎,覆蓋了OpenStack從學習方法到設計與實現等各個方面的內容,包括OpenStack的成長史、OpenStack開發的基礎流程、如何分析OpenStack的源碼、OpenStack的底層基石——虛擬化、OpenStack眾多項目中所用到的通用技術,以及OpenStack主要組件及項目的實現,致力于幫助讀者形成OpenStack及其各個主要組件與項目的拓撲圖。
本書語言通俗易懂,能夠帶領讀者更為快速地走入OpenStack的世界并做出自己的貢獻。本書適合希望參與OpenStack開發的讀者,也適合對OpenStack茫然的初學者,以及有一定使用部署經驗但是希望了解OpenStack實現原理的廣大用戶。
OpenStack里程碑作品,英特爾亞太研發有限公司OpenStack基金會個人獨立董事王慶團隊作品、覆蓋了OpenStack從學習方法到設計與實現,輕松形成OpenStack及其各個主要組件與項目的拓撲圖

目前為止,OpenStack已經走過了將近10個年頭。在這10年間,OpenStack沒有一刻停歇地發展壯大著,已經有數以千計的開發者參與到完善OpenStack各項功能的工作中,數以百計的大型企業及不計其數的中小型企業正在采用并不斷豐富著OpenStack的使用場景。整個OpenStack生態已經或者即將在后臺支撐和引領著我們生活和工作的方方面面。
毫無疑問,作為行業的領導者,英特爾在OpenStack上的投資也從未間斷過,無論是在產業上的推廣方面,還是在項目上的開發完善方面,英特爾都在不遺余力地投入。作為OpenStack基金會初期的會員之一,英特爾在國內已經和騰訊、百度、中國移動、中國聯通和中國電信等眾多公司在OpenStack的研發和使用上建立了牢固的合作關系。作為OpenStack代碼貢獻最大的10家公司之一,英特爾也常年活躍在Nova、Neutron、Cinder和Cyborg等各個主要的項目社區中。
中國一直都是英特爾重要的市場之一,擁有不計其數的有天賦且十分努力的年輕人,他們在不斷地為計算機科技的發展貢獻著力量。本書的組織編寫是為了幫助更多的人更好地理解OpenStack并更容易地為OpenStack在中國的發展做出自己的貢獻。英特爾中國一直都是中國開源社區的“黃埔軍?!?,在操作系統、虛擬化、云計算、大數據、機器學習、Web技術和安全等領域培育出了很多優秀的技術人才和領軍人物,自然也不吝于為OpenStack開源生態在中國的教育和推廣盡一份力。
我非常希望本書能夠對OpenStack愛好者、使用者和開發者有所幫助,也希望它成為OpenStack中國社區知識經驗積累的寶貴財富。

練麗萍
英特爾系統軟件開發部云計算軟件研發高級總監







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

目錄

第1章 初識OpenStack 1
1.1 從虛擬化到OpenStack 1
1.1.1 虛擬化 1
1.1.2 云計算 2
1.1.3 OpenStack 4
1.2 OpenStack基金會及管理模式 9
1.2.1 董事會 10
1.2.2 技術委員會 11
1.2.3 用戶委員會 12
1.3 OpenStack體系結構 12
1.4 OpenStack項目發展流程 20
1.4.1 新項目 20
1.4.2 孵化項目、集成項目和核心項目 20
1.4.3 大帳篷(Big Tent) 22
1.5 OpenStack社區 23
1.5.1 郵件列表 23
1.5.2 IRC和項目例會 24
1.5.3 Summit和Meetup 24
1.5.4 其他社交平臺 27
1.6 其他開源項目 28
1.7 OpenStack的技術發展趨勢 33

第2章 OpenStack開發基礎 36
2.1 相關開發資源 36
2.1.1 OpenStack社區 36
2.1.2 OpenStack文檔 36
2.1.3 OpenStack書籍 37
2.2 OpenStack開發的技術基礎 38
2.3 部署開發環境 39
2.3.1 Git 39
2.3.2 Devstack 40
2.4 瀏覽OpenStack源碼 43
2.4.1 瀏覽代碼的工具 44
2.4.2 分析源碼如何入手 45
2.5 OpenStack代碼質量保證體系 48
2.5.1 編碼規范 50
2.5.2 代碼評審Gerrit 53
2.5.3 單元測試Tox 57
2.5.4 持續集成Jenkins 60
2.6 如何貢獻 66
2.6.1 文檔 66
2.6.2 修補Bug 66
2.6.3 增加Feature 68
2.6.4 Review 71
2.6.5 調試 72

第3章 虛擬化 74
3.1 概述 74
3.1.1 虛擬化的實現方式 76
3.1.2 虛擬化的現狀和未來 78
3.2 高層管理工具 86
3.2.1 XenAPI 87
3.2.2 Libvirt 88
3.3 OpenStack相關實現 97
3.3.1 Libvirt驅動 98
3.3.2 XenAPI驅動 99

第4章 OpenStack通用技術 101
4.1 消息總線 101
4.2 SQLAlchemy和數據庫 106
4.3 RESTful API和WSGI 110
4.4 Eventlet和AsyncIO 119
4.5 命令行構建 120
4.6 OpenStack通用庫Oslo 124
4.6.1 oslo.config 124
4.6.2 oslo.db 126
4.6.3 oslo.i18n 130
4.6.4 oslo.messaging 131
4.6.5 stevedore 138
4.6.6 TaskFlow 141
4.6.7 cookiecutter 148
4.6.8 oslo.policy 149
4.6.9 oslo.rootwrap 150
4.6.10 oslo.test 153
4.6.11 oslo.versionedobjects 155

第5章 計算 159
5.1 Nova體系結構 160
5.2 Nova API 165
5.2.1 Nova v2.1 API 165
5.2.2 Nova API實現 167
5.3 Rolling Upgrade 175
5.4 Scheduler 184
5.4.1 調度器 184
5.4.2 Resource Tracker 188
5.4.3 調度流程 191
5.5 Cells v2 192
5.6 典型工作流程 194
5.6.1 創建虛擬機 194
5.6.2 冷遷移與Resize 195
5.6.3 熱遷移 197
5.6.4 掛起和恢復 199
5.6.5 Rebuild和Evacuate 200
5.7 資源管理服務Placement 200
5.7.1 Placement API 201
5.7.2 API版本管理 202
5.7.3 錯誤機制 204
5.7.4 管理Nova資源 204
5.7.5 查看資源消耗 211
5.7.6 Placement的發展 212

第6章 存儲 213
6.1 Swift 213
6.1.1 Swift體系結構 213
6.1.2 Ring 221
6.1.3 Swift API 231
6.1.4 認證 238
6.1.5 對象管理與操作 240
6.1.6 數據一致性 243
6.2 Cinder 246
6.2.1 Cinder體系結構 246
6.2.2 Cinder API 250
6.2.3 cinder-scheduler 253
6.2.4 cinder-volume 254
6.2.5 cinder-backup 259
6.3 Glance 261
6.3.1 Glance體系結構 261
6.3.2 Glance API 264
6.4 Ceph 268
6.4.1 Ceph體系結構 270
6.4.2 RADOS 272
6.4.3 Ceph塊設備 292
6.4.4 Ceph FS 296
6.4.5 Ceph與OpenStack 297

第7章 網絡 300
7.1 Neutron體系結構 300
7.1.1 Linux虛擬網絡 301
7.1.2 Neutron網絡資源模型 305
7.1.3 網絡實現模型 311
7.1.4 Neutron軟件架構 315
7.2 Neutron Plugin 316
7.2.1 ML2 Plugin 316
7.2.2 Service Plugin 320
7.3 Neutron Agent 323

第8章 安全 327
8.1 OpenStack安全概述 327
8.2 Keystone 328
8.2.1 Keystone體系結構 328
8.2.2 Keystone啟動過程 335
8.2.3 用戶認證及令牌獲取 337
8.2.4 Keystone 高階應用 343
8.3 可信計算池 346
8.3.1 體系結構 346
8.3.2 Intel TXT與TBoot 347
8.3.3 可信認證與OpenAttestation
項目 349
8.3.4 TrustedFilter 353
8.3.5 部署 355

第9章 計量與監控 357
9.1 Ceilometer 358
9.1.1 體系結構 358
9.1.2 Pipeline 360
9.1.3 Polling Agent與Pollster插件 362
9.1.4 Notification Agent與Notification Listener插件 363
9.1.5 Storage/DB 364
9.1.6 部署與使用 364
9.1.7 插件的開發 367
9.2 Aodh 374
9.2.1 體系結構 374
9.2.2 部署與使用 376
9.2.3 插件的開發 380
9.3 Gnocchi 386
9.3.1 體系結構 386
9.3.2 部署與使用 390
9.4 Panko 391

第10章 物理機管理 392
10.1 Ironic體系結構 392
10.1.1 Ironic Driver 395
10.1.2 Ironic API 399
10.1.3 Ironic Conductor 400
10.1.4 ironic-python-agent 401
10.1.5 ironic-inspector 402
10.2 Ironic中的網絡管理 402
10.2.1 物理交換機管理 402
10.2.2 多租戶網絡的支持 403
10.3 Ironic節點的注冊和啟動 405
10.4 Ironic使用技巧 407
10.4.1 如何設置MySQL的root密碼 407
10.4.2 Ironic環境搭建 408
10.4.3 Neutron配置 408
10.4.4 使用Devstack搭建
Ironic物理機環境 408

第11章 控制面板 413
11.1 Horizon體系結構 413
11.1.1 Horizon與Django 413
11.1.2 Horizon網站布局 416
11.1.3 Horizon源碼結構 418
11.2 Horizon部署 420
11.3 頁面渲染流程 423

第12章 容器 437
12.1 容器技術 437
12.1.1 容器的原理 437
12.1.2 常見的容器集群
管理工具 438
12.2 容器與OpenStack 442
12.2.1 nova-docker/heat-docker 443
12.2.2 Magnum 443
12.2.3 Murano 452
12.2.4 Kolla 453
12.2.5 Solum 454
12.2.6 Kuryr 456
12.2.7 容器技術與OpenStack的展望 457
12.3 Kata安全容器 458
12.3.1 容器技術與虛擬機技術 458
12.3.2 Kata容器技術與
實現原理 459
12.3.3 Kata容器架構及實現 460
12.3.4 Kata容器創建流程 461

第13章 部署 463
13.1 配置管理工具 464
13.2 OpenStack部署項目 466
13.2.1 Bifrost 467
13.2.2 Kolla 469
13.2.3 TripleO 476

第14章 加速設備管理 481
14.1 Cyborg體系結構 481
14.2 Cyborg數據模型 482
14.3 Cyborg與Nova等組件的
交互 486

讀者評論

澳洲幸运10现场开奖 广东11选五任5一定牛 精确排列五预测 七星彩大公鸡规律图 河南省体彩11选5 世界四大赌城的四大赌场 股票涨跌原理 股票涨跌是由谁决定的 湖北快3形态走势一定牛 重庆幸运农场快乐十分 江苏7位数20016期开奖结果查询 什么麻将能用真钱玩