寫在最前面
這是一個(gè) OpenStack 教程,有下面兩個(gè)特點(diǎn):
? 系統(tǒng)講解 OpenStack。從架構(gòu)到各個(gè)組件;從整體到細(xì)節(jié)逐一討論。
? 重實(shí)踐并兼顧理論。主要從實(shí)際操作的角度帶著大家學(xué)習(xí) OpenStack。
為啥要寫這個(gè),簡單回答是:
因?yàn)?OpenStack 學(xué)習(xí)難度大,但如果掌握了,價(jià)值會(huì)很大。先做一個(gè)自我介紹吧。本人網(wǎng)名CloudMan,在 IT 這個(gè)行當(dāng)已經(jīng)摸爬滾打了十多年,2005年之前是搞上層應(yīng)用開發(fā)的,那時(shí)候 Java 比較火,所以 J2EE 相關(guān)的技術(shù)搞得比較多。后來入職一家大型IT公司,公司的產(chǎn)品從中間件到操作系統(tǒng),從服務(wù)器到存儲(chǔ),從虛擬化到云計(jì)算都有涉及。本人所在的部門是專門做 IT 基礎(chǔ)設(shè)施實(shí)施服務(wù)的,項(xiàng)目涉及服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)、虛擬化、云各個(gè)方面,而且這個(gè)部門的重要任務(wù)是為公司在IT市場最新和最熱門的領(lǐng)域開疆?dāng)U土。比如前幾年的虛擬化,這兩年的云計(jì)算和大數(shù)據(jù)。可以說部門的這個(gè)定位非常符合我的技術(shù)偏好。我對新技術(shù)長期保持著濃厚的興趣和學(xué)習(xí)熱情,所以在這個(gè)部門一待就是十幾年,而且一直搞技術(shù),雖然現(xiàn)在的頭銜是架構(gòu)師,平時(shí)還是一直堅(jiān)持實(shí)際動(dòng)手操作,否則會(huì)沒有安全感。好,現(xiàn)在回到OpenStack這個(gè)主題。
本人是在2013年開始接觸 OpenStack,雖然具備比較扎實(shí)的技術(shù)功底,在經(jīng)過一段時(shí)間的學(xué)習(xí)后,還是感覺 OpenStack 這個(gè)東西上手不太容易,個(gè)人認(rèn)為有以下幾個(gè)原因:
1. OpenStack 涉及的知識(shí)領(lǐng)域極廣可以說涵蓋了IT基礎(chǔ)設(shè)施的所有范圍,計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)、虛擬化、高可用、安全、災(zāi)備無所不包,即便是像我這種每天都在這個(gè)領(lǐng)域工作的人也感覺壓力頗大。
2. OpenStack 是一個(gè)平臺(tái),不是一個(gè)具體的實(shí)施方案OpenStack的各個(gè)組件都采用Driver的架構(gòu),支持各種具體的實(shí)現(xiàn)技術(shù)。比如 OpenStack 的存儲(chǔ)服務(wù)Cinder只定義了上層抽象API,具體的實(shí)現(xiàn)交給下面的各種Driver,比如基于LVM的iSCSI Driver,EMC、IBM等商業(yè)存儲(chǔ)產(chǎn)品的Driver,或者是開源的分布式存儲(chǔ)軟件,比如Ceph、GlusterFS的Driver。正是因?yàn)檫@種架構(gòu)上的靈活性,使得初學(xué)者在學(xué)習(xí)OpenStack的時(shí)候不會(huì)像學(xué)習(xí)其他具體軟件產(chǎn)品那樣容易上手。
3. OpenStack 本身是一個(gè)分布式系統(tǒng)大多數(shù)搞 IT 的對分布式計(jì)算都不會(huì)太熟悉,直接沖進(jìn)來會(huì)被 OpenStack 繁多的組件以及它們之間的交互方式搞得云里霧里。雖然 OpenStack 學(xué)習(xí)曲線比較陡峭,掌握起來難度較大,但 OpenStack 目前已經(jīng)是 IaaS 云的事實(shí)標(biāo)準(zhǔn),而且前途一片光明,對于我們搞 IT 的如果能啃下這個(gè)骨頭,必定能大大提升自身的競爭力。
寫給誰看
這套教程的目標(biāo)讀者包括:
1. OpenStack初學(xué)者我學(xué)習(xí)OpenStack也是經(jīng)歷了一個(gè)艱辛曲折的過程,其主要原因在于沒有找到一個(gè)系統(tǒng)講解OpenStack的教程,大部分資料都比較分散,對于初學(xué)者無法有機(jī)地串起來。也正是因?yàn)檫@個(gè)原因,讓我萌發(fā)了編寫這樣一套教程的想法,能夠讓初學(xué)者少走彎路,系統(tǒng)地學(xué)習(xí)、掌握和實(shí)踐 OpenStack。
2. OpenStack 實(shí)施工程師之前說了,我在公司的職位是架構(gòu)師,但骨子里我更把自己定位成一位能到一線攻城拔寨的實(shí)施工程師。所以這個(gè)教程也是針對 OpenStack 的實(shí)施人員,讓他們能夠通過學(xué)習(xí)真正掌握部署OpenStack 的知識(shí)、技能以及故障排查技巧。3. 我自己寫這個(gè)教程同時(shí)也是對自己這幾年學(xué)習(xí)和實(shí)踐 OpenStack 的一個(gè)總結(jié)。我覺得:對于知識(shí),只有把它寫出來并能夠讓其他人理解才能真正說明自己掌握了這項(xiàng)知識(shí)。
包含哪些內(nèi)容
本書兩大塊內(nèi)容。
1. 預(yù)備知識(shí)。因?yàn)槊嫦虺鯇W(xué)者,首先會(huì)有虛擬化和云計(jì)算的預(yù)備知識(shí),會(huì)介紹 KVM、IaaS 等技術(shù)。
2. OpenStack核心。這是主要內(nèi)容,包含OpenStack的架構(gòu)和各個(gè)核心組件。將會(huì)通過大量的案例、操作步驟、截圖、日志來幫助大家理解 OpenStack 各組件是如何工作的。其目標(biāo)是讓各位可以根據(jù)客戶的需求進(jìn)行配置和調(diào)整。
怎樣的編寫方式
在當(dāng)下這個(gè)共享經(jīng)濟(jì)時(shí)代,我覺得應(yīng)該用互聯(lián)網(wǎng)的方式來分享知識(shí)和心得。這個(gè)教程會(huì)通過我的微信公眾號(hào)(cloudman6)每周一、周三、周五定期發(fā)布。用公眾號(hào)我覺得有兩個(gè)好處:(1)可以隨時(shí)隨地查看和瀏覽已推送的內(nèi)容。(2)可以通過公眾號(hào)跟我互動(dòng),提出問題和建議 。
為啥叫《每天5分鐘玩轉(zhuǎn) OpenStack》
為了降低學(xué)習(xí)的難度并且考慮到移動(dòng)端碎片化閱讀的特點(diǎn),每次推送的內(nèi)容大家只需要花5分鐘就能看完(注意,這里說的是看完,有時(shí)候要完全理解可能需要更多時(shí)間哈),每次的內(nèi)容只包含1~3個(gè)知識(shí)點(diǎn),這也是我把教程命名為《每天5分鐘玩轉(zhuǎn) OpenStack》的原因。雖然是碎片化推送,但整個(gè)教程是系統(tǒng)、連貫和完整的,只是化整為零了。好了,今天這5分鐘算是開了個(gè)頭,下面我們正式開始玩轉(zhuǎn) OpenStack。
編 者
2016年10月
CloudMan,云計(jì)算技術(shù)專家,就職于國際知名 IT 企業(yè),負(fù)責(zé)OpenStack相關(guān)項(xiàng)目的規(guī)劃和實(shí)施。十多年一直專注 IT 前沿技術(shù)的鉆研與實(shí)踐,目前重點(diǎn)研究OpenStack、容器技術(shù)棧、DevOps等技術(shù)領(lǐng)域。
第一篇 預(yù)備知識(shí)
第 1 章 虛擬化 2
1.1
1型虛擬化 2
1.2
2型虛擬化 2
1.3
KVM 3
1.3.1
基本概念 3
1.3.2
KVM實(shí)操 4
1.4
KVM 虛擬化原理 11
1.4.1
CPU 虛擬化 11
1.4.2
內(nèi)存虛擬化 12
1.4.3
存儲(chǔ)虛擬化 13
1.5 網(wǎng)絡(luò)虛擬化 19
1.5.1
Linux Bridge 19
1.5.2
VLAN 28
1.5.3
Linux Bridge VLAN = 虛擬交換機(jī) 35
第 2 章 云 計(jì) 算 36
2.1 基本概念 36
2.2 云計(jì)算和
OpenStack 38
第二篇 OpenStack 核心
第 3 章 OpenStack 架構(gòu) 41
3.1
Conceptual Architecture 41
3.2
Logical Architecture 42
第 4 章 搭建實(shí)驗(yàn)環(huán)境 45
4.1 部署拓?fù)?45
4.2 物理資源需求 46
4.3 網(wǎng)絡(luò)規(guī)劃 47
4.4 部署 DevStack
47
第 5 章 Identity ServiceKeystone 55
5.1 概念 55
5.1.1
User 55
5.1.2
Credentials 57
5.1.3
Authentication 57
5.1.4
Token 57
5.1.5
Project 58
5.1.6
Service 59
5.1.7
Endpoint 60
5.1.8
Role 60
5.2 通過例子學(xué)習(xí) 62
5.2.1
第1步
登錄 62
5.2.2
第2步
顯示操作界面 62
5.2.3
第3步
顯示image列表 63
5.2.4
Troubleshoot 64
第 6 章 Image ServiceGlance 65
6.1 理解 Image 65
6.2 理解 Image
Service 66
6.3
Glance 架構(gòu) 66
6.4
Glance 操作 69
6.4.1
創(chuàng)建 image 70
6.4.2
刪除 image 72
6.5 如何使用
OpenStack CLI 74
6.6 如何
Troubleshooting 77
第 7 章 Compute ServiceNova 79
7.1
Nova架構(gòu) 80
7.1.1
架構(gòu)概覽 80
7.1.2
物理部署方案 82
7.1.3
從虛機(jī)創(chuàng)建流程看 nova-* 子服務(wù)如何協(xié)同工作 84
7.1.4
OpenStack 通用設(shè)計(jì)思路 85
7.2
Nova 組件詳解 88
7.2.1
nova-api 88
7.2.2
nova-scheduler 90
7.2.3
nova-compute 97
7.2.4
nova-conductor 104
7.3 通過場景學(xué)習(xí) Nova
105
7.3.1
看懂 OpenStack 日志 105
7.3.2
Launch 108
7.3.3
Shut Off 108
7.3.4
Start 112
7.3.5
Soft/Hard Reboot 114
7.3.6
Lock/Unlock 114
7.3.7
Terminate 115
7.3.8
Pause/Resume 116
7.3.9
Suspend/Resume 118
7.3.10
Rescue/Unrescue 119
7.3.11
Snapshot 122
7.3.12
Rebuild 125
7.3.13
Shelve 128
7.3.14
Unshelve 130
7.3.15
Migrate 133
7.3.16
Resize 139
7.3.17
Live Migrate 144
7.3.18
Evacuate 150
7.3.19
Instance 操作總結(jié) 154
7.4 小節(jié) 156
第 8 章 Block Storage Service Cinder 157
8.1 理解 Block
Storage 157
8.2 理解 Block
Storage Service 157
8.2.1
Cinder 架構(gòu) 158
8.2.2
物理部署方案 159
8.2.3
從volume創(chuàng)建流程看cinder-*子服務(wù)如何協(xié)同工作 160
8.2.4
Cinder 的設(shè)計(jì)思想 161
8.2.5
Cinder組件詳解 163
8.2.6
通過場景學(xué)習(xí) Cinder 170
8.3 小節(jié) 220
第 9 章 Networking Service Neutron 221
9.1
Neutron 概述 221
9.1.1
Neutron 功能 221
9.1.2
Neutron 網(wǎng)絡(luò)基本概念 222
9.2
Neutron 架構(gòu) 224
9.2.1
物理部署方案 227
9.2.2
Neutron Server 228
9.2.3
Neutron 如何支持各種 network provider 229
9.2.4
ML2 Core Plugin 231
9.2.5
Service Plugin / Agent 234
9.2.6
小結(jié) 235
9.3 為Neutron 準(zhǔn)備物理基礎(chǔ)設(shè)施 237
9.3.1
1控制節(jié)點(diǎn) 1 計(jì)算節(jié)點(diǎn)的部署方案 237
9.3.2
配置多個(gè)網(wǎng)卡區(qū)分不同類型的網(wǎng)絡(luò)數(shù)據(jù) 238
9.3.3
網(wǎng)絡(luò)拓?fù)?239
9.3.4
安裝和配置節(jié)點(diǎn) 240
9.4
Linux Bridge 實(shí)現(xiàn) Neutron 網(wǎng)絡(luò) 244
9.4.1
配置 linux-bridge mechanism driver 244
9.4.2
初始網(wǎng)絡(luò)狀態(tài) 245
9.4.3
了解Linux Bridge 環(huán)境中的各種網(wǎng)絡(luò)設(shè)備 247
9.4.4
local network 248
9.4.5
flat network 262
9.4.6
DHCP 服務(wù) 270
9.4.7
vlan network 274
9.4.8
Routing 285
9.4.9
vxlan network 307
9.4.10
Securet Group 321
9.4.11
Firewall as a Service 328
9.4.12
Load Balancing as a Service 337
9.5
Open vSwitch 實(shí)現(xiàn) Neutron 網(wǎng)絡(luò) 358
9.5.1
網(wǎng)絡(luò)拓?fù)?358
9.5.2
配置 openvswitch mechanism driver 359
9.5.3
初始網(wǎng)絡(luò)狀態(tài) 360
9.5.4
了解 Open vSwitch 環(huán)境中的各種網(wǎng)絡(luò)設(shè)備 362
9.5.5
local network 362
9.5.6 flat network 377
9.5.7
vlan network 386
9.5.8
Routing 399
9.5.9
vxlan network 411
9.6 總結(jié) 421
寫在最后 422