本書從云計算最基本的概念開始,由淺入深地帶領讀者領會云計算的精髓,以梳理知識脈絡和要點的方式,帶領讀者登堂入室。
本書的第1~3章為云計算的基礎部分,包括云計算的產生、發展、基本概念和實現云計算的機制部分;第4~7章為云計算的技術部分,包括虛擬化、分布式文件系統、分布式存儲系統和數據處理與并行編程技術等實現云計算必須的技術;第8章為限制云計算的安全問題;第9章向讀者提到了目前存在的一些熱門的云計算應用;第10章為綜合實踐,講述了云計算與Docker技術結合的實踐內容。
本書既適合作為高等院校計算機相關專業的云計算導論課程的教材,也適合非計算機專業的學生及廣大計算機愛好者閱讀。
從云計算機最基本的概念開始,由淺入深地帶領讀者領會云計算的精髓,以梳理知識脈搏和要點的方式,帶領讀者登堂入室。
在過去的幾十年里,計算機技術的進步和互聯網的發展極大地改變了人們的工作和生活方式。計算模式也經歷了從最初的把任務集中交付給大型處理機到基于網絡的分布式任務處理再到目前的按需處理的云計算方式的極大改變。自2006年亞馬遜公司推出彈性計算云(EC2)服務,讓中小型企業能夠按照自己的需要購買亞馬遜數據中心的計算能力后,云計算的時代就此正式來臨。“云計算”的概念隨之由Google公司于同年提出,其本質是給用戶提供像傳統的電、水、煤氣一樣的按需計算的網絡服務,是一種新型的計算使用方式。它以用戶為中心,使互聯網成為每一個用戶的數據中心和計算中心。
Gartner公司早在2011年1月發布的IT行業十大戰略技術報告中就已經將“云計算技術”列為十大戰略技術之首,目前世界上主要國家和跨國企業都積極地加快著戰略部署,推動云計算的高速發展。我國也將云計算上升到了國家戰略高度,中央、地方政府、產業界都在共同推動我國云計算的應用和發展,除此之外,像Google、IBM、Microsoft、Amazon、阿里巴巴、騰訊等在內的知名IT企業也都在大力地開發相關云計算產品。
然而在教育普及方面,經作者調研,即使計算機相關專業的學生對于云計算的相關知識也知之甚少,而對用戶而言,如果不提前進行了解就去使用云計算是很危險的事情。目前,雖然市場上關于云計算技術相關的書籍較多,但是適合讀者進行云計算入門的書籍還較少,因此本書定位為“云計算導論”課程的專業教材,旨在傳授讀者云計算的基礎入門知識,本書也適合非計算機專業學生以及廣大的計算機愛好者閱讀。
本書的章節內容如下: 第1~3章為云計算的基礎部分,包括云計算的產生、發展、基本概念和實現云計算的機制部分; 第4~7章為云計算的技術部分,包括虛擬化、分布式文件系統、分布式存儲系統和數據處理與并行編程技術等實現云計算必須的技術; 第8章為限制云計算的安全問題; 第9章向讀者提到了目前存在的一些熱門的云計算的應用; 第10章為綜合實踐,講述了云計算與Docker技術結合的實踐內容。
在本書的編寫過程中,盡量做到仔細認真,但由于作者的水平有限,還是可能出現一些不妥之處,在此非常歡迎廣大讀者進行批評指正。同時也希望廣大讀者將自己讀書學習的心得體會反饋給作者。
編者
2016年8月
第1章云計算概論
1.1什么是云計算
1.2云計算的產生背景
1.3云計算的發展歷史
1.4如何學好云計算
1.5小結
1.6習題
第2章云計算基礎
2.1分布式計算
2.2云計算的基本概念
2.3云計算的關鍵技術
2.3.1分布式海量數據存儲
2.3.2虛擬化技術
2.3.3云平臺技術
2.3.4并行編程技術
2.3.5數據管理技術
2.4云交付模型
2.4.1軟件即服務(SaaS)
2.4.2平臺即服務(PaaS)
2.4.3基礎設施即服務(IaaS)
2.4.4基本云交付模型的比較
2.4.5容器即服務(CaaS)
2.5云部署模式
2.5.1公有云
2.5.2私有云
2.5.3混合云
2.6云計算的優勢與挑戰
2.7典型云應用
2.7.1云存儲
2.7.2云服務
2.7.3云物聯
2.8云計算與大數據
2.9小結
2.10習題
第3章云計算機制
3.1云基礎設施機制
3.1.1虛擬網絡邊界
3.1.2虛擬服務器
3.1.3云存儲設備
3.1.4資源備份
3.1.5就緒環境
3.2云管理機制
3.2.1遠程管理系統
3.2.2資源管理系統
3.2.3SLA管理系統
3.2.4計費管理系統
3.3云監控機制
3.3.1資源監控
3.3.2能量監控
3.3.3SLA監控
3.3.4安全監控
3.4特殊云機制
3.4.1自動伸縮監聽器
3.4.2負載均衡器
3.4.3故障轉移系統
3.4.4虛擬機監控器
3.4.5資源集群
3.4.6多設備代理
3.4.7狀態管理數據庫
3.5小結
3.6習題
第4章虛擬化
4.1虛擬化簡介
4.1.1什么是虛擬化
4.1.2虛擬化的發展歷史
4.1.3虛擬化帶來的好處
4.2虛擬化的分類
4.2.1服務器虛擬化
4.2.2網絡虛擬化
4.2.3存儲虛擬化
4.2.4應用虛擬化
4.2.5技術比較
4.3系統虛擬化
4.4虛擬化與云計算
4.5開源技術
4.5.1Xen
4.5.2KVM
4.5.3OpenVZ
4.6虛擬化未來發展趨勢
4.7小結
4.8習題
第5章分布式文件系統
5.1概述
5.1.1本地文件系統
5.2.2分布式文件系統
5.2基本架構
5.2.1服務器介紹
5.2.2數據分布
5.2.3服務器間協議
5.3GFS
5.3.1架構設計
5.3.2實現流程
5.3.3特點
5.4HDFS
5.4.1基本概念
5.4.2架構設計
5.4.3優缺點分析
5.5分布式應用協調器ZooKeeper
5.5.1基本概念
5.5.2工作原理
5.5.3ZooKeeper應用對HDFS的改進
5.5.4主要應用場景
5.6云存儲
5.6.1基本概念
5.6.2云存儲的分類
5.6.3云存儲的結構模型
5.6.4典型的云存儲應用
5.7小結
5.8習題
第6章分布式存儲系統
6.1概述
6.2NoSQL數據庫
6.3分布式存儲系統BigTable
6.3.1數據模型
6.3.2BigTable的構件
6.4分布式存儲系統HBase
6.4.1HBase的訪問接口和數據模型
6.4.2HBase系統架構
6.5HBase存儲格式
6.6多元數據的管理與應用
6.7小結
6.8習題
第7章數據處理與并行編程
7.1數據密集型計算
7.1.1數據密集型計算的概念
7.1.2數據密集型計算的應用
7.2分布式數據處理
7.2.1分布式數據處理的含義
7.2.2分布式數據處理的范圍
7.2.3分布式數據處理的控制
7.2.4信息中心
7.2.5集中式數據處理與分布式數據處理比較
7.3并行編程模型概述
7.4并行編程模型MapReduce
7.4.1MapReduce簡介
7.4.2MapReduce總體研究狀況
7.4.3MapReduce總結及未來的發展趨勢
7.5云處理技術Spark
7.6MapReduce的開源實現—Hadoop
7.6.1Hadoop概述
7.6.2Hadoop核心架構
7.6.3Hadoop和高效能計算、網格計算的區別
7.6.4Hadoop發展現狀
7.6.5Hadoop和MapReduce比較
7.7小結
7.8習題
第8章云安全
8.1基本術語與概念
8.2云安全威脅
8.3云安全防護策略
8.3.1基礎設施安全
8.3.2數據安全
8.3.3應用安全
8.3.4虛擬化安全
8.4典型云安全應用
8.4.1金山毒霸“云安全”
8.4.2卡巴斯基-全功能安全防護
8.4.3瑞星“云安全”
8.4.4趨勢科技“云安全”
8.5小結
8.6習題
第9章云計算的應用
9.1概述
9.2Google公司的云計算平臺與應用
9.2.1MapReduce分布式編程環境
9.2.2分布式大規模數據庫管理系統BigTable
9.2.3Google的云應用
9.3亞馬遜的彈性計算云
9.3.1開放的服務
9.3.2靈活的工作模式
9.3.3總結
9.4IBM藍云云計算平臺
9.4.1藍云云計算平臺中的虛擬化
9.4.2藍云云計算平臺中的存儲結構
9.5清華大學透明計算平臺
9.6阿里云
9.6.1簡介
9.6.2阿里云的發展過程
9.6.3阿里云的主要產品
9.7Microsoft Azure
9.7.1簡介
9.7.2Microsoft Azure架構
9.7.3Microsoft Azure服務平臺
9.7.4開發步驟
9.8小結
9.9習題
第10章綜合實踐: Docker與云計算
10.1Docker簡介
10.2Docker的核心概念
10.2.1Docker鏡像
10.2.2Docker倉庫
10.2.3Docker容器
10.2.4容器即服務(CaaS)
10.3實驗一: Docker的安裝
10.3.1Ubuntu
10.3.2CentOS
10.3.3Windows
10.4實驗二: 容器操作
10.4.1啟動容器
10.4.2守護態運行
10.4.3終止容器
10.5實驗三: 搭建一個Docker應用棧
10.5.1獲取鏡像
10.5.2應用棧容器節點互聯
10.5.3應用棧容器節點啟動
10.5.4應用棧容器節點配置
10.6實驗四: 實現私有云
10.6.1啟動Docker
10.6.2獲取鏡像
10.6.3實現sshd,在Base鏡像基礎上生成一個新鏡像
10.6.4開始分配容器
10.6.5搭建自己的私有倉庫
參考文獻
第3章
云計算機制
本章主要介紹常見的云計算機制,包括云基礎設施機制、云管理機制、云監控機制和特殊云機制。通過本章的學習,應能夠對云計算的機制有所了解。
3.1云基礎設施機制
云基礎設施機制是云環境的基礎構建塊,它是形成云技術架構基礎的主要構件。云基礎設施機制主要包括如下。
虛擬網絡邊界;
虛擬服務器;
云存儲設備;
云使用監控;
資源備份;
就緒環境。
這些機制并非全都應用廣泛,也不需要為其中的每一個機制都建立獨立的架構層。相反,它們應被視為云平臺中常見的核心組件。
3.1.1虛擬網絡邊界
虛擬網絡邊界(virtual network perimeter)通常是由提供和控制數據中心連接的網絡設備建立,一般是作為虛擬化環境部署的,如虛擬防火墻、虛擬網絡(VLAN、VPN)。該機制被定義為將一個網絡環境與通信網絡的其他部分隔開,形成一個虛擬網絡邊界,包含并隔離了一組相關的基于云的IT資源,這些資源在物理上可能是分布式的。
該機制可被用于如下的幾個方面。
將云中的IT資源與非授權用戶隔離;
將云中的IT資源與非用戶隔離;
將云中的IT資源與云用戶隔離;
控制被隔離IT資源的可用帶寬。
1. 虛擬防火墻
圖3.1是虛擬防火墻的示意圖,虛擬防火墻是一個邏輯概念,該技術可以在一個單一的硬件平臺上提供多個防火墻實體,即把一臺防火墻設備在邏輯上劃分成多臺虛擬防火墻,每臺虛擬防火墻都可以被看成是一臺完全獨立的防火墻設備,可擁有獨立的管理員、安全策略、用戶認證數據庫等。
圖3.1虛擬防火墻示意圖
每個虛擬防火墻能夠實現防火墻的大部分特性,并且虛擬防火墻之間相互獨立,一般情況下不允許相互通信。
虛擬防火墻具有以下技術特點。
(1) 每個虛擬防火墻獨立維護一組安全區域;
(2) 每個虛擬防火墻獨立維護一組資源對象(地址/地址組、服務/服務組等);
(3) 每個虛擬防火墻獨立維護自己的包過濾策略;
(4) 每個虛擬防火墻獨立維護自己的ASPF策略、NAT策略、ALG策略;
(5) 可限制每個虛擬防火墻占用資源數,如防火墻Session以及ASPF Session數目。
虛擬防火墻不僅解決了業務多實例的問題,更主要的是,通過它可將一個物理防火墻劃分為多個邏輯防火墻來用。多個邏輯防火墻可以單獨配置不同的安全策略,同時在默認情況下,不同的虛擬防火墻之間是默認隔離的。
2. 虛擬專用網絡
虛擬專用網絡(VPN)是一種通過公用網絡(如Internet)連接專用網絡(如辦公室網絡)的方法。
它將撥號服務器的撥號連接的優點與Internet連接的方便與靈活性相結合。通過使用Internet連接,用戶可以同時在大多數地方通過距離最近的Internet訪問電話號碼連接到自己的網絡。
VPN使用經過身份驗證的鏈接來確保只有授權用戶才能連接到自己的網絡,而且這些用戶使用加密來確保他們通過Internet傳送的數據不會被其他人截取和利用。Windows使用點對點隧道協議(PPTP)或第二層隧道協議(L2TP)實現此安全性。
通過圖3.2所示,VPN技術使得公司可以通過公用網絡(如Internet)連接到其分支辦事處或其他公司,同時又可以保證通信安全。通過Internet的VPN連接從邏輯上講相當于一個專用的廣域網(WAN)鏈接。
圖3.2虛擬專用網絡(VPN)基本原理
VPN系統的主要特點如下。
(1) 安全保障
雖然實現VPN的技術和方式很多,但所有的VPN均應保證通過公用網絡平臺傳輸數據的專用性和安全性。在安全性方面,由于VPN直接構建在公用網上,實現簡單、方便、靈活,但同時其安全問題也更為突出。企業必須確保其VPN上傳送的數據不被攻擊者窺視和篡改,并且要防止非法用戶對網絡資源或私有信息的訪問。
(2) 服務質量保證
VPN應當為企業數據提供不同等級的服務質量保證(QoS)。不同的用戶和業務對服務質量保證的要求差別較大。在網絡優化方面,構建VPN的另一重要需求是充分有效地利用有限的廣域網資源,為重要數據提供可靠的帶寬。廣域網流量的不確定性使其帶寬的利用率很低,在流量高峰時引起網絡阻塞,使實時性要求高的數據得不到及時發送; 而在流量低谷時又造成大量的網絡帶寬空閑。QoS通過流量預測與流量控制策略,可以按照優先級實現帶寬管理,使得各類數據能夠被合理地先后發送,并預防阻塞的發生。
(3) 可擴充性和靈活性
VPN必須能夠支持通過Intranet和Extranet的任何類型的數據流,方便增加新的節點,支持多種類型的傳輸媒介,可以滿足同時傳輸語音、圖像和數據等應用對高質量傳輸以及帶寬增加的需求。
(4) 可管理性
從用戶角度和運營商角度應可方便地進行管理、維護。VPN管理的目標為: 減小網絡風險、具有高擴展性、經濟性、高可靠性等優點。事實上,VPN管理主要包括安全管理、設備管理、配置管理、訪問控制列表管理、QoS管理等內容。
3.1.2虛擬服務器
服務器通常通過虛擬機監視器(VMM)或虛擬化平臺(Hypervisor)來實現硬件設備的抽象、資源的調度和虛擬機的管理。虛擬服務器(virtual server)是一種模擬物理服務器的虛擬化軟件。虛擬服務器與虛擬機(VM)為同義詞,虛擬基礎設施管理器(VIM)用于協調與VM實例創建相關的物理服務器。虛擬服務器需要對服務器的CPU、內存、設備及IO分別實現虛擬化。
通過向云用戶提供獨立的虛擬服務實例,云提供者使多個云用戶共享同一個物理服務器。如圖3.3所示。
圖3.3虛擬服務器基本架構
每個虛擬服務器都可以存儲大量的IT資源、基于云的解決方案和各種其他的云計算機制。從映像文件進行虛擬服務器的實例化是一個可以快速且按需完成的資源分配過程。通過安裝和釋放虛擬服務器,云用戶可以定制自己的環境,這個環境獨立于其他正在使用由同一底層物理服務器控制的虛擬服務器的云用戶。虛擬服務器的具體內容將在4.2節詳細地介紹。虛擬服務器有以下幾個特性。
(1) 多實例
通過服務器虛擬化,一臺物理機上可以運行多個虛擬服務器,支持多個客戶操作系統,并且物理系統的資源是以可控的方式分配給虛擬機。
(2) 隔離性
虛擬服務器可以將同一臺物理服務器上的多個虛擬機完全隔離開來,多個虛擬機之間就像多個物理機器之間一樣,每個虛擬機都有自己獨立的內存空間,一個虛擬機的崩潰并不會影響到其他虛擬機。
(3) 封裝性
一個完整的虛擬機環境對外表現為一個單一的實體,便于在不同的硬件設備之間備份、移動和復制。同時,虛擬服務器將物理機器的硬件封裝為標準化的虛擬硬件設備提供給虛擬機內的操作系統和應用程序,提高了系統的兼容性。
基于以上這些特性,虛擬服務器帶來了如下的優點。
(1) 實時遷移
實時遷移是指在虛擬機運行時,將虛擬機的運行狀態完整、快速地從一個宿主平臺遷移到另一個宿主平臺,整個遷移過程是平滑且對用戶透明的。由于虛擬服務器的封裝性,實時遷移可以支持原宿主機和目標宿主機硬件平臺之間的異構性。
當一臺物理機器的硬件需要維護或更新時,實時遷移可以在不宕機的情況下將虛擬機遷移到另一臺物理機器上,大大提高了系統的可用性。
(2) 快速部署
在傳統的數據中心中,部署一個應用需要安裝操作系統、安裝中間件、安裝應用、配置、測試、運行等多個步驟,通常需要耗費十幾個小時甚至幾天的時間,并且部署過程中容易產生錯誤。
而采用虛擬服務器之后,部署一個應用其實就是部署一個封裝好操作系統和應用程序的虛擬機,部署過程只需要以下幾個步驟: 拷貝虛擬機、啟動虛擬機和配置虛擬機,通常只需要十幾分鐘,且部署過程自動化,不易出錯。
(3) 高兼容性
虛擬服務器提供的封裝性和隔離性使應用的運行平臺與物理底層分離,提高了系統的兼容性。
(4) 提高資源利用率
在傳統的數據中心,出于對管理性、安全性和性能的考慮,大部分服務器上都只運行一個應用,導致服務器的CPU使用率很低,平均只有5%~20%。采用虛擬服務器之后,可以將原來多臺服務器上的應用整合到一臺服務器之中,提高了服務器資源的利用率,并且通過服務器虛擬化固有的多實例、隔離性和封裝性保證了應用原有的性能和安全性。
(5) 動態調度資源
虛擬服務器可以使用戶根據虛擬機內部資源的使用情況即時地靈活調整虛擬機的資源,如CPU、內存等,而不需要像物理服務器一樣需要打開機箱變更硬件。
3.1.3云存儲設備
云存儲設備(cloud storage device)機制是指專門為基于云配置所設計的存儲設備。這些設備的實例可以被虛擬化。其單位如下。
文件(file)。數據集合分組存放于文件夾中的文件里。
塊(block)。存儲的最低等級,最接近硬件,數據塊是可以被獨立訪問的最小數據單位。
數據集(dataset)。基于表格的、以分隔符分隔的或以記錄形式組織的數據集合。
對象(object)。將數據及其相關的元數據組織為基于Web的資源,各種類型的數據都可以作為Web資源被引用和存儲,如利用HTTP的CRUD(create、retrieve、update、delete)操作(如CDMI、Cloud Data Management Interface)。
隨著圖3.4所示的云存儲的廣泛應用,一個與云存儲相關的主要問題出現了,就是數據的安全性、完整性和保密性,當數據被委托給外部云提供者和其他第三方時,就更容易出現危險。此外,數據出現跨地域或國界的遷移時,也會導致法律和監管問題。
圖3.4云存儲廣泛應用
(1) 用戶的操作安全
當一個用戶在公司編輯某個文件后,回到家中再次編輯,那么他再次回到公司時文件已是昨晚更新過的,這是理想狀態下的情況。在很多時候用戶編輯一個文件后,會發現編輯有誤,想取回存在公司的文件版本時,可能在沒有支持版本管理的云存儲中用戶的副本也已經被錯誤地更新了; 同樣的道理,當刪除一個文件的時候,如果沒有額外的備份,也許再到網盤回收站中也找不到了。版本管理在技術上不存在問題,但是會加大用戶的操作難度。目前的云存儲服務商只有少數的私有云提供商提供有限的支持,多數情況下這種覆蓋是時常發生的。
(2) 服務端的安全操作
云存儲設備早已成為黑客入侵的目標,因為設備上不僅有無窮的用戶數據,對此類大用戶群服務的劫持更加是黑色收入的重要來源。也就是說云存儲設備的安全性直接影響著用戶上傳數據的安全。在虛擬服務器技術的支撐下,V2V(virtual to virtual)遷移的可靠性相當高,多數的云存儲廠商都預備安全防護方案。
3.1.4資源備份
如圖3.5和圖3.6不同視角的展示,與傳統機構視角不同的是,云計算集中部署計算和存儲資源,提供給各個用戶。這既避免了用戶重復建設信息系統的低效率,又能賦予用戶價格低廉且近乎無限的計算能力。云計算提供的資源是彈性可擴展的,可以動態部署、動態調度、動態回收,以高效的方式滿足業務發展和平時運行峰值的資源需求。云計算使用了資源備份容錯、計算節點同構可互換等各種措施來保障服務的高可靠性,并擁有專業的維護隊伍。
圖3.5傳統機構視角
圖3.6云計算架構視角
資源備份(resource backup)可對同一個IT資源創建多個實例。資源備份用于加強IT資源的可用性和性能。使用虛擬化技術來實現資源備份機制,可以復制基于云的IT資源(如整個數據中心中的應用、數據)實現集中的備份和恢復,確保當出現系統故障、誤操作等情況下應用系統仍然可用和可恢復。
3.1.5就緒環境
PaaS平臺就是指云環境中的應用即服務(包括應用平臺、集成、業務流程管理和數據庫服務),也可以說是中間件即服務。PaaS平臺在云架構中位于中間層,其上層是SaaS,其下層是IaaS,基于IaaS之上的是為應用開發(可以是SaaS應用,也可以不是)提供接口和軟件運行環境的平臺層服務。
就緒環境機制是PaaS云交付模型的定義組件,基于云平臺,已有一組安裝好的IT資源,可以被云用戶使用和定制。云用戶利用就緒環境機制進行遠程開發和配置自身的服務和應用程序。如數據庫、中間件、開發工具和管理工具以及進行開發和部署Web應用程序。
統(resource management system)可幫助協調IT資源,以便響應云用戶和云提供者執行的管理操作。如圖3.9所示,資源管理系統包含一個VIM平臺和一個虛擬機映像庫。VIM也可能
……