撥得云開見日出——解構一個典型的云計算系統 ( 簡體 字) |
作者:劉川意,袁玉宇 | 類別:1. -> 程式設計 -> 雲計算 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 33960 詢問書籍請說出此書號!【有庫存】 NT售價: 440 元 |
出版日:9/1/2012 |
頁數:572 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121180118 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: 言
我們需要說明的第一句話是:這本書主要是寫給“要動手”的人們的!
如何構建一個云計算系統,這是從事云計算相關工作的程序員和工程師最關心的問題之一。但是很遺憾的是,市面上的絕大多數書籍主要介紹的是云計算的模式、架構、應用、接口等,無法使讀者站在一個云計算系統的內部,清楚地獲知一個典型的云計算系統是如何構成,以及如何編碼實現的。
本書以一個典型的開源基礎設施云Eucalyptus為例,解構了一個典型的云計算系統的主要構成模塊,并在源代碼層面上詳細講解了如何構建一個典型的云計算系統。更進一步的,本書通過動手實驗的方式,使讀者能直觀地掌握如何編譯一個云系統,其代碼結構是怎么樣的;并通過寫測試代碼,使讀者掌握如何去調用云系統的API,如何添加和定制化功能。
通過這本書,我們希望讀者有以下的收獲:
如何根據需求選擇合適的云計算系統?隨著云計算模式的逐漸普及和廣泛使用,可以想象,越來越多的企業、機構和個人用戶主要面臨的問題不再是如何采購硬件、軟件,再組織人或外包進行系統開發,然后進行系統部署和運維。他們經常要做的事情是根據應用的需求,選擇合適的云計算系統來承載相應的應用或選擇合適的云集算系統部署自己的私有云。本書在對工業界和學術界的主流云計算系統進行廣泛調研的基礎上,提出了典型的云集算系統體系結構,并以目前代表性的開源云系統為例,對主要子系統、關鍵功能和性能參數、核心技術等進行了系統的介紹和對比分析,從而為讀者分析和判斷市場上的云平臺提供了系統的評價方法。更進一步的,本書在各子系統的相應章節,通過使用該子系統的接口API,定量測試和評價云平臺的各項指標,以及示例如何將云平臺與用戶的應用平臺進行對接。 從源代碼層面,一個典型的云計算系統是如何構建和實現的?我們可以發現一個普遍存在的事實:絕大多數的云計算系統,包括商業云平臺,如Amazon,Microsoft Azure等,其物理服務器的主流配置是Linux或Unix類操作系統。而我們知道,在這類操作系統中,有大量優秀的產品級開源系統或工具可供使用和集成,如何將這些開源系統和工具用于構建云平臺?本書分別針對云計算系統的主要核心子系統,如虛擬機管理器、存儲網絡軟件、模塊互連框架等,詳細介紹了如何使用這些工具,并在此基礎上實現云計算系統的核心模塊。 如何實現一個產品級的云計算系統?如何尋找典型的云計算系統中有價值的關鍵技術點?本書分析的不是玩具系統或原型系統,而是真實應用于工業生產的產品系統!本書選擇的Eucalyptus私有云系統已經被世界500強中25%的企業所部署和使用。讀者以此為基礎,可以實現和構建具有商業意義和價值的關鍵技術與功能點。 最后,要特別感謝北京郵電大學可信分布式計算與服務教育部重點實驗室2009級和2010級的同學們,沒有你們的辛苦工作和努力付出,這本書的出版將沒有可能。在此請允許一一列舉你們的名字:2009級的宋小寶、李思揚、唐博、王珂、王彥丞、萬磊、張路、陳晏民同學;2010級的李春文、劉彬、劉瀟健、王小亮、頡夏青同學。這本書是大家共同奮斗,并肩合作的見證! 著者 2012年9月于北京郵電大學 |
內容簡介:如何構建一個云計算系統是廣大的程序員和軟件工程師最關心的問題之一。但是很遺憾的是,市面上的絕大多數書籍主要介紹的是云計算的模式、架構、應用、接口等,無法使讀者站在一個云計算系統的內部,清楚地獲知一個典型的云計算系統是如何構成,以及如何編碼實現的。 本書從基礎設施云入手,通過對當前主要的開源基礎設施云進行分析,總結了一個典型的云計算系統的組織結構,并分別介紹了虛擬化運行環境子系統、云存儲子系統、虛擬網絡子系統、模塊互連子系統等主要的子系統,其體系結構、代碼結構、主要的實現模塊以及關鍵的代碼。最后對每一個相應的子系統,通過實際將其編譯、運行、測試,使讀者能對云系統能在實踐中進行解構和修改。 |
目錄:第1章 引言 1 1.1 本書的特點與結構 1 1.2 基礎設施云介紹 2 1.2.1 Eucalyptus 2 1.2.2 OpenStack 3 1.2.3 Scalr 5 1.2.4 Nimbus 6 1.2.5 Xen云平臺(XCP) 7 1.2.6 Ganeti 9 1.2.7 OpenNebula 10 1.2.8 Enomalism 11 第2章 基礎設施云對比分析 12 2.1 基礎設施云對比分析概述 12 2.2 典型基礎設施云的構成 16 第3章 虛擬化運行環境 18 3.1 概述 18 3.2 體系結構 20 3.3 相關技術 21 3.3.1 KVM和QEMU 21 3.3.2 Xen 25 3.3.3 libvirt 29 3.4 資源管理 36 3.4.1 資源虛擬化 36 3.4.2 資源監控 42 3.5 節點調度 50 3.5.1 啟動虛擬機時節點調度 50 3.5.2 關閉虛擬機時節點調度 62 3.5.3 重啟虛擬機時節點調度 66 3.6 虛擬機生命周期管理 67 3.6.1 啟動虛擬機 67 3.6.2 關閉虛擬機 79 3.6.3 重啟虛擬機 83 3.7 虛擬機監控 86 3.7.1 功能描述 86 3.7.2 代碼分析 87 3.8 開發環境搭建 93 3.8.1 網絡環境 93 3.8.2 安裝依賴包 94 3.9 單元測試及開發實例 95 3.9.1 代碼修改 95 3.9.2 runInstance 112 3.9.3 describeInstances 114 3.9.4 describeResource 115 3.9.5 rebootInstance 116 3.9.6 terminateInstance 118 3.10 下一步工作 119 第4章 虛擬磁盤系統 120 4.1 概述 120 4.2 體系結構 121 4.2.1 存儲控制器 122 4.2.2 節點控制器 122 4.2.3 Walrus 123 4.2.4 對外接口 123 4.3 相關技術 125 4.3.1 loop設備 125 4.3.2 LVM2命令 126 4.3.3 iSCSI協議 128 4.3.4 AoE協議 129 4.3.5 RAID技術 130 4.3.6 Hibernate 134 4.3.7 HSQLDB 136 4.4 代碼結構 143 4.4.1 com.eucalyptus.bootstrap包 145 4.4.2 com.eucalyptus.storage包 146 4.4.3 edu.ucsb.eucalyptus.cloud.ws包 150 4.4.4 edu.ucsb.eucalyptus.cloud.ws.tests包 154 4.5 元數據管理 155 4.5.1 元數據信息 155 4.5.2 數據庫操作 159 4.6 虛擬磁盤生命周期管理 169 4.6.1 創建虛擬磁盤 169 4.6.2 查詢虛擬磁盤 179 4.6.3 掛載虛擬磁盤 180 4.6.4 卸載虛擬磁盤 191 4.6.5 刪除虛擬磁盤 200 4.6.6 創建磁盤快照 204 4.6.7 查詢磁盤快照 212 4.6.8 刪除磁盤快照 215 4.6.9 從磁盤快照創建虛擬磁盤 217 4.7 存儲介質管理 224 4.7.1 Volume Pool 224 4.7.2 RAID管理 225 4.7.3 異構存儲介質管理 230 4.8 連接管理 234 4.8.1 SC和NC之間的映射 234 4.8.2 NC和虛擬機之間的映射 235 4.9 開發環境搭建 235 4.9.1 安裝eclipse 235 4.9.2 安裝組件 239 4.9.3 創建工程 239 4.10 單元測試及開發示例 240 4.10.1 創建虛擬磁盤 240 4.10.2 查詢虛擬磁盤 241 4.10.3 掛載虛擬磁盤 242 4.10.4 卸載虛擬磁盤 248 4.10.5 刪除虛擬磁盤 252 4.10.6 創建磁盤快照 253 4.10.7 查詢磁盤快照 254 4.10.8 刪除磁盤快照 255 4.10.9 從磁盤快照創建虛擬磁盤 256 4.11 下一步工作 258 第5章 基于Web的在線云存 儲系統——Walrus 259 5.1 概述 259 5.2 Walrus體系結構 260 5.3 Walrus相關技術 262 5.3.1 HTTP 262 5.3.2 Curl 264 5.4 Walrus元數據管理 269 5.4.1 BucketInfo 270 5.4.2 ObjectInfo 271 5.4.3 GrantInfo 272 5.4.4 MetaDataInfo 272 5.4.5 ImageInfo 273 5.4.6 ImageCacheInfo 273 5.4.7 WalrusInfo 274 5.4.8 WalrusSnapshotInfo 275 5.4.9 WalrusStatsInfo 275 5.5 Walrus 代碼結構 275 5.5.1 edu.ucsb.eucalyptus.cloud.ws包 275 5.5.2 com.eucalyptus.images包 279 5.5.3 Walrustest包 280 5.6 Walrus對用戶文件夾的管理 281 5.6.1 創建bucket 281 5.6.2 bucket的Location信息管理 285 5.6.3 刪除bucket 286 5.6.4 bucket和object的訪問控制列表管理 287 5.6.5 bucket的logging信息管理 297 5.6.6 bucket的versioning信息管理 298 5.6.7 列出用戶所有bucket 299 5.7 Walrus對用戶文件的管理 300 5.7.1 上傳文件 304 5.7.2 下載文件 306 5.7.3 復制文件 311 5.7.4 刪除文件 312 5.7.5 設置和獲得object的ACL 314 5.7.6 列出指定bucket下的所有object 314 5.8 對鏡像文件的管理 316 5.8.1 鏡像文件的綁定 316 5.8.2 鏡像文件的上傳 322 5.8.3 鏡像文件的注冊 323 5.8.4 鏡像文件的注銷 337 5.8.5 鏡像文件的下載模塊 338 5.9 Walrus對快照文件的管理 366 5.9.1 保存快照 366 5.9.2 刪除快照 368 5.9.3 下載快照 369 5.9.4 獲得快照大小 370 5.10 Walrus開發環境搭建 371 5.10.1 Walrus Service開發環境搭建 371 5.10.2 鏡像文件下載模塊開發環境搭建 371 5.11 Walrus使用方法 372 5.11.1 云存儲服務的使用方法 372 5.11.2 鏡像文件下載模塊使用方法 380 5.12 Walrus待解決的問題 384 第6章 鏡像管理 385 6.1 操作系統安裝及基本設置 385 6.1.1 Windows操作系統的安裝 385 6.1.2 Windows操作系統基本設置 399 6.1.3 Linux操作系統安裝及基本設置 416 6.2 鏡像系統的更新 418 6.2.1 Windows系統的更新 418 6.2.2 Linux系統的更新 422 6.3 “鏡像超市” 422 6.4 客戶端與虛擬運行環境的數據傳輸 424 6.4.1 虛擬機是Windows的情況 424 6.4.2 虛擬機是Linux的情況 426 6.5 下一步工作 428 第7章 虛擬網絡系統 430 7.1 概述 430 7.2 拓撲結構 431 7.3 相關技術 432 7.3.1 動態主機配置協議 432 7.3.2 iptables 434 7.3.3 bridge-utils 439 7.3.4 VTun 441 7.3.5 VLAN 442 7.4 虛擬網絡模式 447 7.4.1 網絡模式介紹 447 7.4.2 網絡模式配置 448 7.5 虛擬網絡系統在Eucalyptus中的實現 449 7.6 啟動網絡 451 7.6.1 功能簡介 451 7.6.2 代碼分析 452 7.7 重啟DHCP服務 455 7.7.1 功能簡介 455 7.7.2 代碼分析 455 7.8 關閉網絡 459 7.8.1 功能簡介 459 7.8.2 代碼分析 459 7.9 安全組規則 461 7.9.1 功能簡介 461 7.9.2 代碼分析 462 7.10 Elastic IP 465 7.10.1 綁定IP地址到虛擬機 465 7.10.2 解除IP地址綁定 467 7.11 開發環境搭建 469 7.11.1 系統配置 469 7.11.2 安裝程序 469 7.12 單元測試及開發示例 469 7.12.1 啟動DHCP 469 7.12.2 數據轉發及過濾 470 7.12.3 隧道通信 471 7.12.4 虛擬局域網管理 472 7.13 下一步工作 474 第8章 接入與互連系統 475 8.1 概述 475 8.2 體系結構 475 8.3 接入互連技術 476 8.3.1 JiBX 476 8.3.2 Netty 479 8.3.3 Mule 484 8.3.4 WSDL 489 8.3.5 SOAP 493 8.3.6 Axis2 494 8.4 用戶接入 501 8.4.1 與客戶端交互信息 501 8.4.2 Netty服務器配置 505 8.4.3 解碼 506 8.4.4 特定Handler的添加 518 8.4.5 信息在pipeline上的流動過程 522 8.5 Mule關聯接入點服務和各模塊預處理程序 530 8.5.1 Mule的控制 530 8.5.2 各模塊預處理程序 531 8.6 云前端和虛擬化運行平臺互連 537 8.6.1 功能介紹 537 8.6.2 代碼分析 539 8.6.3 開發環境搭建 550 8.6.4 單元測試及開發示例 552 8.7 安全性保障 553 參考文獻 560 |
序: |