《OpenStack開源云王者歸來(lái):云計(jì)算虛擬化Nova、Swift、Quantum與Hadoop》按照入門、剖析、擴(kuò)展的講授方式,由淺入深地介紹了開源云計(jì)算平臺(tái)OpenStack(Grizzly版本)的整體框架、安裝部署、源碼剖析及擴(kuò)展開發(fā)。本書附帶的所有源代碼和安裝腳本均可以在Github上獲得。
《OpenStack開源云王者歸來(lái):云計(jì)算虛擬化Nova、Swift、Quantum與Hadoop》共19章,分為4篇。第1篇介紹了云計(jì)算常識(shí)及虛擬化技術(shù)(KVM、Libvirt)必備知識(shí);第2篇著重講解了OpenStack主要組件的安裝部署,以及OpenStack整個(gè)框架的參考部署;第3篇主要從源碼剖析的角度講解了Keystone、Swift、Quantum和Nova重要組件的設(shè)計(jì)思想與實(shí)現(xiàn)方法;第4篇介紹了如何利用OpenStack進(jìn)行擴(kuò)展開發(fā),包括如何在OpenStack平臺(tái)上搭建Hadoop,對(duì)Nova進(jìn)行擴(kuò)展,以及如何開發(fā)獨(dú)立的OpenStack組件。
本書內(nèi)容全面,實(shí)例眾多,實(shí)踐性強(qiáng),講解清晰,適合想要從事開源云OpenStack開發(fā)的技術(shù)人員閱讀。對(duì)于IT首席技術(shù)官、云計(jì)算研發(fā)和運(yùn)維等相關(guān)人員,本書有很高的參考價(jià)值。
適讀人群 :云計(jì)算研發(fā)和運(yùn)維人員、開源云研究人員、IT首席技術(shù)官、云計(jì)算愛(ài)好者
全面涵蓋云計(jì)算與虛擬化的入門知識(shí),以及OpenStack的部署、解析與擴(kuò)展
深入講解實(shí)用的云計(jì)算實(shí)現(xiàn)方案、虛擬化技巧及OpenStack的部署方案
對(duì)IT首席技術(shù)官、云計(jì)算研發(fā)和運(yùn)維等相關(guān)人員有很高的參考價(jià)值
涵蓋MySQL、RabbitMQ、Keystone、Swift、Glance、Cinder、Quantum、Nova和Dashboard等大部分重要組件的安裝
2種自定義擴(kuò)展組件可以讓讀者對(duì)OpenStack的使用舉一反三
3種經(jīng)典部署方式可顯著提高部署實(shí)戰(zhàn)的能力
14個(gè)典型案例深入剖析了OpenStack的內(nèi)在關(guān)鍵技術(shù)
35個(gè)常見錯(cuò)誤與分析可以避免讀者在進(jìn)行實(shí)際操作時(shí)走彎路
231個(gè)LinuxShell腳本完美展現(xiàn)OpenStack的安裝、部署流程
420個(gè)Python程序有助于讀者深入理解OpenStack的架構(gòu)實(shí)現(xiàn)及通信機(jī)制
所有實(shí)例遵循先提出問(wèn)題,再分析問(wèn)題,最后用代碼實(shí)現(xiàn)的寫作風(fēng)格
對(duì)OpenStack用到的關(guān)鍵技術(shù)和重要組件提供了具體的源碼剖析
為什么要寫這本書
云計(jì)算已經(jīng)從概念走向現(xiàn)實(shí),從討論走向?qū)嵺`。各種各樣的云計(jì)算平臺(tái)也層出不窮,基于云計(jì)算的應(yīng)用也不斷推出。相對(duì)于天價(jià)的商業(yè)云計(jì)算軟件,眾多的云計(jì)算愛(ài)好者和公司開始考慮一種易用的開源云計(jì)算軟件。開源云OpenStack正是在這樣的環(huán)境下誕生的。在OpenStack誕生之前也有很多的開源云軟件,但是OpenStack卻成為了當(dāng)下最熱門的開源云平臺(tái)。這主要得益于OpenStack的優(yōu)秀特性:靈活的結(jié)構(gòu)、巧妙的模塊化設(shè)計(jì)及極強(qiáng)的擴(kuò)展性能。但是,OpenStack的入門卻有著不低的門檻。除了技術(shù)本身的障礙之外,眼花繚亂的安裝部署方式、尚待完善的官方文檔、良莠不齊的技術(shù)博客、炒作概念的各種討論會(huì)等,讓希望了解開源云OpenStack的人望而卻步。此外,OpenStack版本升級(jí)較快,模塊變化較大,也給很多研究人員帶了很重的學(xué)習(xí)負(fù)擔(dān)。本書以實(shí)踐為宗旨,由淺入深,從入門到精通,一點(diǎn)一滴地介紹了OpenStack的核心技術(shù)。
本書以O(shè)penStack Grizzly版本為基礎(chǔ),詳細(xì)介紹了OpenStack的幾個(gè)方面:云計(jì)算技術(shù)的基礎(chǔ)、集群搭建、組件剖析及擴(kuò)展開發(fā)。閱讀完本書后,讀者能夠掌握OpenStack實(shí)現(xiàn)的技術(shù)細(xì)節(jié)與設(shè)計(jì)思想,并且將這些技術(shù)靈活地運(yùn)用在云計(jì)算的開發(fā)中。理解了OpenStack的精髓,無(wú)論OpenStack更新到何種版本,學(xué)習(xí)起來(lái)都會(huì)游刃有余。
本書有何特色
1.講解了云計(jì)算入門所需的虛擬化技術(shù)
為了將讀者帶入云計(jì)算的領(lǐng)域,虛擬化技術(shù)是一個(gè)繞不開的坎。作者專門介紹了OpenStack用到的虛擬化技術(shù),并編寫了大量的實(shí)例、程序及腳本供讀者參考。
2.涵蓋OpenStack大部分組件
本書涵蓋了MySQL、RabbitMQ、Keystone、Swift、Glance、Cinder、Quantum、Nova和Dashboard重要組件的安裝。每一種組件的安裝都單獨(dú)成一個(gè)模塊,并且介紹了這些組件之間安裝部署的相互依賴關(guān)系。此外,還提供了多種多樣的參考部署方式。通過(guò)安裝篇提供安裝腳本,讀者只需要簡(jiǎn)單地配置,便可以快速地部署相應(yīng)的服務(wù)。此外,本書對(duì)OpenStack用到的關(guān)鍵技術(shù)和重要組件都有源代碼剖析。
3.案例經(jīng)典,注重實(shí)踐
為了講解OpenStack的各種技術(shù)細(xì)節(jié),書中編寫了大量的程序和腳本。為了講解云計(jì)算設(shè)計(jì)思想與實(shí)現(xiàn)細(xì)節(jié),本書的每一章都設(shè)計(jì)了經(jīng)典案例、腳本及代碼實(shí)現(xiàn)。
4.循序漸進(jìn),由淺入深
本書從云計(jì)算最基本的虛擬化技術(shù)入手,由虛擬機(jī)、虛擬資源的管理引出開源云OpenStack的實(shí)現(xiàn),由淺入深,層層解開了開源云OpenStack的關(guān)鍵技術(shù)與重要組件。
5.提供完善的技術(shù)支持
本書所有的程序、腳本和文件資源均可以在https://github.com/JiYou/openstack上下載,并且會(huì)提供后續(xù)的更新與支持,讓作者與讀者可以面對(duì)面直接交流。
本書內(nèi)容及知識(shí)體系
第1篇 基礎(chǔ)篇(第1~2章)
本篇介紹了云計(jì)算的基本概念及開源云OpenStack的基本知識(shí)。主要包括云計(jì)算概念的產(chǎn)生與優(yōu)勢(shì)、開源云OpenStack的框架與特點(diǎn)、KVM和Libvirt虛擬化技術(shù)的使用。
第2篇 安裝篇(第3~10章)
本篇介紹了OpenStack系統(tǒng)的安裝與集成,包含了OpenStack所需組件的安裝部署,涵蓋MySQL、RabbitMQ、Keystone、Swift、Glance、Cinder、Quantum、Nova及Dashboard。每個(gè)組件的安裝部署都單獨(dú)成章,并且給出了OpenStack集群部署的幾種常用參考架構(gòu)。講解安裝的同時(shí),也介紹了OpenStack各個(gè)組件之間的相互依賴關(guān)系。
第3篇 剖析篇(第11~16章)
本篇主要介紹了OpenStack重要組件所利用的關(guān)鍵技術(shù)。剖析的組件包括Keystone、Swift、Quantum和Nova。此外,還重點(diǎn)介紹了Nova Compute虛擬機(jī)管理服務(wù)。介紹的OpenStack關(guān)鍵技術(shù)包括OpenStack RESTful API的實(shí)現(xiàn)、RPC消息通信服務(wù)和Swift存儲(chǔ)系統(tǒng)設(shè)計(jì)。介紹這些關(guān)鍵技術(shù)時(shí),由淺入深地提供了大量的參考代碼與實(shí)現(xiàn)細(xì)節(jié),逐步剝開了OpenStack關(guān)鍵技術(shù)細(xì)節(jié)的面紗。
第4篇 擴(kuò)展篇(第17~19章)
本篇介紹了如何利用OpenStack做二次開發(fā)。涵蓋的內(nèi)容有:如何在OpenStack上搭建Hadoop大數(shù)據(jù)分析系統(tǒng);Nova擴(kuò)展開發(fā);添加自定義組件。添加自定義組件時(shí),介紹了如何從基礎(chǔ)代碼構(gòu)建一個(gè)兼容OpenStack的獨(dú)立模塊。詳細(xì)介紹了數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)、API接口的添加、模塊之間RPC調(diào)用。還介紹了將OpenStack的關(guān)鍵技術(shù)運(yùn)用在一個(gè)獨(dú)立開發(fā)的模塊中。
如何獲得本書資源
為了方便讀者閱讀本書,筆者將本書所涉及的所有代碼上傳于https://github.com/JiYou/ openstack。包括的內(nèi)容如下:
* 本書引用的OpenStack Grizzly版本的源代碼、image資源、腳本和python包;
* 剖析OpenStack關(guān)鍵技術(shù)細(xì)節(jié)時(shí)所編寫的示例;
* 添加自定義組件時(shí),創(chuàng)建的兼容于OpenStack的組件Monitor的整個(gè)項(xiàng)目源碼和安裝腳本;
* 后續(xù)勘誤與安裝腳本的更新。
適合閱讀本書的讀者
* 需要入門并且全面學(xué)習(xí)云計(jì)算的人員;
* 希望使用OpenStack開源云的研究人員;
* 需要了解云計(jì)算實(shí)現(xiàn)技術(shù)細(xì)節(jié)和內(nèi)部運(yùn)作機(jī)制的程序員;
* 需要利用OpenStack做快速二次開的程序員;
* 開源云OpenStack數(shù)據(jù)中心的管理員;
* 對(duì)云計(jì)算感興趣的公司或個(gè)人。
閱讀本書的建議
* 云計(jì)算初學(xué)者,請(qǐng)務(wù)必從一章開始閱讀,并且熟練掌握第2章虛擬化技術(shù)。熟練的虛擬機(jī)管理操作,會(huì)給后續(xù)的研究與OpenStack系統(tǒng)安裝帶來(lái)極大的方便。此外,還需要基本的Python知識(shí),以及熟練掌握Linux系統(tǒng),特別是Ubuntu-12.10 Service Edition的使用。
* 云計(jì)算入門者,有一定云計(jì)算概念,并且知道如何操作KVM/Libvirt的讀者,可以直接閱讀安裝篇,了解安裝OpenStack各個(gè)組件的基本流程。
* 閱讀本書時(shí),請(qǐng)務(wù)必對(duì)照https://github.com/JiYou/openstack/tree/master/packages/ source上提供的OpenStack的代碼,以保持OpenStack版本一致。此外,操作系統(tǒng)最好選用Ubuntu-12.10,因?yàn)楸緯峁┑陌惭b腳本和安裝包均基于Ubuntu-12.10。
* 注意關(guān)鍵技術(shù)。由于OpenStack系統(tǒng)過(guò)于龐大,本書也只是挑選了OpenStack重要組件中的關(guān)鍵技術(shù)細(xì)節(jié)進(jìn)行介紹。理解了這些關(guān)鍵技術(shù)細(xì)節(jié),讀通整個(gè)OpenStack項(xiàng)目的代碼便絕非難事。
* 一切密秘盡在OpenStack的源碼中,正所謂“師傅領(lǐng)進(jìn)門,修行靠自身”。本書的目的在于將欲入門而不得其要領(lǐng)的人帶入OpenStack開發(fā)的大門。就如同告訴“挖寶人”寶藏的所在地和挖掘方法一樣,本書將讀者帶入門后,真正的挖掘還需要讀者多看源碼,多動(dòng)手實(shí)踐。
勘誤和支持
由于筆者水平所限,加之本書的篇幅和編寫時(shí)間的限制,使得本書寫作比較倉(cāng)促。因此書中可能會(huì)出現(xiàn)一些疏漏或者不準(zhǔn)確的表述,懇請(qǐng)讀者批評(píng)與指正。本書后續(xù)更新與勘誤將會(huì)發(fā)布在https://github.com/JiYou/openstack相應(yīng)的章節(jié)中。如果讀者在閱讀本時(shí)有疑問(wèn),或者對(duì)本書有什么寶貴的意見與建議,歡迎將郵件發(fā)送至jumail@qq.com或bookservice2008@163.com。
本書作者
本書由英特爾亞太研發(fā)中心的戢友主筆編寫。其他參與編寫的人員有梁勝斌、林陽(yáng)、林珍珍、劉愛(ài)軍、劉海峰、羅明英、馬奎林、喬建軍、施迎、石小勇、宋曉薇、蘇亞光、譚東平、王守信、王向軍、王曉東、王曉倩、王曉艷、魏來(lái)科、吳俊、閆芳、楊丹、楊艷、宜亮、余柏山、張春杰、張春曉、張娜、趙東、鐘曉鳴、朱翠紅、朱萍玉、龔力、黃茂發(fā)、邢巖、符滔滔。
致謝
感謝提供了大量幫助的賀丹,他為本書提供了大篇幅的修改意見。在介紹OpenStack關(guān)鍵技術(shù)時(shí),他設(shè)計(jì)并參與了大量經(jīng)典案例的編寫與檢測(cè)。本書素材的選取、內(nèi)容章節(jié)的編排、OpenStack重要組件的剖析,他都給予了非常多而且極具參考價(jià)值的建議與意見。
感謝這本書的編輯們,正是由于他們積極而又耐心的幫助,才使得本書的出版成為 可能。
感謝為本書部分章節(jié)提出修改意見的劉丹,他對(duì)本書安裝篇的內(nèi)容和腳本更正了不少錯(cuò)誤。
感謝我的父母!他們對(duì)我的寫書工作表示了極大的理解和支持,并給了我無(wú)處不在的關(guān)懷與照顧。
感謝我親愛(ài)的老婆楊丹鳳!她對(duì)于我寫書給了極大的鼓勵(lì)與支持。
此外,感謝在Intel IT Flex部門一起工作的各位Manager和同事們!
謹(jǐn)以此書獻(xiàn)給我最親愛(ài)的家人及眾多熱愛(ài)開源云OpenStack的朋友們!
最后希望各位讀者通過(guò)閱讀本書,能很好地掌握OpenStack開源云技術(shù),成為這個(gè)領(lǐng)域中的“王者”。我將倍感欣慰!所學(xué)授之于人,不亦樂(lè)乎?最后祝讀書快樂(lè)!
戢友
于上海
戢友,畢業(yè)于華東師范大學(xué)。計(jì)算機(jī)應(yīng)用技術(shù)碩士。研究方向?yàn)闄C(jī)器學(xué)習(xí)與模式識(shí)別,F(xiàn)就職于英特爾亞太研發(fā)有限公司,從事OpenStack與云計(jì)算的研發(fā)工作。對(duì)云計(jì)算、云存儲(chǔ)、大數(shù)據(jù)和分布式系統(tǒng)有強(qiáng)烈的興趣和較長(zhǎng)時(shí)間的研究。
第1篇 基礎(chǔ)篇
第1章 OpenStack概述
1.1 云計(jì)算簡(jiǎn)介
1.1.1 什么是云計(jì)算
1.1.2 什么是云存儲(chǔ)
1.1.3 私有云與公有云
1.2 為什么使用云計(jì)算
1.2.1 方案1:簡(jiǎn)單的服務(wù)部署
1.2.2 方案2:分布式服務(wù)部署
1.2.3 方案3:基于虛擬化的服務(wù)部署
1.2.4 方案4:云計(jì)算的解決方案
1.3 OpenStack架構(gòu)
1.3.1 OpenStack與云計(jì)算
1.3.2 OpenStack發(fā)展與現(xiàn)狀
1.3.3 OpenStack優(yōu)勢(shì)
1.3.4 OpenStack學(xué)習(xí)建議
1.4 OpenStack各個(gè)組件及功能
1.4.1 虛擬機(jī)管理系統(tǒng)Nova
1.4.2 磁盤存儲(chǔ)系統(tǒng)Glance與Swift
1.4.3 虛擬網(wǎng)絡(luò)管理Quantum
1.4.4 OpenStack三大組件
1.5 小結(jié)
第2章 虛擬化技術(shù)
2.1 虛擬化技術(shù)簡(jiǎn)介
2.1.1 KVM
2.1.2 Xen
2.1.3 Libvirt
2.2 安裝Libvirt虛擬化工具
2.2.1 安裝KVM
2.2.2 安裝Libvirt
2.3 虛擬機(jī)配置文件詳解
2.3.1 xml描述hypervisor
2.3.2 虛擬機(jī)整體信息
2.3.3 系統(tǒng)信息
2.3.4 硬件資源特性
2.3.5 突發(fā)事件處理
2.3.6 raw格式image
2.3.7 qcow2格式image
2.3.8 格式的選擇
2.3.9 多個(gè)image
2.3.10 虛擬光盤
2.3.11 虛擬網(wǎng)絡(luò)
2.3.12 vnc配置
2.4 制作image
2.4.1 virt-manager創(chuàng)建image
2.4.2 virsh命令創(chuàng)建image
2.5 快速啟動(dòng)虛擬機(jī)
2.5.1 手動(dòng)安裝
2.5.2 直接復(fù)制
2.5.3 qcow2快速創(chuàng)建
2.5.4 修改qcow2 image
2.5.5 大批量創(chuàng)建虛擬機(jī)
2.6 虛擬機(jī)桌面顯示
2.6.1 準(zhǔn)備工作
2.6.2 創(chuàng)建Windows 7 Image
2.6.3 創(chuàng)建Windows 7虛擬機(jī)
2.6.4 spice桌面顯示
2.7 常見錯(cuò)誤與分析
2.8 小結(jié)
2.8.1 常用的virsh命令
2.8.2 磁盤快照管理
第2篇 安裝篇
第3章 安裝Keystone安全認(rèn)證服務(wù)
3.1 Keystone簡(jiǎn)介
3.2 搭建局域網(wǎng)源
3.2.1 局域網(wǎng)apt-get源搭建方法
3.2.2 局域網(wǎng)python源搭建方法
3.2.3 Ubuntu-12.10局域網(wǎng)源
……
第4章 安裝Swift存儲(chǔ)服務(wù)
第5章 安裝Glance鏡像服務(wù)
第6章 安裝Quantum虛擬網(wǎng)絡(luò)服務(wù)
第7章 安裝Cinder塊存儲(chǔ)服務(wù)
第8章 安裝Nova虛擬機(jī)管理系統(tǒng)
第9章 安裝Dashboard Web界面
第10章 OpenStack部署示例
第3篇 剖析篇
第11章 OpenStack服務(wù)分析
第12章 Keystone的安全認(rèn)證
第13章 Swift存儲(chǔ)服務(wù)
第14章 Quantum虛擬網(wǎng)絡(luò)
第15章 Nova框架
第16章 Nova Compute服務(wù)
第4篇 擴(kuò)展篇
第17章 從OpenStack到云應(yīng)用
第18章 基于Nova的擴(kuò)展
第19章 添加自定義組件
第3章 安裝Keystone 安全認(rèn)證服務(wù)
早期的OpenStack 版本中,并沒(méi)有Keystone 安全認(rèn)證模塊。用戶、消息、API 調(diào)用的認(rèn)證,都是放在Nova 模塊中。在后來(lái)的開發(fā)中,由于有各種各樣的模塊加入到OpenStack 中,安全認(rèn)證所涉及的面也變得更加廣泛,如用戶登錄、用戶消息傳遞、模塊消息通信、服務(wù)注冊(cè)等各不相同的認(rèn)證。處理這些不同的安全認(rèn)證變得越來(lái)越復(fù)雜,于是需要一個(gè)模塊來(lái)處理這些不同的安全認(rèn)證。Keystone 也就應(yīng)運(yùn)而生。本章主要介紹MySQL 的安裝與使用,以及Keystone 服務(wù)安裝及測(cè)試。本章主要涉及到的知識(shí)點(diǎn)如下。
MySQL:數(shù)據(jù)庫(kù)的介紹與安裝。
RabbitMQ:消息通信服務(wù)的介紹與安裝。
Keystone:安全認(rèn)證服務(wù)的介紹與安裝。
3.1 Keystone 簡(jiǎn)介
OpenStack 管理了眾多的軟硬件資源,并且利用這些資源提供云服務(wù)。任何資源的管理,都會(huì)涉及到安全的管理。就OpenStack 而言,安全的管理,分為以下幾個(gè)方面:用戶認(rèn)證、服務(wù)認(rèn)證和口令認(rèn)證。無(wú)論是私有云還是公有云,都會(huì)開放接口給眾多的用戶。Keystone 在對(duì)于用戶進(jìn)行認(rèn)證的同時(shí),也對(duì)用戶的權(quán)限進(jìn)行了限制。Keystone 還會(huì)保證OpenStack 的服務(wù)可以正常注
冊(cè)。除此之外,各服務(wù)組件之間的消息傳遞還需要用口令,當(dāng)口令過(guò)期則不再使用此口令。如果把OpenStack 比作一個(gè)別墅,OpenStack 內(nèi)部的各種服務(wù)好比各種房間,用戶比作住在別墅里面的人,那么Keystone 就是相當(dāng)于別墅的安全機(jī)制。首先,進(jìn)入別墅的人需要進(jìn)行身份認(rèn)證。除此之外,當(dāng)用戶進(jìn)入到別墅之后,只能進(jìn)入屬于自己可以訪問(wèn)的房間,并不是所有的房間都可以進(jìn)去(好比Keystone 的用戶權(quán)限管理)。別墅里面的房間都需要進(jìn)行安全機(jī)制的管理(如上鎖、刷卡)。此外串門的時(shí)候,還需要使用口令1。由于OpenStack 所有的服務(wù)都需要在Keystone 上進(jìn)行注冊(cè),所以O(shè)penStack 的安裝需要從Keystone 入手。
實(shí)際上,在家里面,也經(jīng)常使用口令。進(jìn)門的時(shí)候會(huì)說(shuō)“我回來(lái)了”,進(jìn)入父母的房間會(huì)說(shuō)“我可以進(jìn)來(lái)么”,人的聲音就起到了口令的作用。
3.2 搭建局域網(wǎng)源
數(shù)據(jù)中心中的結(jié)點(diǎn),并不能保證都能夠正常地訪問(wèn)公共網(wǎng)絡(luò)。在這些節(jié)點(diǎn)上安裝服務(wù)時(shí),最好的方式是使用離線源。本節(jié)介紹如何搭建兩種將會(huì)在OpenStack 中用到的源:deb源和python 安裝包源。
3.2.1 局域網(wǎng)apt-get 源搭建方法
實(shí)際安裝部署時(shí),并不能保證每個(gè)結(jié)點(diǎn)都可以訪問(wèn)網(wǎng)絡(luò)。因此,建立局域網(wǎng)apt-get源顯得非常必要。建立局域網(wǎng)源方法如下。
……