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