今天,隨着新功能和子項目的增長,OpenStack已成爲一個不斷擴展的大型開源項目。隨着數以百計大型企業採用並不斷爲OpenStack生態系統作出貢獻,OpenStack必將成爲下一代私有云解決方案。隨着新項目的不斷集成,OpenStack提供的服務範圍也在不斷增長。新項目的不斷集成,要歸功於OpenStack模塊化架構和其核心組件出色的穩定性。事實證實,OpenStack是一個成熟的私有云平臺,可提供基礎架構即服務(IaaS)功能。隨着新項目的不斷出現,OpenStack生態系統正朝着平臺即服務(PaaS)的方向發展。ios
爲什麼要考慮採用OpenStack呢?目前,已有諸多用例和實踐代表,基於OpenStack的基礎架構能夠知足企業各類業務需求和開發須要。此外,還要考慮的是,如何在私有云構建過程當中統1、標準化企業基礎架構設施,OpenStack將是最合適的選擇。模塊化雲平臺最基本的設計目標就是爲底層基礎架構的管理提供更大的靈活性。將傳統數據中心轉向私有云架構,可充分利用自動化運維的強大功能,並提升服務交付的響應能力。在OpenStack私有云的配置部署中,你會發現啓用新功能組件是一件很是容易的事情。做爲由插拔式組件構成的雲計算軟件,OpenStack的模塊化架構展示了其強大的雲管理平臺功能。此外,OpenStack的另外一個優點是其每一個服務都提供了REST API。OpenStack的這些特徵體現了其對自動化思惟的徹底擁抱,而且OpenStack極易與系統中的已有功能進行集成。此外,OpenStack爲企業解決傳統IT架構面臨的問題和供應商鎖定窘境提供了可選的最佳途徑。在最新版本中,OpenStack提供了更多的模塊和插件來支持第三方軟件服務,包括計算、存儲和網絡組件。git
在第2版中,咱們將從新組織本書的內容結構和學習方式,並涵蓋OpenStack最新版本中的新特性。爲了便於理解,咱們將從新回顧OpenStack的組件和設計模式,並繼續探索、研究和學習OpenStack。另外,咱們的新版本也在不斷更新OpenStack核心服務架構的新功能,這些新功能涵蓋了計算隔離、容器化、新的網絡服務模型,包括軟件定義網絡(SDN)以及新孵化出來的OpenStack存儲項目。在本書中,咱們始終以開篇部署的OpenStack私有云爲主線,並以最佳實踐形式分享部署運維經驗。與第1版不一樣,在新版本中,咱們經過以容器方式運行的系統管理工具自動化部署OpenStack,從而構建一個模擬真實生產環境的實驗環境。這一切都將讓你更深刻地瞭解OpenStack生態系統中的新特性,以及如何採用OpenStack來知足業務需求。github
本書的最後部分還提供了對OpenStack生產就緒環境的補充,包括運維管理、故障排除、監控和基準測試工具集。數據庫
第1章回顧了OpenStack核心服務架構,並重點介紹了每一個架構設計的更新功能。本章以OpenStack初始邏輯設計開始,以物理模型設計結束,並在物理模型設計中介紹了存儲、計算和網絡服務的評估方法。本章內容將幫助你進行合理的硬件選型,以便部署、構建基於生產環境的OpenStack私有云。後端
第2章介紹了DevOps的發展趨勢以及如何利用DevOps工具來部署和管理OpenStack私有云。本章主要介紹了DevOps工具Ansible,並使用Ansible做爲系統管理工具對OpenStack進行自動化部署和管理。爲了加強OpenStack基礎架構管理和運維,本章還簡要介紹了基礎架構即代碼(IaC)的概念。爲了更好地隔離OpenStack服務,本章採用基於容器的方式部署OpenStack,最終模擬出一個真實的OpenStack生產環境。設計模式
第3章主要對運行在雲控制器節點中的各類服務更新功能進行介紹,並對OpenStack服務的高可用和容錯設計作初步討論,這些討論主要涉及OpenStack的核心組件、數據庫以及消息隊列系統。本章還針對不一樣的OpenStack核心組件和基礎服務進行了Ansible角色和playbook分解。緩存
第4章涵蓋了OpenStack中的計算服務,並介紹了Nova最新支持的各類Hypervisor。Docker做爲快速發展的容器技術,OpenStack對其提供了不少支持,所以本章對OpenStack的Docker支持項目Magnum進行了詳細介紹。此外,本章還介紹了針對大規模OpenStack集羣而引入的各類新概念,包括計算和主機隔離、可用區、區域以及Nova中的Cell。同時,本章花了較大篇幅對與實例生命週期相關的OpenStack調度器進行了介紹。最後,本章詳細介紹了計算服務的Ansible playbook,以及如何經過playbook在現有OpenStack環境中新增計算節點。OpenStack集羣中的幾種備份方案也在本章中進行了討論。安全
第5章擴大了對OpenStack支持的不一樣存儲類型和備選方案的介紹,同時介紹了OpenStack最新版本中有關對象和塊存儲的更新功能。Manilla是OpenStack最新支持的一個文件系統共享存儲項目,本章對其在OpenStack生態系統中的架構層次進行了詳細介紹。最後,本章還介紹了與塊和對象存儲(也包括Ceph)相關的角色和Ansible playbook。服務器
第6章重點介紹OpenStack當前網絡服務的實現原理,包括網絡新功能、更新後的Neutron插件,以及OpenStack最新版本中不一樣的隧道網絡實現方式。本章描述了基於Neutron的不一樣網絡實現方案,詳細介紹了各類網絡組件和術語,從而簡化了OpenStack中虛擬網絡的管理。此外,本章還重點介紹瞭如何簡化虛擬網絡和路由器的複雜配置。最後,在本章的結尾部分介紹了防火牆即服務(FWaaS)和×××即服務(×××aaS)。網絡
第7章介紹了OpenStack中網絡相關的高級話題。本章以專項形式重點介紹軟件定義網絡(SDN)和網絡功能虛擬化(NFV)的概念,並討論它們在OpenStack中的集成應用。在本章的結尾部分還探討了OpenStack中負載均衡即服務的新實現方法。
第8章重點介紹OpenStack雲平臺的操做管理和使用方法。本章是對運維管理人員如何管理用戶、項目以及定義底層資源使用方式的指導。另外,本章還介紹瞭如何使用OpenStack編排服務Heat來幫助用戶自動化編排所需資源。同時,還介紹了基礎架構即代碼的概念,以及其對現代基礎架構需求的實現。Heat已做爲OpenStack定義模板資源的內置工具,本章除對它進行介紹外,爲了擴展各類工具的使用,還對支持多雲環境編排的新型工具Terraform進行了介紹。
第9章重點介紹了OpenStack中每一個組件的各類高可用設計模式,包括如何設置OpenStack高可用集羣中Active和Passive服務。本章不只利用外部強大工具實現了消息隊列、數據庫和其餘服務的高可用性,還介紹了包括網絡服務在內的OpenStack原生服務的高可用設計。
第10章探討了OpenStack中計量數據收集服務的新特性。本章詳細介紹了OpenStack最新版本中計量數據收集服務的構成,包括警報、事件和指標。此外,本章還介紹瞭如何使用Nagios等外部流行工具來對雲平臺進行監控。在本章的後半部分,咱們介紹瞭如何使用不一樣的故障排除工具和方法來診斷OpenStack集羣中的常見問題。
第11章重點介紹了OpenStack中的日誌文件,以及在解決OpenStack故障時如何使用日誌進行深刻排查。經過本章的內容,讀者將學會如何使用當前流行的管道日誌工具,如ELK(ElasticSearch、LogStash和Kibana)堆棧,高效地解析OpenStack服務中的日誌文件。另外,本章還介紹了ELK堆棧架構中最新的穩定版本。同時,本章還對如何使用有效的ELK查詢來定位、分析問題的根本緣由作出了詳細說明。
第12章重點介紹了OpenStack學習使用過程當中相對高級的主題,即OpenStack基準測試和性能調優。經過本章介紹的專爲OpenStack測試而開發的性能測試工具Rally,你將可以更深刻地理解OpenStack雲平臺的內部運行機理,而這對於雲平臺容量及其架構的調優很是關鍵。此外,本章還介紹了對OpenStack數據平面進行測試評估的工具Shaker,並介紹瞭如何使用Shaker工具對網絡帶寬進行基準測試。
本書假定讀者有基本的Linux操做系統和雲計算概念。新版本基於OpenStack中的最近更新功能豐富了大量內容,另外,熟悉OpenStack生態系統也很是重要。同時,讀者須要具有對網絡術語、系統管理工具和架構設計模式等基本知識的掌握和理解。與第1版不一樣,在第2版中,咱們使用Ansible做爲OpenStack基礎架構管理的主要工具。本書使用的是OpenStack的Ansible官方項目,項目地址爲:https://github.com/openstack/openstack-ansible。鑑於Ansible的使用,若是可以很好地理解YAML語法,對於閱讀本書將有很大幫助。
你可使用任何工具來搭建測試環境,例如Oracle的VirtualBox、Vagrant或VMware工做站版本。讀者可使用github中OpenStack-Ansible項目的All-In-One(OSA,一體化)方式來構建實驗環境。本書建議在物理硬件上安裝OpenStack以搭建生產就緒的環境。所以,在你的環境中,須要物理網絡基礎架構。另外,若是正確地配置了虛擬網絡環境,也能夠在虛擬環境中運行OpenStack以進行測試。
操做系統:CentOS 7或者Ubuntu 14.04。
OpenStack:Mitaka或者更新的發行版。
VirtualBox:4.5版或者更新的版本。
Vagrant:1.7版或者更新的版本。
Ansible服務器:2.2版或者更新的版本。
若是準備運行OpenStack開發環境,下面是最低的硬件需求:
一臺支持CPU硬件虛擬化的物理機。
8核CPU。
12GB內存。
60GB空餘磁盤空間。
兩張網卡。
下載OpenStack和其餘工具所需的軟件包須要訪問Internet。另外,有關安裝最新版OpenStack或更新舊版本軟件包的詳細說明,請參閱http://docs.openstack.org中給出的指南。
本書主要面向但願部署基於OpenStack私有云的雲計算工程師、架構師和DevOps工程師。本書也適用於那些熱衷於OpenStack新特性、新功能,以及但願擴展自身知識,並將OpenStack生態系統中的新功能和新項目追加至現有生產環境中的雲計算從業人士。本書並未提供有關安裝、部署和運行OpenStack服務的詳細步驟,所以,讀者可專一於OpenStack各類高級特性和方法的理解。在這一版本中,咱們提供了部署和運行OpenStack環境的更多選擇,所以讀者能夠按照本書每章中的示例進行實際操做。
本書的示例代碼能夠從http://www.packtpub.com經過我的帳號下載,也能夠訪問華章圖書官網http://www.hzbook.com,經過註冊並登陸我的帳號下載。
Contents 目 錄
譯者序
前言
關於做者和審校者
第1章 OpenStack參考架構設計 1
1.1 OpenStack引領新一代數據中心 2
1.2 OpenStack邏輯架構介紹 2
1.2.1 認證管理服務Keystone 3
1.2.2 對象存儲服務Swift 3
1.2.3 塊存儲服務Cinder 4
1.2.4 文件共享存儲服務Manila 5
1.2.5 鏡像註冊服務Glance 5
1.2.6 計算服務Nova 6
1.2.7 網絡服務Neutron 7
1.2.8 計量服務Telemetry 9
1.2.9 編排服務Heat 9
1.2.10 儀表盤服務Horizon 10
1.2.11 消息隊列 10
1.2.12 數據庫 10
1.3 資源準備與虛擬機建立 10
1.3.1 準備虛擬機資源 10
1.3.2 虛擬機建立流程 11
1.4 OpenStack邏輯概念設計 13
1.4.1 概念模型設計 13
1.4.2 邏輯模型設計 15
1.4.3 存儲選型考慮 16
1.4.4 邏輯網絡設計 17
1.5 OpenStack物理模型設計 19
1.5.1 估算硬件容量 19
1.5.2 CPU評估 20
1.5.3 內存評估 21
1.5.4 網絡評估 21
1.5.5 存儲評估 22
1.6 OpenStack設計最佳實踐 23
1.7 總結 24
第2章 基於DevOps的OpenStack部署 25
2.1 DevOps與CI/CD 25
2.1.1 一切皆代碼 26
2.1.2 DevOps與OpenStack 27
2.1.3 基礎架構部署代碼 28
2.1.4 OpenStack中的CI/CD 29
2.2 DevOps工具與OpenStack自動化部署 30
2.2.1 Ansible介紹 31
2.2.2 Ansible與OpenStack自動化 33
2.2.3 開發和生產環境架構 34
2.2.4 硬件與軟件需求規劃 35
2.2.5 網絡需求規劃 36
2.2.6 開發環境構建 37
2.2.7 基礎架構代碼環境準備 39
2.2.8 代碼變動追蹤 43
2.3 總結 43
第3章 OpenStack集羣——雲控制器和公共服務 44
3.1 集羣核心概念 45
3.1.1 非對稱集羣 45
3.1.2 對稱集羣 45
3.1.3 集羣分而治之 45
3.2 雲控制器及其服務 46
3.2.1 Keystone服務 47
3.2.2 nova-conductor服務 50
3.2.3 nova-scheduler服務 50
3.2.4 API服務 51
3.2.5 鏡像管理 51
3.2.6 網絡服務 52
3.2.7 Horizon儀表板服務 52
3.2.8 計量服務 52
3.2.9 基礎架構服務 53
3.3 雲控制器集羣部署準備 54
3.3.1 OpenStack Ansible安裝部署 55
3.3.2 控制節點環境準備 57
3.4 使用OpenStack playbook部署集羣 58
3.4.1 配置OpenStack Ansible 58
3.4.2 網絡配置 59
3.4.3 配置主機組 59
3.4.4 用於集羣部署的playbook 61
3.5 總結 63
第4章 OpenStack計算——Hypervisor選擇與節點隔離 64
4.1 計算服務組件 65
4.2 Hypervisor決策 65
4.3 Docker容器與Hypervisor 66
4.4 OpenStack容器服務項目Magnum 67
4.5 計算雲中的分區與隔離 69
4.5.1 可用區 69
4.5.2 主機聚合 69
4.5.3 Nova單元 70
4.5.4 區域 71
4.5.5 工做負載隔離 71
4.5.6 使用多種Hypervisor 72
4.6 資源超分 75
4.6.1 CPU分配比率 75
4.6.2 內存分配比率 76
4.7 實例臨時存儲規劃 77
4.7.1 外部共享文件存儲 77
4.7.2 內部非共享文件存儲 77
4.8 理解實例啓動過程 77
4.8.1 理解Nova調度流程 78
4.8.2 從鏡像啓動實例 78
4.8.3 獲取實例元數據 78
4.8.4 添加計算節點 80
4.9 備份恢復規劃 81
4.9.1 使用backup-manager進行備份 82
4.9.2 簡要恢復步驟 83
4.9.3 數據保護即服務 84
4.9.4 OpenStack社區數據備份項目 84
4.10 總結 84
第5章 OpenStack塊、對象存儲與文件共享 85
5.1 OpenStack存儲類型 86
5.1.1 臨時存儲 86
5.1.2 持久存儲 86
5.2 Swift對象存儲 87
5.2.1 Swift架構 87
5.2.2 Swift在物理設計上的規劃 88
5.2.3 Swift環 89
5.2.4 Swift存儲策略和糾刪碼 91
5.2.5 Swift硬件考慮 92
5.2.6 Swift節點資源配置考慮 93
5.2.7 Swift網絡配置考慮 94
5.2.8 Swift服務部署 94
5.3 塊存儲服務Cinder 97
5.3.1 Cinder後端驅動和調度 99
5.3.2 Cinder服務部署 101
5.4 共享存儲服務Manila 101
5.4.1 Manila共享存儲項目介紹 101
5.4.2 Manila共享存儲配置與使用 103
5.5 存儲類型選擇 104
5.6 Ceph分佈式存儲集羣 105
5.6.1 Ceph在OpenStack中的應用 108
5.6.2 使用Ansible部署Ceph集羣 108
5.6.3 將Glance鏡像存儲至Ceph 111
5.7 總結 112
第6章 OpenStack網絡類型與安全 113
6.1 Neutron架構 114
6.1.1 Neutron插件 115
6.1.2 Neutron服務插件 115
6.1.3 Neutron代理 115
6.1.4 Neutron API擴展 115
6.2 虛擬網絡實現 116
6.2.1 VLAN網絡 116
6.2.2 隧道網絡 116
6.2.3 虛擬交換機 118
6.2.4 ML2插件 118
6.2.5 網絡類型 119
6.2.6 Neutron子網 119
6.2.7 建立虛擬網絡和子網 119
6.3 Neutron網絡端口鏈接 119
6.3.1 基於Linux Bridge的網絡鏈接 119
6.3.2 基於OpenVSwitch的網絡鏈接 121
6.4 Neutron虛擬網絡與路由 123
6.4.1 Neutron虛擬配置路由服務 123
6.4.2 基於路由的網絡鏈接實現 124
6.4.3 實例訪問外網 125
6.4.4 外網訪問實例 125
6.4.5 關聯虛擬機浮動IP 126
6.5 Neutron安全組 126
6.5.1 安全組 127
6.5.2 建立安全組策略 127
6.6 Firewall as a Service 128
6.6.1 防火牆配置 128
6.6.2 建立防火牆策略和規則 129
6.7 ××× as a Service 130
6.7.1 ×××插件配置 131
6.7.2 建立×××服務 132
6.8 總結 137
第7章 OpenStack SDN網絡與NFV 138
7.1 基於SDN的網絡 138
7.1.1 SDN介紹 138
7.1.2 OVS架構 139
7.2 OVN架構 140
7.2.1 OVN組件 141
7.2.2 OVN與OpenStack集成 141
7.2.3 基於OVN的虛擬網絡實現 142
7.3 網絡功能虛擬化 144
7.3.1 管理與編排規範 144
7.3.2 雲應用拓撲編排規範模版 144
7.3.3 OpenStack Tacker項目介紹 145
7.4 基於Octavia的LBaaS實現 147
7.4.1 配置Octavia 148
7.4.2 建立負載均衡器 148
7.5 總結 150
第8章 OpenStack集羣操做與管理 151
8.1 OpenStack租戶操做 152
8.1.1 項目與用戶管理 152
8.1.2 用戶權限管理 153
8.1.3 資源配額管理 155
8.2 OpenStack編排服務 160
8.2.1 OpenStack Heat項目介紹 160
8.2.2 OpenStack模板棧及其介紹 161
8.2.3 OpenStack模板棧組織架構 162
8.2.4 棧模塊化編排應用 162
8.2.5 資源編排利器Terraform 170
8.3 本章小結 178
第9章 OpenStack高可用與容錯機制 179
9.1 集羣高可用 179
9.1.1 不能混淆的HA概念 181
9.1.2 Open Stack中的HA級別 181
9.1.3 嚴格制定SLA 182
9.1.4 量化與度量SLA 183
9.1.5 HA字典 183
9.2 負載均衡器HAProxy 184
9.2.1 OpenStack服務高可用 186
9.2.2 負載均衡高可用 186
9.3 OpenStack HA實現方法 187
9.3.1 數據庫高可用 188
9.3.2 消息隊列高可用 191
9.4 HA規劃與實現 192
9.4.1 MySQL高可用實現 192
9.4.2 RabbitMQ高可用實現 197
9.4.3 OpenStack控制節點高可用實現 200
9.4.4 網絡節點高可用實現 204
9.5 Ansible實現HA 210
9.6 總結 212
第10章 OpenStack集羣監控與故障排查 213
10.1 OpenStack中的Telemetry服務 214
10.1.1 Ceilometer介紹及架構 214
10.1.2 時序數據庫Gnocchi 218
10.1.3 監控告警項目Aodh 219
10.2 在OpenStack中安裝Telemetry 220
10.2.1 Ceilometer安裝部署 221
10.2.2 Aodh告警服務配置部署 224
10.3 OpenStack監控加強 226
10.3.1 運行Nagios 227
10.3.2 Nagios監控配置 228
10.3.3 Nagios監控OpenStack 228
10.4 基於監控的OpenStack故障排除 231
10.4.1 服務的啓動與運行 231
10.4.2 服務監聽 233
10.4.3 拯救故障實例 234
10.4.4 網絡故障排除 236
10.5 總結 239
第11章 OpenStack ELK日誌處理系統 240
11.1 OpenStack日誌處理 241
11.1.1 OpenStack日誌解密 241
11.1.2 OpenStack外部監控系統 244
11.1.3 ELK核心概念與組件 244
11.2 ELK安裝部署 246
11.2.1 ELK服務器準備 247
11.2.2 ElasticSearch安裝 247
11.2.3 ElasticSearch配置 248
11.2.4 ElasticSearch功能擴展 249
11.2.5 Kibana安裝 251
11.2.6 Kibana配置 251
11.2.7 LogStash安裝 253
11.2.8 LogStash配置 254
11.2.9 LogStash操做 254
11.2.10 LogStash客戶端準備 257
11.2.11 OpenStack日誌過濾 258
11.3 OpenStack ELK功能擴展 262
11.3.1 OpenStack日誌可視化 264
11.3.2 基於Kibana的故障分析 267
11.4 總結 270
第12章 OpenStack基準測試與性能調優 271
12.1 OpenStack數據庫瓶頸調優 272
12.1.1 數據庫瓶頸根因 273
12.1.2 OpenStack中的緩存系統 273
12.1.3 Memcached在OpenStack中的應用 274
12.1.4 Memcached安裝與部署 275
12.2 OpenStack基準測試 279
12.2.1 基於Rally的OpenStack API測試 280
12.2.2 實現OpenStack SLA 280
12.2.3 Rally安裝與部署 281
12.2.4 Rally配置應用 282
12.2.5 測試示例—Keystone性能調優 284
12.3 基於Shaker的OpenStack網絡測試 291
12.3.1 Shaker架構 292
12.3.2 Shaker安裝部署 293
12.3.3 Shaker配置應用 294
12.3.4 測試示例—OpenStack L2網絡調優 296
12.4 總結 302