1.1 云計(jì)算概念
云計(jì)算是最近幾年才興起的概念,但是這樣的需求其實(shí)早都有了,現(xiàn)階段廣為接受的是美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)定義:云計(jì)算是一種按使用量付費(fèi)的模式,這種模式提供可用的、便捷的、按需的網(wǎng)絡(luò)訪問, 進(jìn)入可配置的計(jì)算資源共享池(資源包括網(wǎng)絡(luò),服務(wù)器,存儲(chǔ),應(yīng)用軟件,服務(wù)),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務(wù)供應(yīng)商進(jìn)行很少的交互。
云計(jì)算最基本的特性是:“按使用量付費(fèi)”、“資源共享池”和多租戶隔離。
1.2 云計(jì)算特點(diǎn)
超大規(guī)模
云具有相當(dāng)?shù)囊?guī)模,Google 云計(jì)算已經(jīng)擁有 100 多萬(wàn)臺(tái)服務(wù)器, Amazon、IBM、微軟、Yahoo 等的云均擁有幾十萬(wàn)臺(tái)服務(wù)器。企業(yè)私有云一般擁有數(shù)百上千臺(tái)服務(wù)器。云能賦予用戶前所未有的計(jì)算能力。
虛擬化
云計(jì)算支持用戶在任意位置、使用各種終端獲取應(yīng)用服務(wù)。所請(qǐng)求的資源來(lái)自云,而不是固定的有形的實(shí)體。應(yīng)用在云中某處運(yùn)行,但實(shí)際上用戶無(wú)需了解、也不用擔(dān)心應(yīng)用運(yùn)行的具體位置。只需要一臺(tái)筆記本或者一個(gè)手機(jī),就可以通過網(wǎng)絡(luò)服務(wù)來(lái)實(shí)現(xiàn)我們需要的一切,甚至包括超級(jí)計(jì)算這樣的任務(wù)。
高可靠性
云使用了數(shù)據(jù)多副本容錯(cuò)、計(jì)算節(jié)點(diǎn)同構(gòu)可互換等措施來(lái)保障服務(wù)的高可靠性,使用云計(jì)算比使用本地計(jì)算機(jī)可靠。
通用性
云計(jì)算不針對(duì)特定的應(yīng)用,在云的支撐下可以構(gòu)造出千變?nèi)f化的應(yīng)用,同一個(gè)云可以同時(shí)支撐不同的應(yīng)用運(yùn)行。
高可擴(kuò)展性
云的規(guī)??梢詣?dòng)態(tài)伸縮,滿足應(yīng)用和用戶規(guī)模增長(zhǎng)的需要。
按需服務(wù)
云是一個(gè)龐大的資源池,你按需購(gòu)買;云可以像自來(lái)水,電,煤氣那樣計(jì)費(fèi)。
極其廉價(jià)
由于云的特殊容錯(cuò)措施可以采用極其廉價(jià)的節(jié)點(diǎn)來(lái)構(gòu)成云,云的自動(dòng)化集中式管理使大量企業(yè)無(wú)需負(fù)擔(dān)日益高昂的數(shù)據(jù)中心管理成本,云的通用性使資源的利用率較之傳統(tǒng)系統(tǒng)大幅提升,因此用戶可以充分享受云的低成本優(yōu)勢(shì),經(jīng)常只要花費(fèi)幾百美元、幾天時(shí)間就能完成以前需要數(shù)萬(wàn)美元、數(shù)月時(shí)間才能完成的任務(wù)。
潛在的危險(xiǎn)性
云計(jì)算服務(wù)除了提供計(jì)算服務(wù)外,還必然提供了存儲(chǔ)服務(wù)。但是云計(jì)算服務(wù)當(dāng)前壟斷在私人機(jī)構(gòu)(企業(yè))手中,而他們僅僅能夠提供商業(yè)信用。對(duì)于政府機(jī)構(gòu)、商業(yè)機(jī)構(gòu)(特別像銀行這樣持有敏感數(shù)據(jù)的商業(yè)機(jī)構(gòu))對(duì)于選擇云計(jì)算服務(wù)應(yīng)保持足夠的警惕。一旦商業(yè)用戶大規(guī)模使用私人機(jī)構(gòu)提供的云計(jì)算服務(wù),無(wú)論其技術(shù)優(yōu)勢(shì)有多強(qiáng),都不可避免地讓這些私人機(jī)構(gòu)以數(shù)據(jù)(信息)的重要性挾制整個(gè)社會(huì)。
對(duì)于信息社會(huì)而言,信息是至關(guān)重要的。另一方面,云計(jì)算中的數(shù)據(jù)對(duì)于數(shù)據(jù)所有者以外的其他用戶云計(jì)算用戶是保密的,但是對(duì)于提供云計(jì)算的商業(yè)機(jī)構(gòu)而言確實(shí)毫無(wú)秘密可言。所有這些潛在的危險(xiǎn),是商業(yè)機(jī)構(gòu)和政府機(jī)構(gòu)選擇云計(jì)算服務(wù)、特別是國(guó)外機(jī)構(gòu)提供的云計(jì)算服務(wù)時(shí),不得不考慮的一個(gè)重要的前提。
1.3 云計(jì)算分類
公有云:只有使用權(quán),使用的時(shí)候進(jìn)行按需付費(fèi)。但數(shù)據(jù)放在別人家。數(shù)據(jù)安全沒有保障。而且銀行不會(huì)使用公有云,金融行業(yè)不要使用公有云。公有云的核心屬性是共享資源服務(wù)。
私有云:自己的機(jī)房搭建的云,私有云有局限性,資源固定;數(shù)據(jù)比較安全。私有云的核心屬性是專有資源。
混合云:主要任務(wù)放到私有云,臨時(shí)需要時(shí)利用混合云,它將公有云和私有云進(jìn)行混合匹配,以獲得最佳的效果,這種個(gè)性的解決方案,達(dá)到二既省錢又安全的目的。
1.4 云計(jì)算分層
云計(jì)算也是層的,大概有以下幾種:
傳統(tǒng) IT
基本所有的都需要自行管理,比如:網(wǎng)絡(luò)、存儲(chǔ)、服務(wù)器、虛擬化,操作系統(tǒng)、中間件、運(yùn)行環(huán)境、數(shù)據(jù)、應(yīng)用等。
IaaS
IaaS,Infrastructure-as-a-Service 中文名稱為基礎(chǔ)設(shè)施即服務(wù)。 主要作用是提供虛擬機(jī)或者其他資源作為服務(wù)提供給用戶。
PaaS
PaaS,Platform-as-a-Service 中文名稱為平臺(tái)即服務(wù)。如果以傳統(tǒng)計(jì)算機(jī)架構(gòu)中 “硬件+操作系統(tǒng)/開發(fā)工具+應(yīng)用軟件” 的觀點(diǎn)來(lái)看待,那么云計(jì)算的平臺(tái)層應(yīng)該提供類似操作系統(tǒng)和開發(fā)工具的功能。
實(shí)際上也的確如此,PaaS 定位于通過互聯(lián)網(wǎng)為用戶提供一整套開發(fā)、運(yùn)行和運(yùn)行應(yīng)用軟件的支撐平臺(tái)。就像在個(gè)人計(jì)算機(jī)軟件開發(fā)模式下,程序員可能會(huì)在一臺(tái)裝有 Windows 或 Linux 操作系統(tǒng)的計(jì)算機(jī)上使用開發(fā)工具開發(fā)并部署應(yīng)用軟件一樣。PaaS 某些時(shí)候也叫做中間件,主要作用是提供一個(gè)開發(fā)和運(yùn)行平臺(tái)給用戶。
SaaS
SaaS,Software-as-a-Service 中文名稱為軟件即服務(wù)。簡(jiǎn)單地說,就是一種通過互聯(lián)網(wǎng)提供軟件服務(wù)的軟件應(yīng)用模式。在這種模式下,用戶不需要再花費(fèi)大量投資用于硬件、軟件和開發(fā)團(tuán)隊(duì)的建設(shè),只需要支付一定的租賃費(fèi)用,就可以通過互聯(lián)網(wǎng)享受到相應(yīng)的服務(wù),而且整個(gè)系統(tǒng)的維護(hù)也由廠商負(fù)責(zé)。
如果要用一句話來(lái)概括 IaaS、PaaS 和 SaaS 的話,那就是:如果把云計(jì)算比喻成一部手機(jī),那么 IaaS 就是硬件,你要自己寫代碼研發(fā)系統(tǒng)才能用;PaaS 是手機(jī)系統(tǒng),你要實(shí)現(xiàn)什么功能還是要裝各種軟件;SaaS 就是硬件+系統(tǒng)+軟件,你要干什么一句話就能解決。
什么是虛擬化?
2.1 虛擬化概念
虛擬化是通過軟件手段對(duì)計(jì)算機(jī)硬件資源鏡像整合管理和再分配的一種技術(shù),常用的手段有基于虛擬機(jī)的虛擬化和基于容器的虛擬化。
2.2 虛擬化技術(shù)分類
2.2.1 按應(yīng)用場(chǎng)景分類
操作系統(tǒng)虛擬化
應(yīng)用程序虛擬化
桌面應(yīng)用虛擬化
存儲(chǔ)虛擬化
網(wǎng)絡(luò)虛擬化
2.2.2 按照應(yīng)用模式分類
一對(duì)多:其中將一個(gè)物理服務(wù)器劃分為多個(gè)虛擬服務(wù)器,這是典型的服務(wù)器整合模式。
多對(duì)一:其中整合了多個(gè)虛擬服務(wù)器,并將它們作為一個(gè)資源池,這是典型的網(wǎng)格計(jì)算模式。
多對(duì)多:將前兩種模式結(jié)合在一起。
2.2.3 按硬件資源調(diào)用模式分類
全虛擬化
全虛擬化,虛擬化操作系統(tǒng)與底層硬件完全隔離。由中間的 Hypervisor 層轉(zhuǎn)化虛擬化客戶操作系統(tǒng)對(duì)底層硬件的調(diào)用代碼,全虛擬化無(wú)需更改客戶端操作系統(tǒng),并兼容性好。典型代表有:Vmware Workstation、KVM。
半虛擬化
半虛擬化,在虛擬客戶操作系統(tǒng)中加入特定的虛擬化指令,通過這些指令可以直接通過 Hypervisor 層調(diào)用硬件資源,免除有 Hypervisor 層轉(zhuǎn)換指令的性能開銷。半虛擬化的典型代表 Microsoft Hyper-V、Vmware 的 vSphere。
注:針對(duì) IO 層面半虛擬化要比全虛擬化要好,因?yàn)榇疟P IO 多一層必定會(huì)慢。一般說 IO 就是網(wǎng)絡(luò) IO 和磁盤 IO,因?yàn)檫@兩個(gè)相對(duì)而言是比較慢的。
2.3 基于虛擬機(jī)(Hypervisor-based)的虛擬化
它通過一個(gè)軟件層的封裝,提供和物理硬件相同的輸入輸出表現(xiàn)。實(shí)現(xiàn)了操作系統(tǒng)和計(jì)算機(jī)硬件的解耦,將 OS 和計(jì)算機(jī)間從 1 對(duì) 1 變成了多對(duì)多(實(shí)際上是 1 對(duì)多)的關(guān)系。該軟件層稱為虛擬機(jī)管理器(VMM / Hypervisor),它可以直接運(yùn)行在裸機(jī)上(Xen、VMware EXSi),也可以運(yùn)行在操作系統(tǒng)上(KVM、VMware Workstation)。這項(xiàng)技術(shù)已經(jīng)很成熟了,(發(fā)展了40 多年),但仍然存在以下幾個(gè)問題:
在虛擬機(jī)上運(yùn)行了一個(gè)完整的操作系統(tǒng)(GuestOS),在其下執(zhí)行的還有虛擬化層和宿主機(jī)操作系統(tǒng),一定比直接在物理機(jī)上運(yùn)行相同的服務(wù)性能差;
有 GuestOS 的存在,虛擬機(jī)鏡像往往有幾個(gè) G 到幾十個(gè) G,占用的存儲(chǔ)空間大,便攜性差;
想要使用更多硬件資源,需要啟動(dòng)一臺(tái)新的虛擬機(jī)。要等待 GuesOS 啟動(dòng),可能需要幾十秒到幾分鐘不等。
實(shí)際使用場(chǎng)景中,我們使用虛擬化技術(shù)其實(shí)是為了按需分配資源來(lái)完成服務(wù)的部署和使用,同時(shí)對(duì)服務(wù)所依賴的環(huán)境進(jìn)行隔離,不被其它服務(wù)感知或干擾。為此啟動(dòng)一個(gè) GuestOS 并不是必需的,為什么不考慮讓多個(gè)虛擬機(jī)公用一個(gè)操作系統(tǒng)內(nèi)核,只隔離開服務(wù)運(yùn)行環(huán)境同時(shí)控制服務(wù)使用的系統(tǒng)資源呢?基于容器的虛擬化就是這樣一種技術(shù)。
2.4 基于容器的虛擬化
容器是沒有 GuestOS 的輕量級(jí)虛擬機(jī),多個(gè)容器共享一個(gè) OS 內(nèi)核,容器中包含需要部署的應(yīng)用和它依賴的系統(tǒng)環(huán)境,容器大小通常只有幾十到幾百 MB。由于共享操作系統(tǒng)內(nèi)核,所以容器依賴于底層的操作系統(tǒng),各個(gè)操作系統(tǒng)大都有自己的容器技術(shù)和容器工具。
Docker 是一個(gè) Linux 容器管理工具,隨著 Docker 的興起,Linux 容器技術(shù)也是當(dāng)下最時(shí)興的容器虛擬化技術(shù)。Linux 容器工具有很多,OpenVZ、LXC、Docker、Rocket、Lmctfy 等等,大都是基于 Linux 內(nèi)核提供的兩個(gè)機(jī)制:Cgroups(實(shí)現(xiàn)資源按需分配)和 Namespace(實(shí)現(xiàn)任務(wù)隔離)。
2.5 二種虛擬化技術(shù)的區(qū)別
虛擬機(jī)技術(shù)已經(jīng)發(fā)展了很多年,虛擬機(jī)和虛擬化層間的接口、虛擬機(jī)鏡像格式等都已經(jīng)標(biāo)準(zhǔn)化了。相應(yīng)的管理工具、分布式集群管理工具都有比較完善的解決方案,而容器最近幾年才興起,配套技術(shù)和標(biāo)準(zhǔn)還在完善中;
虛擬機(jī)由于有 GuestOS 存在,可以和宿主機(jī)運(yùn)行不同 OS,而容器只能支持和宿主機(jī)內(nèi)核相同的操作系統(tǒng);
虛擬機(jī)由于有 VMM 的存在,虛擬機(jī)之間、虛擬機(jī)和宿主機(jī)之間隔離性很好。而容器之間公用宿主機(jī)的內(nèi)核,共享系統(tǒng)調(diào)用和一些底層的庫(kù),隔離性相對(duì)較差;
容器比虛擬機(jī)明顯更輕量級(jí),對(duì)宿主機(jī)操作系統(tǒng)而言,容器就跟一個(gè)進(jìn)程差不多。因此容器有著更快的啟動(dòng)速度(秒級(jí)甚至更快),更高密度的存儲(chǔ)和使用(鏡像小)、更方便的集群管理等優(yōu)點(diǎn)。同時(shí)由于沒有 GuestOS 存在,在容器中運(yùn)行應(yīng)用和直接在宿主機(jī)上幾乎沒有性能損失,比虛擬機(jī)明顯性能上有優(yōu)勢(shì)。
云計(jì)算和虛擬化差別
對(duì)云計(jì)算和虛擬化差別的描述,有一句經(jīng)典的話:虛擬化是云計(jì)算構(gòu)建資源池的一個(gè)主要方式。只要這句話你理解透了就知道他倆的關(guān)系了。
簡(jiǎn)單來(lái)說,云計(jì)算是一個(gè)概念,而不是具體技術(shù)。虛擬化是一種具體技術(shù),指把硬件資源虛擬化,實(shí)現(xiàn)隔離性、可擴(kuò)展性、安全性、資源可充分利用等特點(diǎn)的產(chǎn)品。
目前云計(jì)算,大多是依賴虛擬化,通過把多臺(tái)服務(wù)器實(shí)體虛擬化后,構(gòu)成一個(gè)資源池,實(shí)現(xiàn)共同計(jì)算,共享資源。也就是現(xiàn)在所謂云計(jì)算,其實(shí)這個(gè)詞提出來(lái)之前,過去的服務(wù)器集群就已經(jīng)實(shí)現(xiàn)這些功能了,只不過沒有現(xiàn)在那么先進(jìn)而已。
3.1 各領(lǐng)域代表的產(chǎn)品
云計(jì)算架構(gòu)的開源產(chǎn)品是 OpenStack,OpenStack 是一個(gè)由 NASA 和 Rackspace 合作研發(fā)并發(fā)起的,以 Apache 許可證授權(quán)的自由軟件和開放源代碼項(xiàng)目。
虛擬機(jī)的虛擬化:VM 的商業(yè)付費(fèi) vSphere 或者開源的 KVM。
容器的虛擬化:Docker。
3.2 OpenStack
Openstack 是眾多技術(shù)的組合體,有涉及網(wǎng)絡(luò)組件的 Neutron,有涉及 Dashboard 的 Horizon,也有涉及計(jì)算資源分配的 Nova。
虛擬化技術(shù)只是其中一個(gè)涉及到資源池構(gòu)建的方式。當(dāng)然你也可以用其它方式構(gòu)建資源池,比如物理機(jī)還有容器。
Openstack 經(jīng)過幾年十幾個(gè)版本的更迭,已經(jīng)擁有了 Keystone、Nova、Neutron、Cinder、Glance、Swift、Heat、Ceilometer 等等組件,比較完整的提供了一個(gè)云平臺(tái)應(yīng)有的各個(gè)模塊。
3.3 在云計(jì)算中,不同層的選型
選取基于虛擬機(jī)的虛擬化呢,還是基于容器的虛擬化。早期由于容器技術(shù)的不完善,云計(jì)算只有虛擬機(jī)這一種選擇。
隨著現(xiàn)在容器技術(shù)興起,基于容器的虛擬化性能更高,交付速度快,方便管理,而且資源利用率高,看起來(lái)是比虛擬機(jī)更好的方案。但是它現(xiàn)有的兩個(gè)比較大的缺點(diǎn)(隔離性不夠強(qiáng)、操作系統(tǒng)依賴性)讓他無(wú)法完全替代 VM,對(duì)于 SaaS 用戶和部分 PaaS 用戶而言這兩個(gè)缺點(diǎn)可能不那么明顯?,F(xiàn)階段 Container 和云計(jì)算主要結(jié)合的場(chǎng)景也是在 SaaS 和 PaaS 中,事實(shí)上大多數(shù) SaaS 和 PaaS 服務(wù)提供商都使用了容器技術(shù)。
但是對(duì)于 IaaS 的用戶來(lái)說,他們租用的是基礎(chǔ)設(shè)施。上面承載著他們自己運(yùn)行的系統(tǒng)和服務(wù),隔離性不強(qiáng)意味著安全性和可信性不高。在這種情況下大客戶們,肯定是不放心的。同時(shí)操作系統(tǒng)依賴性也是限制 Container 在 IaaS 層應(yīng)用的一個(gè)主要問題,也是絕大多數(shù)解決方案都是將Container 運(yùn)行在 VM 上的原因,這樣 Container 性能好的優(yōu)勢(shì)實(shí)際上在云上根本發(fā)揮不出來(lái),優(yōu)點(diǎn)只有啟動(dòng)快了。