我的第二本譯作《精通OpenStack》上架啦:前言、目錄和樣章

轉載自Sammy Liu博客

1. 前言

    今天,隨着新功能和子項目的增加,OpenStack已成爲一個不斷擴展的大型開源項目。隨着數以百計大型企業採用並不斷爲OpenStack生態系統做出貢獻,OpenStack必將成爲下一代私有云解決方案。隨着新項目的不斷集成,OpenStack提供的服務範圍也在不斷增加。新項目的不斷集成,要歸功於OpenStack模塊化架構和其核心組件出色的穩定性。事實證明,OpenStack是一個成熟的私有云平臺,可提供基礎架構即服務(IaaS)功能。隨着新項目的不斷出現,OpenStack生態系統正朝着平臺即服務(PaaS)的方向發展。

    爲何要考慮採用OpenStack呢?目前,已有諸多用例和實踐表明,基於OpenStack的基礎架構可以滿足企業各種業務需求和開發需要。此外,還要考慮的是,如何在私有云構建過程中統一、標準化企業基礎架構設施,OpenStack將是最合適的選擇。模塊化雲平臺最基本的設計目標就是爲底層基礎架構的管理提供更大的靈活性。將傳統數據中心轉向私有云架構,可充分利用自動化運維的強大功能,並提高服務交付的響應能力。在OpenStack私有云的配置部署中,你會發現啓用新功能組件是一件非常容易的事情。作爲由插拔式組件構成的雲計算軟件,OpenStack的模塊化架構展現了其強大的雲管理平臺功能。此外,OpenStack的另一個優勢是其每個服務都提供了REST API。OpenStack的這些特徵體現了其對自動化思維的完全擁抱,並且OpenStack極易與系統中的已有功能進行集成。此外,OpenStack爲企業解決傳統IT架構面臨的問題和供應商鎖定窘境提供了可選的最佳途徑。在最新版本中,OpenStack提供了更多的模塊和插件來支持第三方軟件服務,包括計算、存儲和網絡組件。

    在第2版中,我們將重新組織本書的內容結構和學習方式,並涵蓋OpenStack最新版本中的新特性。爲了便於理解,我們將重新回顧OpenStack的組件和設計模式,並繼續探索、研究和學習OpenStack。另外,我們的新版本也在不斷更新OpenStack核心服務架構的新功能,這些新功能涵蓋了計算隔離、容器化、新的網絡服務模型,包括軟件定義網絡(SDN)以及新孵化出來的OpenStack存儲項目。在本書中,我們始終以開篇部署的OpenStack私有云爲主線,並以最佳實踐形式分享部署運維經驗。與第1版不同,在新版本中,我們通過以容器方式運行的系統管理工具自動化部署OpenStack,從而構建一個模擬真實生產環境的實驗環境。這一切都將讓你更深入地瞭解OpenStack生態系統中的新特性,以及如何採用OpenStack來滿足業務需求。

    本書的最後部分還提供了對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,通過註冊並登錄個人賬號下載。 

2. 目錄

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章