本書全面涵蓋雲端運算與虛擬化的入門知識,以及OpenStack的部署、解析與擴展;深入講解實用的雲端運算實現方案、虛擬化技巧及OpenStack的部署方案。
內容涵蓋MySQL、RabbitMQ、Keystone、Swift、Glance、Cinder、Quantum、Nova和Dashboard等大部分重要組件的安裝
◎ 2種自訂擴展元件,讓讀者對OpenStack的使用舉一反三
◎ 3種經典部署方式,可顯著提高部署實戰的能力
◎ 14個典型案例,深入剖析OpenStack的內在關鍵技術
◎ 35個常見錯誤與分析,可以避免讀者在進行實際操作時走彎路
◎ 231個Linux Shell指令搞,完美展現OpenStack的安裝、部署流程
◎ 420個Python程式,有助於讀者深入理解OpenStack的架構實現及通信機制
◎ 所有實例遵循先提出問題,再分析問題,最後用程式碼實現的寫作風格
◎ 對OpenStack用到的關鍵技術和重要元件,提供具體的原始程式碼剖析
適用:從事開放原始碼雲端系統OpenStack開發的技術人員、IT首席技術官、雲端運算研發和運行維護等相關人員。
作者簡介:
戢友
畢業于華東師範大學,電腦應用技術碩士,研究方向為機器學習與模式識別。
任職於英特爾亞太研發有限公司,從事OpenStack與雲端運算的研發工作。對雲端運算、雲端存儲、大數據、分散式系統等有強烈的興趣和長時間的研究。
作者序
前言
為什麼要寫這本書
雲端運算已經從概念走向現實,從理論走向實作。各種各樣的雲端運算平台也層出不窮,以雲端運算為基礎的應用也不斷推出。相對於天價的商業雲端運算軟體,許多的雲端運算同好和公司開始考慮一種好用的開放原始碼雲端運算軟體。OpenStack正是在這樣的環境下誕生的。在OpenStack 誕生之前也有很多的開放原始碼雲端軟
體,但是OpenStack 卻成為了當下最熱門的開放原始碼雲端平台。這主要得益於OpenStack 的優秀特性:靈活的結構、巧妙的模組化設計及極強的擴充效能。但是,OpenStack 的入門卻具有不低的門檻。除了技術本身的障礙之外,眼花繚亂的安裝部署方式、尚待完整的官方文件、良莠不齊的技術部落格、炒作概念的各種討論會等,
讓希望了解開放原始碼雲端系統OpenStack 的人望而卻步。此外,OpenStack 版本升級較快,模組變化較大,也讓很多研究人員產生極重的學習負擔。本書以實作為宗旨,由淺入深,從入門到精通,一點一滴地介紹了OpenStack 的核心技術。
本書以OpenStack Grizzly 版本為基礎,詳細介紹OpenStack 幾個方面:雲端運算技術的基礎、叢集架設、元件剖析及擴充開發。閱讀完本書後,讀者能夠掌握OpenStack 實現的技術細節與設計思想,並且將這些技術靈活地運用在雲端運算的開發中。了解OpenStack 的精髓,無論OpenStack 更新到何種版本,學習起來都會遊刃有餘。
本書特色
❶ 說明了雲端運算入門所需的虛擬化技術
為了將讀者帶入雲端運算的領域,虛擬化技術絕對是必要課題。作者專門介紹了OpenStack 用到的虛擬化技術,並撰寫了大量的實例、程式及指令稿供讀者參考。
❷ 涵蓋OpenStack 大部分元件
本書涵蓋了MySQL、RabbitMQ、Keystone、Swift、Glance、Cinder、Quantum、Nova 和Dashboard 重要元件的安裝。每一種元件的安裝都單獨成一個模組,並且介紹這些元件之間安裝部署的相互依賴關係。此外,還提供了多種多樣的參考部署方式。透過安裝篇提供安裝指令稿,讀者只需要簡單地設定,便可以快速地部署對應的服務。此外,本書對OpenStack 用到的關鍵技術和重要元件都有原始程式碼剖析。
❸ 案例經典,注重實作
為了說明OpenStack 的各種技術細節,書中撰寫了大量的程式和指令稿。為了說明雲端運算設計思想與實現細節,本書的每一章都設計了經典案例、指令稿及程式實現。
❹ 循序漸進,由淺入深
本書從雲端運算最基本的虛擬化技術入手,由虛擬機器、虛擬資源的管理引出開放原始碼雲端系統OpenStack 的實現,由淺入深,層層解開了開放原始碼雲端系統OpenStack 的關鍵技術與重要元件。
❺ 提供完整的技術支援
本書所有的程式、指令稿和檔案資源均可以在https://github.com/JiYou/openstack
上下載,並且會提供後續的更新與支援,讓作者與讀者可以面對面直接交流。
前言
為什麼要寫這本書
雲端運算已經從概念走向現實,從理論走向實作。各種各樣的雲端運算平台也層出不窮,以雲端運算為基礎的應用也不斷推出。相對於天價的商業雲端運算軟體,許多的雲端運算同好和公司開始考慮一種好用的開放原始碼雲端運算軟體。OpenStack正是在這樣的環境下誕生的。在OpenStack 誕生之前也有很多的開放原始碼雲端軟
體,但是OpenStack 卻成為了當下最熱門的開放原始碼雲端平台。這主要得益於OpenStack 的優秀特性:靈活的結構、巧妙的模組化設計及極強的擴充效能。但是,OpenStack 的入門卻具有不低的門檻。除了技...
目錄
第1 篇 基礎篇
01 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 架構
1.3.1 OpenStack 與雲端運算
1.3.2 OpenStack 發展與現狀
1.3.3 OpenStack 優勢
1.3.4 OpenStack 學習建議
1.4 OpenStack 各個元件及功能
1.4.1 虛擬機器管理系統Nova
1.4.2 磁碟儲存系統Glance 與Swift
1.4.3 虛擬網路管理Quantum
1.4.4 OpenStack 三大元件
1.5 小結
02 虛擬化技術
2.1 虛擬化技術簡介
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 系統資訊
2.3.4 硬體資源特性
2.3.5 突發事件處理
2.3.6 raw 格式image
2.3.7 qcow2 格式image
2.3.8 格式的選擇
2.3.9 多個image
2.3.10 虛擬光碟
2.3.11 虛擬網路
2.3.12 vnc 設定
2.4 製作image
2.4.1 virt-manager 建立image
2.4.2 virsh 指令建立image
2.5 快速啟動虛擬機器
2.5.1 手動安裝
2.5.3 qcow2 快速建立
2.5.4 修改qcow2 image
2.5.5 大量建立虛擬機器
2.6 虛擬機器桌面顯示
2.6.1 準備工作
2.6.2 建立Windows 7 Image
2.6.3 建立Windows 7 虛擬機器
2.6.4 spice 桌面顯示
2.7 常見錯誤與分析
2.8 小結
2.8.1 常用的virsh 指令
2.8.2 磁碟快照管理
第2 篇 安裝篇
03 安裝Keystone 安全認證服務
3.1 Keystone 簡介
3.2 架設區域網路來源
3.2.1 區域網apt-get 源架設方法
3.2.2 區域網python 源架設方法
3.2.3 Ubuntu-12.10 區域網路來源
3.3 架設MySQL 資料庫
3.3.1 apt-get 安裝MySQL
3.3.2 原始程式安裝MySQL
3.4 安裝RabbitMQ 訊息通訊服務
3.5 安裝Keystone
3.5.1 python 原始程式套件的安裝
3.5.2 Keystone 自動化安裝
3.5.3 Keystone 用戶端使用及測試
3.5.4 Keystone 的管理
3.6 常見錯誤與分析
3.6.1 無法下載python 相依套件
3.6.2 Keystone 指令執行失敗
3.7 小結
04 安裝Swift 儲存服務
4.1 Swift 基本概念
4.1.1 Swift 的特性
4.1.2 Swift 的架構
4.1.3 Swift 的故障處理
4.1.4 Swift 的叢集部署
4.2 搭建環境
4.2.1 準備工作
4.2.2 建立Proxy Node
4.2.3 建立Storage Node
4.3 安裝Proxy 服務
4.3.1 解決相依關係
4.3.2 註冊Swift 服務
4.3.3 設定Proxy 服務
4.3.4 啟動Proxy 服務
4.4 安裝儲存服務
4.4.1 磁碟格式化
4.4.2 同步服務
4.4.3 子服務
4.4.4 啟動儲存服務
4.5 管理儲存服務
4.5.1 使用儲存服務
4.5.2 刪除儲存節點
4.5.3 增加儲存節點
4.5.4 增加Proxy 節點
4.6 常見錯誤及分析
4.6.1 Keystone 註冊使用者失敗
4.6.2 Proxy 服務無法正常啟動
4.6.3 儲存服務無法使用
4.7 小結
4.7.1 安裝Proxy Node
4.7.2 安裝Storage Node
05 安裝Glance 鏡像服務
5.1 Glance 簡介
5.2 Glance 服務的安裝
5.2.1 解決相依關係
5.2.2 註冊Glance 服務至Keystone
5.2.3 Glance 原始程式套件的安裝
5.3 Glance 服務的設定
5.3.1 Glance 服務的基本設定
5.3.2 使用檔案系統儲存鏡像
5.3.3 使用Swift 物件儲存服務儲存鏡像
5.3.4 上傳複雜的磁碟鏡像
5.3.5 上傳磁碟鏡像參考指令稿
5.4 Glance 自動化安裝
5.5 常見錯誤分析
5.5.1 上傳磁碟鏡像中斷的解決方案
5.5.2 openssl 出錯
5.5.3 上傳大磁碟鏡像的方法
5.6 小結
06 安裝Quantum 虛擬網路服務
6.1 Open vSwitch 虛擬交換機
6.1.1 Open vSwitch 簡介
6.1.2 GRE 隧道模式
6.1.3 VLAN 模式
6.2 解決相依關係
6.3 註冊Quantum 服務至Keystone
6.4 安裝Quantum 服務
6.4.1 原始程式安裝Quantum
6.4.2 Quantum Server 的設定
6.4.3 設定OVS agent
6.4.4 設定dhcp agent
6.4.5 設定l3 agent
6.5 Quantum 自動化安裝
6.6 Quantum 服務使用及測試
6.6.1 建立內部網路
6.6.2 建立外部網路
6.7 常見錯誤與分析
6.7.1 虛擬機器之間無法通訊
6.7.2 dhcp 和agent 服務啟動警告
6.8 小結
6.8.1 Open vSwitch 的使用
6.8.2 Quantum 的安裝
07 安裝Cinder 區塊儲存服務
7.1 Cinder 基本概念
7.1.1 Cinder 的特性
7.1.2 Cinder 的架構
7.1.3 Cinder 架構的優缺點
7.2 搭建環境
7.2.1 準備工作
7.2.2 建立API Node
7.2.3 建立Volume 儲存節點
7.3 安裝Cinder API 服務
7.3.1 解決相依關係
7.3.2 註冊Cinder 服務至Keystone
7.3.3 設定MySQL 服務
7.3.4 修改設定檔
7.3.5 執行Cinder API 服務
7.4 安裝Cinder Volume 服務
7.4.1 準備工作
7.4.2 啟動Volume 服務
7.5 參考部署
7.5.1 單節點部署
7.5.2 多節點部署
7.6 常見錯誤及分析
7.6.1 虛擬機器之間無法通訊
7.6.2 cinder 用戶端指令執行失敗
7.6.3 沒有額外分區
7.7 小結
7.7.1 安裝Cinder API Node
7.7.2 安裝Cinder Volume Node
08 安裝Nova 虛擬機器管理系統
8.1 Nova 基本概念
8.1.1 Nova 的特性
8.1.2 Nova 的架構
8.1.3 Nova 架構的優缺點
8.2 搭建環境
8.2.1 準備工作
8.2.2 建立節點
8.3 安裝Nova API 服務
8.3.1 準備工作
8.3.2 解決相依關係
8.3.3 註冊Nova 服務
8.3.4 設定MySQL 服務
8.3.5 修改Nova 設定檔
8.4 安裝Nova Compute 服務
8.4.1 準備工作
8.4.2 解決相依關係
8.4.3 設定檔
8.4.4 啟動服務
8.4.5 檢查服務
8.5 參考部署
8.5.1 單節點部署
8.5.2 多節點部署
8.6 用戶端使用
8.6.1 環境變數
8.6.2 建立虛擬機器
8.7 小結
8.7.1 安裝Nova API Node
8.7.2 安裝Nova Compute Node
09 安裝Dashboard Web 介面
9.1 Dashboard 簡介
9.2 Dashboard 的安裝
9.2.1 解決相依關係
9.2.2 原始程式安裝Horizon
9.3 Dashboard 的設定
9.3.1 local_settings.py 檔案的設定
9.3.2 secret_key.py 檔案的修改
9.3.3 Apache2 的設定
9.3.4 vncproxy 的設定
9.4 Dashboard 自動化安裝
9.5 Web 介面使用及測試
9.5.1 登入Dashboard
9.5.2 使用Dashboard 上傳鏡像
9.5.3 使用Dashboard 建立網路
9.5.4 使用Dashboard 建立虛擬機器
9.6 常見錯誤分析
9.7 小結
10 OpenStack 部署範例
10.1 OpenStack 單節點部署
10.1.1 單節點部署的特點
10.1.2 準備工作
10.1.3 系統初始化設定
10.1.4 安裝OpenStack 各元件
10.2 OpenStack 多節點部署
10.2.1 多點部署特點
10.2.2 部署流程
10.3 OpenStack 實用部署
10.3.1 實用部署特點
10.3.2 部署流程
10.4 常見錯誤及分析
10.4.1 eth1 網路卡無法使用
10.4.2 自建來源無法使用
10.4.3 用戶端指令執行失敗
10.5 小結
10.5.1 單節點安裝
10.5.2 多節點安裝
10.5.3 實用安裝
11 OpenStack 服務分析
11.1 RESTful API 簡介
11.2 架設RESTful API
11.2.1 一個簡單的WSGI 服務
11.2.2 使用PasteDeploy 訂製WSGI 服務
11.2.3 帶篩檢程式的WSGI 服務
11.2.4 利用類別來實現篩檢程式和應用
11.2.5 實現WSGI 服務的URL對映
11.3 以訊息通訊為基礎的RPC 呼叫
11.3.1 AMQP 簡介
11.3.2 RabbitMQ 分析
11.3.3 RPC 呼叫的實現
11.4 小結
11.4.1 RESTful API
11.4.2 RPC 呼叫
12 Keystone 的安全認證
12.1 Keystone 框架結構
12.1.1 Keystone 服務端架構
12.1.2 Keystone 用戶端架構
12.2 使用者管理
12.2.1 使用者認證
12.2.2 本機認證
12.2.3 使用者資訊的維護
12.3 多租戶機制
12.3.1 租戶管理
12.3.2 角色管理
12.3.3 許可權管理
12.4 Token 管理
12.4.1 Token 認證方式
12.4.2 Token 的儲存
12.5 服務的安全認證
12.6 OpenStack 各個模組與Keystone 的互動
12.7 小結
12.7.1 Keystone 伺服器端架構
12.7.2 用戶端發送HTTP 請求流程
12.7.3 使用者認證
12.7.4 存取OpenStack 服務的流程
13 Swift 儲存服務
13.1 Swift 框架概述
13.2 問題描述
13.3 炮灰方法
13.4 快拳方法
13.4.1 演算法原理
13.4.2 演算法實現
13.4.3 演算法分析
13.4.4 演算法破綻
13.5 太極拳
13.5.1 演算法原理
13.5.2 演算法實現
13.5.3 演算法分析
13.5.4 演算法升級
13.5.5 演算法破綻
13.6 虛實相生
13.6.1 演算法原理
13.6.2 演算法實現
13.6.3 演算法分析
13.6.4 演算法升級
13.6.5 演算法分析
13.7 擴展
13.7.1 對映中的動與不動
13.7.2 虛節點數目
13.7.3 剩餘話題
13.8 小結
14 Quantum 虛擬網路
14.1 Quantum 框架概述
14.2 Quantum Server 服務
14.2.1 Quantum Server 啟動流程
14.2.2 啟動ovs plugin RPC 服務
14.2.3 建立網路
14.2.4 建立子網
14.2.5 建立端點
14.3 Quantum OpenVSwitch Agent服務
14.3.1 Quantum OVS Agent 啟動流程
14.3.2 Quantum OVS Agent 定時工作
14.3.3 虛擬網路的實現
14.4 Nova 與Quantum 的互動
14.4.1 分配邏輯網路資源
14.4.2 建立OpenVSwitch 端點
14.5 Quantum DHCP Agent 服務
14.5.1 服務的啟動
14.5.2 Manager 類別
14.5.3 Dnsmasq DHCP 的維護
14.6 小結
14.6.1 Quantum 主要資料庫表單
14.6.2 Quantum OpenVSwitch Agent 的啟動
14.6.3 虛擬機器通訊流程
14.6.4 建立端點的流程
14.6.5 建立Dnsmasq DHCP 服務
15 Nova 框架
15.1 Nova 框架介紹
15.2 Nova API 服務
15.2.1 Nova API 服務的啟動
15.2.2 處理HTTP 請求的流程
15.2.3 建立虛擬機器流程
15.3 Nova RPC 服務
15.3.1 Nova Scheduler 的啟動流程
15.3.2 Nova RPC 服務的建立
15.4 Nova Scheduler 服務分析
15.4.1 建立虛擬機器請求的處理流程
15.4.2 排程演算法
15.4.3 資源資訊的更新
15.4.4 過濾和權重計算
15.5 Nova Conductor 服務
15.6 小結
15.6.1 建立虛擬機器請求的處理流程
15.6.2 排程演算法
16 Nova Compute 服務
16.1 定時任務
16.1.1 定時工作的啟動
16.1.2 update_available_resource
16.1.3 report_driver_status
16.1.4 publish_service_capabilities
16.2 建立虛擬機器
16.2.1 建立虛擬機器的流程
16.2.2 建立虛擬機器鏡像檔案
16.2.3 建立虛擬機器XML 定義檔案
16.2.4 建立虛擬機器和虛擬網路
16.3 虛擬機器的線上移轉
16.3.1 virsh 指令實現線上移轉
16.3.2 虛擬機器移轉的整體流程
16.3.3 虛擬機器移轉的前期檢查
16.3.4 Nova Compute 服務中的移轉流程
16.4 虛擬機器快照管理
16.4.1 Nova API 建立快照流程
16.4.2 Nova Compute 建立快照流程
16.5 小結
16.5.1 Nova RPC 定時工作的建立
16.5.2 Nova Compute 建立虛擬機器
16.5.3 virsh 指令移轉虛擬機器
16.5.4 Nova Compute 線上移轉
16.5.5 Nova Compute 服務建立快照流程
第4 篇 擴展篇
17 從OpenStack 到雲端應用
17.1 Hadoop 簡介
17.1.1 HDFS 檔案系統
17.1.2 Map Reduce 機制
17.2 Hadoop 的安裝
17.2.1 準備工作
17.2.2 Hadoop 的單節點模式
17.2.3 Hadoop 的虛擬分散式模式
17.2.4 Hadoop 的全分散式模式
17.3 Hadoop 的效能分析
17.3.1 Chukwa 與Hitune 簡介
17.3.2 Chukwa 的安裝與設定
17.3.3 使用Hitune 分析Hadoop的效能
17.4 Hadoop 和Chukwa 的自動化安裝
17.5 OpenStack 上的Android 測試環境
17.5.1 Android 測試環境簡介
17.5.2 架設Android 測試環境
17.6 常見錯誤與分析
17.6.1 Hadoop 常見錯誤
17.6.2 Chukwa 常見錯誤
17.6.3 架設Android 測試環境
17.7 小結
17.7.1 安裝Hadoop
17.7.2 安裝Chukwa
17.7.3 Hadoop Job 報表
17.7.4 建立Android 虛擬機器
18 以Nova 為基礎的擴充
18.1 訂製排程演算法
18.1.1 設定filter
18.1.2 增加自訂filter
18.1.3 filter_properties
18.2 自訂Extension API
18.2.1 Extension API 的啟動流程
18.2.2 實現自訂Extension API
18.3 自訂Extention API 用戶端
18.3.1 Extention API 用戶端載入流程
18.3.2 增加Extention API 用戶端
18.4 Nova 中增加自訂模組
18.4.1 增加新模組
18.4.2 增加新模組的API
18.4.3 增加定時工作
18.4.4 增加資料庫介面
18.5 小結
18.5.1 訂製filter 的步驟
18.5.2 增加Extension API 的步驟
18.5.3 擴充Nova Clien 模組的方法
18.5.4 增加Nova 模組的步驟
18.5.5 建立自訂Nova 資料庫
19 增加自定義元件
19.1 自定義元件概述
19.1.1 自定義元件及優缺點
19.1.2 自定義元件的使用
19.1.3 需求
19.2 準備工作
19.2.1 開發環境
19.2.2 準備安裝套件
19.2.3 安裝相依服務
19.2.4 安裝Monitor 服務
19.3 設計原理
19.3.1 框架
19.3.2 Dashboard
19.3.3 python-monitorclient
19.3.4 monitor-api
19.4 資料庫設計與實現
19.4.1 連接資料庫
19.4.2 建立資料庫表單
19.4.3 模型類別
19.4.4 存取資料庫
19.4.5 發佈資料庫API
19.5 Conductor 資料庫服務
19.5.1 設定專案
19.5.2 增加設定項
19.5.3 Conductor 實現
19.5.4 啟動Conductor 服務
19.6 增加RESTful API
19.6.1 RESTful API 處理流程
19.6.2 訊息路由器Router
19.6.3 訊息處理函數
19.6.4 用戶端發送請求
19.6.5 用戶端的使用
19.7 小結14.3.8 Snort 規則進階應用舉例
第1 篇 基礎篇
01 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 架構
1.3.1 OpenStack 與雲端運算
1.3.2 OpenStack 發展與現狀
1.3.3 OpenStack 優勢
1.3.4 OpenStack 學習建議
1.4 OpenStack 各個元件及功能
1.4.1 虛擬機器管理系統Nova
1.4.2 磁碟儲存系統Gl...
購物須知
關於二手書說明:
商品建檔資料為新書及二手書共用,因是二手商品,實際狀況可能已與建檔資料有差異,購買二手書時,請務必檢視商品書況、備註說明及書況影片,收到商品將以書況影片內呈現為準。若有差異時僅可提供退貨處理,無法換貨或再補寄。
商品版權法律說明:
TAAZE 單純提供網路二手書託售平台予消費者,並不涉入書本作者與原出版商間之任何糾紛;敬請各界鑒察。
退換貨說明:
二手書籍商品享有10天的商品猶豫期(含例假日)。若您欲辦理退貨,請於取得該商品10日內寄回。
二手影音商品(例如CD、DVD等),恕不提供10天猶豫期退貨。
二手商品無法提供換貨服務,僅能辦理退貨。如須退貨,請保持該商品及其附件的完整性(包含書籍封底之TAAZE物流條碼)。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱
退換貨原則、
二手CD、DVD退換貨說明。