OpenStack架構分析與實踐OpenStack架構分析與實踐

OpenStack架構分析與實踐OpenStack架構分析與實踐

《OpenStack架構分析與實踐》是中國鐵道出版社出版的圖書,作者是管增輝,曾凡浪。本書以實戰開發為原則,以關鍵模組架構分析及項目開發為主線,通過OpenStack開發中常用的8個典型組件和若干典型項目案例。

基本介紹

  • 書名:《OpenStack架構分析與實踐》
  • 作者:管增輝、曾凡浪
  • 出版社:中國鐵道出版社
  • ISBN:9787113249632 
內容簡介,圖書目錄,作者簡介,

內容簡介

本書以實戰開發為原則,以關鍵模組架構分析及項目開發為主線,通過OpenStack開發中常用的8個典型組件和若干典型項目案例,詳細介紹了雲平台中的計算、網路、存儲、服務編排、智慧型運維等模組,並針對OpenStack中通用的關鍵技術進行了詳細介紹。對於每一部分內容的講解,章節的後都會配備相應的實戰案例供大家參考。

圖書目錄

第1章 走進OpenStack
1.1 OpenStack是什麼 1
1.1.1 OpenStack的作用 1
1.1.2 OpenStack的套用場景 2
1.1.3 什麼類型的工作要學OpenStack 3
1.2 為什麼要學習OpenStack 3
1.2.1 OpenStack在雲計算中的地位 3
1.2.2 雲計算新時代:容器vs虛擬化 4
1.3 如何學習OpenStack 4
1.3.1 對學習者的技術要求 4
1.3.2 OpenStack的學習路線 4
1.4 OpenStack的基本架構 5
1.5 OpenStack的核心組件 7
1.5.1 計算資源管理:Nova組件 7
1.5.2 存儲資源管理:Cinder/Swift組件 8
1.5.3 網路資源管理:Neutron組件 9
第2章 OpenStack部署與社區貢獻流程
2.1 OpenStack部署方式 12
2.1.1 DevStack方式部署 13
2.1.2 手動部署分散式OpenStack環境 18
2.1.3 RDO方式部署OpenStack 22
2.2 為OpenStack社區作貢獻 25
2.2.1 提交前的環境準備 26
2.2.2 代碼貢獻流程 28
【示例2-1】代碼貢獻流程之bug Fix 28
2.2.3 文檔貢獻流程 30
【示例2-2】以heat為例來演示HTML的生成過程 31
2.2.4 其他內容的貢獻流程 32
2.3 開發工具之Pycharm 33
2.3.1 Pycharm的安裝與配置 33
2.3.2 使用Pycharm對代碼進行遠程調試 34
【示例2-3】通過Pycharm調試OpenStack中nova list的代碼 34
2.3.3 Pycharm與PDB的選用比較 35
【示例2-4】開發工具之PDB斷點調試 35
第3章 虛擬化
3.1 虛擬化技術的現狀 37
3.2 KVM的管理工具Libvirt 38
3.2.1 Libvirt簡介 38
【示例3-1】通過Libvirt提供的API virsh對虛擬機生命周期實現管理 39
3.2.2 Libvirt的體系結構 40
3.3 OpenStack與虛擬化的結合 42
3.4 虛擬機配置libvirt.xml詳解 45
第4章 OpenStack通用技術
4.1 RPC服務實現分析 49
【示例4-1】在OpenStack RPC中創建Server並實現Client向Server傳送請求
(以rpc、calll為例) 53
4.2 訊息佇列服務分析 54
4.2.1 透徹理解中間件RabbitMQ 54
【示例4-2】通過“Hello World”演示如何RabbitMQ的訊息收發過程 55
4.2.2 RabbitMQ實現RPC通信 58
【示例4-3】RabbitMQ之RPC通信案例 58
4.3 RESTful API開發框架 64
4.3.1 靈活但不易用:基於Pastedeploy和Routes的API框架 65
【示例4-4】通過nova list獲取虛擬機的命令,根據Nova的api-paste.ini來說明
是如何路由的 68
4.3.2 基於Pecan的API框架 69
4.4 TaskFlow的實現 72
4.4.1 TaskFlow常見使用場景 72
4.4.2 TaskFlow中必須理解的重要概念 73
4.4.3 TaskFlow具體實現 74
【示例4-5】TaskFlow仔細看,重實踐得體感 74
【示例4-6】TaskFlow功能多,長流程特別火 76
4.5 基於Eventlet的多執行緒技術 78
4.5.1 進程、執行緒與協程 78
4.5.2 Eventlet依賴的兩個庫:greenlet和select.epoll 79
【示例4-7】greenlet庫套用之協程切換 79
4.5.3 創建協程的常用API 80
4.5.4 定時和監聽:Hub 81
4.5.5 Eventlet中的並發機制 83
第5章 Nova—計算組件
5.1 Nova架構 84
5.1.1 Nova基本架構及服務組成 85
5.1.2 Nova內部服務間的通信機制 86
5.1.3 Nova內部服務間協同工作 88
5.2 nova-api服務 89
5.2.1 nova-api服務的作用 89
5.2.2 nova-api服務的啟動流程 91
5.3 nova-scheduler服務 95
5.3.1 基本原理及代碼結構 96
5.3.2 調度過程 97
5.3.3 配置分析 100
5.4 nova-compute服務 101
5.4.1 nova-compute服務的作用 101
5.4.2 nova-compute服務的啟動流程 103
5.4.3 nova-compute服務的日誌分析 105
5.5 周期性任務的實現 106
5.5.1 什麼是周期性任務 107
5.5.2 周期性任務的代碼 108
5.6 資源及服務刷新機制 111
5.6.1 服務上報機制 111
5.6.2 主機資源刷新機制 112
5.7 典型流程分析 117
5.7.1 nova-scheduler服務的啟動流程 117
5.7.2 虛擬機創建的流程 120
5.8 案例實戰—Nova以Ceph作為後端存儲 122
第6章 Neutron—網路組件
6.1 Neutron的發展歷程 126
6.2 網路基礎 127
6.2.1 網路的基本概念 127
6.2.2 常用的網路設備 131
6.2.3 虛擬網路技術 131
6.2.4 Neutron網路的基本概念 133
6.3 Neutron核心架構 135
6.3.1 Neutron部署結構 135
6.3.2 Neutron組成部件 136
6.3.3 ML2 Core Plugin 138
6.3.4 DHCP服務 141
6.3.5 路由服務 142
6.3.6 元數據服務 144
6.3.8 Neutron使用示例 147
6.4 高級服務(Advanced Services) 149
6.4.1 Load Balancer as a Service(LBaaS) 149
6.4.2 Firewall as a Service(FWaaS) 153
6.4.3 VPN as a Service(VPNaaS) 155
6.5 典型網路模型分析 156
6.5.1 Linux Bridge + Flat/VLAN網路模型 156
6.5.2 Open vSwitch + VxLAN網路模型 161
6.5.3 小結 171
第7章 Heat—服務編排組件
7.1 Heat架構分析 172
7.1.1 Heat組件的基本架構 173
7.1.2 Heat對資源的管理 175
7.1.3 認識HOT模板 177
7.1.4 小實例:通過HOT模板創建虛擬機 180
7.2 Heat中的鎖機制 182
7.3 Heat中的Hook機制 184
【示例7-1】在通過Heat進行資源定義時,應該如何使用Hook(鉤子) 185
【示例7-2】通過Heat創建一個Stack,在創建Stack時,需要通過Environment
來定義Hook(鉤子) 186
7.4 案例實戰—Heat典型案例 189
7.4.1 通過Heat模板創建Stack 189
7.4.2 Heat Stack創建流程 195
第8章 Keystone—認證組件
8.1 Keystone的架構 198
8.1.1 Keystone的作用 199
8.1.2 Keystone與其他組件間的關係 201
8.1.3 基本架構解析 203
8.1.4 自定義Keystone Plugin 205
8.1.5 支持使用External Plugin 206
8.2 Keystone中的基本概念 207
8.2.1 API V2和API V3 207
8.2.2 其他常見概念 208
8.2.3 多區域multi-region 209
8.3 Keystone的安裝部署與基本操作 211
8.3.1 Keystone的安裝部署 211
8.3.2 Keystone基本操作 212
【示例8-1】使用OpenStack user create創建一個名為test的用戶 212
8.4 Keystone的認證流程 215
8.4.1 認證方式 215
【示例8-2】以查看虛擬機列表為例,使用X-Auth-Token構造一個
合法的HTTP請求 215
8.4.2 令牌生成方式 216
8.4.3 Keystone工作流程 220
第9章 Cinder—塊存儲組件
9.1 Cinder架構分析 222
9.2 Cinder的安裝 225
9.2.1 安裝與配置存儲節點 225
9.2.2 安裝與配置控制節點 227
9.2.3 安裝與配置Backup服務 231
9.2.4 安裝正確性驗證及Cinder基本操作 232
9.2.5 Cinder配置存儲後端 234
【示例9-1】LVM作為Cinder的後端存儲 234
9.3 案例實戰—通過Heat模板創建Cinder Volume 235
9.4 Cinder API服務啟動過程分析 238
9.4.1 cinder-api代碼目錄結構 239
9.4.2 cinder-api服務啟動流程 240
9.4.3 REST請求的路由 242
9.5 案例實戰—關鍵代碼分析 245
9.5.1 Volume創建示例 245
9.5.2 代碼分析之cinder-api接收請求 247
9.5.3 代碼分析之cinder-scheduler進行資源調度 249
9.5.4 代碼分析之cinder-volume調用Driver創建Volume 251
第10章 Ceilometer—數據採集組件
10.1 Ceilometer架構分析 254
10.1.1 Ceilometer中的基本概念 255
10.1.2 舊版Ceilometer架構 256
10.1.3 新版Ceilometer架構 258
10.2 數據處理 260
10.2.1 Notification Agents數據收集 261
10.2.2 Polling Agents數據收集 262
10.2.3 數據轉換與發布 263
10.3 Pipelines 265
10.4 計量項 267
10.5 Agent和Plugin 269
10.5.1 Polling Agents 270
10.5.2 Plugins 272
10.6 案例實戰—Heat與Ceilometer結合,搭建一個彈性伸縮系統 274
10.6.1 系統介紹 274
10.6.2 準備模板 275
10.6.3 創建系統 277
第11章 Glance—鏡像組件
11.1 Glance架構分析 279
11.2 狀態分析 280
11.3 代碼結構與概念分析 281
11.3.1 Metadata定義 283
11.3.2 Domain模型 285
【示例11-1】自定義Gateway方法 285
11.3.3 Task定義 287
11.4 Glance的安裝與配置 287
11.4.1 Glance安裝部署 288
11.4.2 Glance基本配置 292
【示例11-2】修改Glance後端存儲為RBD 292
11.5 鏡像快取 293
11.6 案例實戰—Glance常見場景之鏡像創建 294
第12章 智慧型運維Vitrage—RCA組件
12.1 Vitrage架構 297
12.1.1 High Level架構設計 298
12.1.2 Low Level架構設計 300
12.2 Vitrage安裝部署 301
12.2.1 手動方式安裝部署Vitrage 301
12.2.2 通過DevStack安裝Vitrage 303
12.3 Vitrage 模板 304
12.3.1 Templates(模板)的結構 304
【示例12-1】Host處於ERROR狀態時,觸發告警的模板 305
12.3.2 模板的載入過程 306
12.3.3 添加自定義模板 307
12.4 Vitrage Evaluator 310
12.5 自定義Datasources 312
12.6 案例實戰—Vitrage中的告警解決方案 314
第13章 OpenStack其他組件及智慧型運維方案
13.1 Mistral—工作流組件 317
13.1.1 Mistral套用場景 318
13.1.2 Mistral中的重要概念 318
13.1.3 Mistral功能介紹 320
13.1.4 Mistral架構分析 322
13.1.5 Mistral實戰套用 322
【示例13-1】為Mistral添加用戶自定義Action 322
【示例13-2】通過Mistral獲取虛擬機數據 323
13.2 OpenStack智慧型運維解決方案 326
13.2.1 可視化的Dynatrace 327
13.2.2 VirtTool Networks 327
13.2.3 智慧型運維Vitrage 329
第14章 OpenStack套用實戰:自動編排和配置高可用Redis系統
14.1 利用cloud-init配置虛擬機 332
14.1.1 cloud-init的安裝與配置 333
14.1.2 cloud-init對VM進行配置 338
【示例14-1】通過cloud-init配置虛擬機 341
14.1.3 cloud-init調試過程與問題分析 343
14.2 Redis資料庫的HA實現及Redis集群的創建 347
14.2.1 Redis HA方案實現 347
14.2.2 Redis Cluster集群實現 358
第15章 OpenStack架構與代碼實踐
15.1 OpenStack架構設計思路 366
15.1.1 業務架構設計思路 366
15.1.2 部署架構設計思路 368
15.1.3 平台用戶角色設計 369
15.2 案例實戰—向Heat中添加自定義資源 370
15.2.1 實現原理及思路分析 370
15.2.2 向Heat中添加Zabbix資源 371
15.2.3 定義Zabbix Action 373
15.2.4 實現AutoScaling模板 375
15.2.5 資源查看 377

作者簡介

管增輝
中國海洋大學碩士,曾先後在Alcatel-Lucent和金山雲工作,現在供職於阿里巴巴。
擁有豐富的IMS核心網和雲計算設計開發經驗,對雲計算解決方案及AIOps擁有獨到見解,專注於雲計算、容器及AIOps相關領域。
熱衷開源,先後參與過MIT MOOS-IvP項目和OpenStack項目的開發。
具有豐富的雲平台及K8S平台開發經驗,設計開發了電信級雲存儲平台、嵌套虛擬化雲平台、雲平台可視化資源管理、雲平台計算服務垃圾資源回收機制、雲平台智慧型運維系統、基於K8S的SaaS平台及輕量PaaS平台。
除此之外,對於雲平台的資源編排服務、彈性伸縮服務、負載均衡服務也有豐富的經驗。
現在主要負責阿里雲SaaS平台和PaaS平台的設計與開發。
曾凡浪
中南大學學士,曾先後在藝龍旅行網和聯想北京研究院擔任系統開發工程師和高級研究員,目前就職於神州優車集團總部。
有多年的OpenStack和Kubernetes構建、開發經驗,專注於雲計算相關領域。參與過多套私有雲平台的方案調研、技術選型和部署實施,以及OpenStack深度定製,OpenStack、Kubernetes、Ceph集中管理平台,統一認證授權系統等項目開發工作。

相關詞條

熱門詞條

聯絡我們