文章目錄
什么是云計算
基于互聯網的相關服務的增加、使用和交付模式
這種模式提供可用的、便捷的、按需的網路訪問,迚入可配置的計算資源共享池
這些資源能夠被快速提供,只需投入很少的管理作業,戒不服務供應商迚行很少的互動
通常涉及通過互聯網來提供勱態易擴展且經常是虛擬化的資源
云計算服務模型
一、IaaS
IaaS是Infrastructure as a server的縮寫,意思是基礎設施即服務,云端公司把IT環境的基礎設施建設好,然后直接對外出租硬體服務器或者虛擬機,消費者可以利用所有計算基礎設施,包括處理CPU、記憶體、存盤、網路和其它基本的計算資源,用戶能夠部署和運行任意軟體,包括作業系統和應用程式,消費者不管理或控制任何云計算基礎設施,但能控制作業系統的選擇、存盤空間、部署的應用,也有可能獲得有限制的網路組件(例如路由器、防火墻、負載均衡器等)的控制,如下圖所示:

云端公司一般都會有一個自助網站,用戶可以向云端公司簽訂租賃協議以獲取一個賬號,登錄之后可以管理自己的計算設備:開關機、安裝作業系統、安裝應用軟體等,
Iaas優缺點:
IaaS型租用方式對用戶來說優點很明顯,就是非常靈活,也是自由度最大的一種型別,用戶可以決定安裝什么作業系統,以及是否需要安裝或者安裝什么型別的資料庫,安裝什么軟體等等,就像自己買了臺電腦,如何使用是你全權做主,
不過缺陷也很明顯,除了管理維護量大之外,還有一個缺陷就是:計算資源嚴重浪費,作業系統、資料庫以及中間件本身就要消耗大量的計算資源,而這些消耗對于租戶而已是必須的但是又是無用的,因為用戶只是想要運行軟體,
二、PaaS
PaaS是Platform as a Server的縮寫,意思是平臺即服務,即把運行用戶所需的軟體的平臺作為服務出租,如下圖所示:

云端公司要做事情就是運行軟體所需要的下7層部署完畢,然后再PssS上劃分小塊(習慣稱之為容器)對外出租,租戶只需要安裝和使用軟體就可以了,
平臺軟體層包括作業系統、資料庫、中間件和運行庫,但是并不是每一個軟體都需要這4部分的支持,需要什么是由軟體決定的,所以PaaS又分為2種,半平臺PaaS和全平臺PaaS,
1、半平臺PaaS:只安裝作業系統,其他的租戶自己去解決,這樣會比較麻煩,因為你需要有較強的技術實力,而且需要耗費部分資源去安裝軟體運行需要的、的中間件、運行庫、資料庫,
2、全平臺PaaS:安裝應用軟體依賴的全部平臺軟體,也就是4部分全部準備完畢,不過大家也知道,世界上的應用軟體如此龐大,支撐他們的語言、資料庫、中間件、運行庫可能都不一樣,PaaS云端公司不可能全部都去安裝,所以他們支持的軟體是有限的,
相對于IaaS來說,PaaS租戶的靈活性降低了,只能在云端提供的有限平臺范圍內做軟體,但是優點也很明顯,能夠最大化利用租用的資源和不需要租戶有高深的IT技術,
三、SaaS
SaaS是Software as a Server的縮寫,意思是軟體即服務,把軟體租出去,用戶連安裝都不需要了,同樣來看圖:

對比PaaS略微有一點不同,應用軟體是云端公司來安裝、運維的,租戶使用軟體,需要管理的是這些軟體產生的資料資訊,
一般來說SaaS適用的軟體都有如下的特點:
(1)復雜:軟體龐大、安裝復雜、使用復雜、運維復雜,單獨購買架構昂貴,例如ERP、CRM、BI等,
(2)模塊化:按功能模塊劃分,需要什么功能就組什么模塊,
(3)多租戶:多個企業用戶同時操作,使用同一個軟體而不是互相干擾,當然,資料是邏輯隔離的,不同用戶的資料檢索欄位之一必然是用戶身份資訊,
(4)多幣種多語言多時區的支持
四、DaaS
DaaS是Date as a Server的縮寫,意思是資料即服務,云端公司負責建立全部的IT環境,收集用戶需要的基礎資料并且做資料分析,最后對分析結構或者演算法提供編程介面,讓資料成為服務,
如圖:

DaaS是大資料時代的象征,能做DaaS服務的云端公司需要從資料積累、資料分析和資料交付三方面積累自身的核心競爭力,
OpenStack概述
OpenStack是一個開源的云計算管理平臺專案,是一系列軟體開源專案的組合,由NASA(美國國家航空航天局)和Rackspace合作研發并發起,以Apache許可證(Apache軟體基金會發布的一個自由軟體許可證)授權的開源代碼專案,
OpenStack簡介
Openstack是一個云平臺管理的專案,它不是一個軟體,這個專案由幾個主要的組件組合起來完成一些具體的作業,Openstack是一個旨在為公共及私有云的建設與管理提供軟體的開源專案,它的社區擁有超過130家企業及1350位開發者,這些機構與個人將 Openstack作為基礎設施即服務資源的通用前端,Openstack專案的首要任務是簡化云的部署程序并為其帶來良好的可擴展性,本文希望通過提供必要的指導資訊,幫助大家利用 Openstack前端來設定及管理自己的公共云或私有云,
Openstack是由 Rackspace和NASA共同開發的云計算平臺,幫助服務商和企業內部實作類似于 Amazon ec2和S3的云基礎架構服務( Infrastructure as a Service), Openstack包括兩個主要模塊:Nova和 Swift,前者是NASA開發的虛擬服務器部署和業務計算模塊;后者是 Backpack開發的分布式云存盤模塊,兩者可以一起用,也可以分開單獨用, Openstack是開源專案,除了有 Rackspace和NASA的大力支持外,后面還有包括Dell、 Citrix、 Cisco Canonical這些重量級公司的貢獻和支持,發展速度非常快,有取代另一個業界領先開源云臺 Eucalyptus的態勢,
OpenStack發展歷程
Openstack專案雖然誕生時間不長,但其發展之迅速,在云計算領域的影響力擴展,使得這個年輕的專案成為業內所有人都不得不關注的焦點,
2010年 Openstack專案成立,該專案由美國國家航空航天局(NASA)和 Rackspace合作研發, Apache許可證開源目前為止共有以下版本:
1.Austin——Openstack發布的第一個版本,這是第一個開源的云計算平臺,
2.Bexar——Openstack發布的第二個版本,添加了IPv6的支持、影像傳遞技術,以及Hyper-V和Xen等虛擬服務器功能,
3. Catus——Openstack發布的第三個版本,添加了虛擬化功能、自動化功能以及一個服務目錄,
4. Diablo——Openstack發布的第四個版本,增加了新的圖形化用戶界面和統一身份識別管理系統,
5. Essex——Openstack發布的第五個版本,完善了 Keystone認證,洗掉了對 Windows Hyper-V支持的相關代碼,
6.Folsom——2012年9月 Open Stack發布的第六版, Folsom包括了 Nova swift、 Horizon Keystone、 Glance原有的五個子專案之外,又多增 Quantum和 Cinder兩項, Quantum支持了數個現有的虛擬網路套件,如 Open vSwitch、Ryu網路作業系統( Network Operation System,NOS)等,也包括了 Cisco、 Nicira和NEC等廠商提供的虛擬網路套件等, Quantun可以讓Open Stack的IaS平臺能采用軟體定義網路( Software Defined network,SDN)的技術,如OrperFlow,Cinder則加強了區塊( Block)與磁盤區( Volume)的儲存能力,
7.Grizly——2013年4月Open Stack基金會發布的第七個版本, Grizzly新增近230個新功能,涉及計算、存盤、網路和共享服務等方面,例如 Open Stack計算虛擬化-計算使用“Cells”管理分布式集群,使用“NoDB”主機架構,以減少對中央資料庫的依賴,
8.Havana——2013年10月 Open Stack基金會發布的第八個版本, Havana除了增加Open Stack Metering( Ceilometer)和 Open Stack Orchestration(Heat)兩個新組件外,還完成了400多個特性計劃,修補了3000多補丁,
9. Icehouse——2014年4月 Open Stack基金會發布的第九個版本,新版本提高了專案的穩定性與成熟度,提升用戶體驗的一致性,特別是針對存盤方面,聯合身份驗證將允許用戶通過相同認證資訊同時訪問 Open Stack私有云與共有云,新專案 Trove( DB as a service)現在已經成為版本中的組成部分,它允許用戶在 Open Stack環境中管理關系資料庫服務,
10.Juno——2014年10月 OpenStack基金會發布的第十個版本,新增包括圍繞 Hadoop和 Spark集群管理和監控的自動化服務和支持軟體開發、大資料分析和大規模應用架構在內的342個功能點,標志著 Open Stack正向大范圍支持的成熟云平臺快速前進,自 Openstack專案成立以來,超過200個公司加入了該專案,其中包括AT&T、AMD、 Cisco、Dell、IBM、 Intel、 Red hat等,目前參與 Openstack專案的開發人員有17000,來自139個國家,這一數字還在不斷增長中,來自咨詢機構 Forrester的分析表示, OpenStack已經逐步成為事實上( de facto)的基礎架構云(IaaS)標準,
OpenStack發展趨勢
盡管 Open Stack從誕生到現在已經變得日漸成熟,基本上已經能夠滿足云計算用戶的大部分的需求,但隨著云計算技術的發展, Open Stack必然也需要不斷地完善,Open Stack已經逐漸成為市場上主流的一個云計算平臺解決方案,結合業界的一般觀點和調查中關于 Open Stack用戶的意見, Open Stack需要完善的部分大體上可以歸納為以下幾個方面:
(1)增強動態遷移:雖然 Open Stack的Nova組件支持動態遷移,但實質上 Open Stack尚未實作真正意義上的動態遷移,在 Open Stack中因為沒有共存盤只能做塊遷移,共享遷移只能在有共享存盤的情況下才被使用,
(2)資料安全:安全問題一直是整個云計算行業的問題,盡管 Open Stack中存在對用戶身份資訊的驗證等安全措施,甚至劃分出可以單獨或合并表征安全信任等級的域,但隨著用戶需求的變化和發展,安全問題仍然不可小覷,
計費和資料監控:隨著 Open Stack在公有云平臺中的進一步部署,計費和監控成為公有云運營中的一個重要環節,云平臺的管理者和云計算服務的提供者必然會進一步開發Open Stack的商業價值,盡管 Open Stack中已經有 Ceilometer計量組件,通過它提供的API介面可以實作收集云計算里面的基本資料和其他資訊,但這項工程目前尚處于完善和測驗階段,還需要大量的技術人員予以維護和支持,
OpenStack作業流程
Open Stack的各個服務之間通過統一的REST風格的API呼叫,實作系統的松耦合,它內部組件的作業程序是一個有序的整體,諸如計算資源分配、控制調度、網路通信等都通過AMQP實作, Open Stack的上層用戶是程式員、一般用戶和 Horizon界面等模塊,這三者都是采用 Open Stack各個組件提供的API介面進行互動,而它們之間則是通過AMQP進行互相呼叫,它們共同利用底層的虛擬資源為上層用戶和程式提供云計算服務,
OpenStack管理流程
OpenStack既然是一個開源的云平臺專案,它的主要任務是給用戶提供IaaS服務,
QEMU
QEMU是一個純軟體的計算機硬體仿真器,通過單獨運行QEMU來模擬物理計算機,具有非常靈活和可移植的特點,利用它能夠達到使用軟體取代硬體的效果,
一般情況下,OpenStack可以部署在Ubuntu的Linux作業系統上,為了進一步提高QEMU的運行效率,往往會增加一個KVM硬體加速模塊,KVM內嵌在Linux作業系統內核之中,能夠直接參與計算機硬體的調度,這一點是QEMU所不具備的,一般的QEMU程式的執行必然要經程序式從用戶態向內核態的轉變,這必然會在一定程度上降低效率,所以QEMU雖然能夠通過轉換對硬體進行訪問,但在OpenStack中往往采用KVM進行輔助,使得OpenStack的性能表現得更為良好,
但需要說明的是KVM需要良好的硬體支持,有些硬體本身如果不支持虛擬化的時候,KVM則不能使用,
Libvirt
Libvirt是一個開源的、支持Linux下虛擬化工具的函式庫,實質上它就是為構建虛擬化管理工具的API函式,Libvirt是為了能夠更方便地管理平臺虛擬化技術而設計的開放源代碼的應用程式介面,它不僅提供了對虛擬化客戶機的管理,也提供了對虛擬化網路和存盤的管理,
最初的 Libvirt是只針對Xen而設計的一系列管理和調度Xen下的虛擬化資源的API函式,目前高版本的 Libvirt可以支持多種虛擬化方案,包括KVM、QEMU、Xen、 VMware、 VirtualBox等在內的平臺虛擬化方案,又支持 Openvz、LXC等 Linux容器虛擬化系統,還支持用戶態Linux(UML)的虛擬化,它能夠對虛擬化方案中的Hypervisor進行適配,讓底層 Hypervisor對上層用戶空間的管理工具可以做到完全透明,
OpenStack優勢
模塊松耦合:與其他開源軟體相比,OpenStack模塊分明,添加獨立功能的組件非常簡單,有時候,不需要通讀整個OpenStack的代碼,只需要了解其介面規范及API使用,就可以輕松地添加一個新的模塊
控制性:完全開源得平臺,提供API介面,方便與第三方技術集成
兼容性:OpenStack兼容其他公有云,方便用戶進行資料遷移
可擴展性:模塊化設計,可以通過橫向擴展,增加節點、添加資源
靈活性:OpenStack也需要不同的組件,但是OpenStack的組件安裝例外靈活,根據自己得需要建立相應基礎設施、增加集群規模,
二次開發容易:OpenStack發布的OpenStack API是Rest-full API,其他所有組件也是采種這種統一的規范,因此,基于OpenStack做二次開發,較為簡單,而其他3個開源軟體則由于耦合性太強,導致添加功能較為困難,
行業標準:眾多IT領軍企業已經加入到OpenStack專案
核心專案
OpenStack覆寫了網路、虛擬化、作業系統、服務器等各個方面,它是一個正在開發中的云計算平臺專案,根據成熟及重要程度的不同,被分解成核心專案、范訓專案,以及支持專案和相關專案,每個專案都有自己的委員會和專案技術主管,而且每個專案都不是一成不變的,范訓專案可以根據發展的成熟度和重要性,轉變為核心專案,以下為各項核心專案的解釋:
1、計算服務(Compute):Nova,一套控制器,用于為單個用戶或使用群組管理虛擬機實體的整個生命周期,根據用戶需求來提供虛擬服務,負責虛擬機創建、開機、關機、掛起、暫停、調整、遷移、重啟、銷毀等操作,配置CPU、記憶體等資訊規格,這是真正的執行部件,接受 DashBoard 發來的命令并完成具體的動作,自Austin版本集成到專案中,但是 Nova 不是虛擬機軟體,所以還需要虛擬機軟體(如 KVM、Xen、Hyper-v 等)配合,
2、物件存盤(Object Storage):Swift,一套用于在大規模可擴展系統中通過內置冗余及高容錯機制實作物件存盤的系統,允許進行存盤或者檢索檔案,可為Glance提供鏡像存盤,為Cinder提供卷備份服務,自Austin版本集成到專案中,是 NoSQL 資料庫,類似 HBase,為虛擬機提供非結構化資料存盤,它把相同的資料存盤在多臺計箅機上,以確保資料不會丟失,用戶可通過 RESTful 和 HTTP 型別的 API 來和它通信,這是實際的存盤專案,類似 Ceph,不過在 OpcnStack 具體實施時,人們更愿意采用 Ceph
3、鏡像服務(Image Service):Glance,一套虛擬機鏡像查找及檢索系統,支持多種虛擬機鏡像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有創建上傳鏡像、洗掉鏡像、編輯鏡像基本資訊的功能,自Bexar版本集成到專案中,
4、身份服務(Identity Service):Keystone,為OpenStack其他服務提供身份驗證、服務規則和服務令牌的功能,管理Domains、Projects、Users、Groups、Roles,自Essex版本集成到專案中,
5、網路&地址管理(Network):Neutron,提供云計算的網路虛擬化技術,為OpenStack其他服務提供網路連接服務,為用戶提供介面,可以定義Network、Subnet、Router,配置DHCP、DNS、負載均衡、L3服務,網路支持GRE、VLAN,插件架構支持許多主流的網路廠家和技術,如OpenvSwitch,自Folsom版本集成到專案中,
6、塊存盤 (Block Storage):Cinder,為運行實體提供穩定的資料塊存盤服務,它的插件驅動架構有利于塊設備的創建和管理,如創建卷、洗掉卷,在實體上掛載和卸載卷,自Folsom版本集成到專案中,
7、UI 界面、控制面板服務 (Dashboard):Horizon,OpenStack中各種服務的Web管理門戶,用于簡化用戶對服務的操作,例如:啟動實體、分配IP地址、配置訪問控制等,自Essex版本集成到專案中,
8、計量測量 (Metering):Ceilometer,像一個漏斗一樣,能把OpenStack內部發生的幾乎所有的事件都收集起來,然后為計費和監控以及其它服務提供資料支撐,自Havana版本集成到專案中,
9、部署編排 (Orchestration):Heat,提供了一種通過模板定義的協同部署方式,實作云基礎設施軟體運行環境(計算、存盤和網路資源)的自動化部署,自Havana版本集成到專案中,
10、資料庫服務(Database Service):Trove,為用戶在OpenStack的環境提供可擴展和可靠的關系和非關系資料庫引擎服務,自Icehouse版本集成到專案中,、
可選組件
Heat :如果要在成千上萬個虛擬機里安裝和配置同一個軟體,該怎么辦?采用 Orchestrates 是一個不錯的主意,它向每個虛擬機里注人一個名叫 heat-cfntools 的客戶端工具,然后就能同時操作很多虛擬機
Sahana:使用戶能夠在 OpenStack 平臺上(利用虛擬機)一鍵式創建和管理 Hadoop 集群,實作類似 AWS 的 EMR(Amazon Elastic MapReduce Service)功能,用戶只需要提供簡單的配置引數和模板,如版本資訊(CDH 版本)、集群拓撲(幾個 Slave、幾個 Datanode)、節點配置資訊(CPU、記憶體)等,Sahara 服務就能夠在幾分鐘內根據提供的模板快速 部署 Hadoop、Spark 及 Storm 集群,Sahana 是一個大資料分析專案
Ironic:把裸金屬機器(與虛擬機相對)加人到資源池中
Zaqar:Zaqar 為 Web 和移動開發者提供多租戶云訊息和通知服務,開發人員可以通過 REST API 在其云應用的不同組件中通過不同的通信模式(如 生產者/消費者或發布者/訂閱者)來傳遞訊息
Barbican:是 OpenStack 的密鑰管理組件,其他組件可以呼叫 Barbican 對外暴露的 REST API 來存盤和訪問密鑰
Manila:為虛擬機提供檔案共享服務,不過需要存盤后端的配合
其他組件:Congress(策略服務)、Designate(DNS 服務)、Freezer(備份及還原服務)、Magnum(容器支持)、Mistral(作業流服務)、Monasca(監控服務)、Searchlight(索引和搜索)、Senlin(集群服務)、Solum(APP集成開發平臺)、Tacker(網路功能 虛擬化)、Trove(資料庫服務)
OpenStack核心組件——nova-計算服務
nova介紹:
Nova 是 OpenStack 最核心的服務,負責維護和管理云環境的計算資源,OpenStack 作為 IaaS 的云作業系統,虛擬機生命周期管理也就是通過 Nova 來實作的,
用途與功能:
1 實體生命周期管理
2 管理計算資源
3 網路和認證管理
4 REST 風格的 API
5 異步的一致性通信
6 Hypervisor 透明:支持Xen,XenServer/XCP,KVM, UML, VMware vSphere and Hyper-V

在上圖中可以看到,Nova 處于 Openstak 架構的中心,其他組件都為 Nova 提供支持: Glance 為 VM 提供 image Cinder 和 Swift 分別為 VM 提供塊存盤和物件存盤 Neutron 為 VM 提供網路連接,
Nova 架構如下:

nova-api: 發出請求給 openstack 來操作一個服務,呼叫該服務來啟動一個新的 nova 實體,
nova-scheduler:nova 調度器 , 用于選擇某個服務器相應運行實體的請求,
nova-compute :管理虛機的核心服務,通過呼叫 Hypervisor API 實作虛機生命周期管理
nova-conductor :nova-compute 經常需要更新資料庫,比如更新虛機的狀態,出于安全性和伸縮性的考慮,
nova-compute 并不會直接訪問資料庫,而是將這個任務委托給 nova-conductor
nova-novncproxy:基于 Web 瀏覽器的 VNC 訪問
nova-consoleauth :負責對訪問虛機控制臺請求提供 Token 認證
Nova 的架構比較復雜,包含很多組件, 這些組件以子服務(后臺 deamon 行程)的形式運行,可以分為以下幾類:
api-nova-api
是整個 Nova 組件的門戶,接收和回應客戶的 API 呼叫,所有對 Nova 的請求都首先由 nova-api 處理,nova-api 向外界暴露若干 HTTP REST API 介面 在 keystone 中我們可以查詢 nova-api 的 endponits,
客戶端就可以將請求發送到 endponits 指定的地址,向 nova-api 請求操作, 當然,作為最終用戶的我們不會直接發送 Rest AP I請求, OpenStack CLI,Dashboard 和其他需要跟 Nova 交換的組件會使用這些 API,
Nova-api 對接收到的 HTTP API 請求會做如下處理:
1.檢查客戶端傳入的引數是否合法有效
2.呼叫 Nova 其他子服務的處理客戶端 HTTP 請求
3.格式化 Nova 其他子服務回傳的結果并回傳給客戶端
nova-api 接收哪些請求?
簡單的說,只要是跟虛擬機生命周期相關的操作,nova-api 都可以回應, 大部分操作都可以在 Dashboard 上找到,打開Instance管理界面,出現以下接收請求
系結浮動IP;連接介面;分離介面;編輯實體;連接卷;分離卷;更新元資料;編輯安全組;控制臺;查看日志;暫停實體;掛起實體;廢棄實體;調整實體大小;鎖定實體;解鎖實體;軟重啟實體;硬重啟實體;關閉實體;重建實體;洗掉實體 等等
nova-compute
nova-compute 是管理虛機的核心服務,在計算節點上運行,通過呼叫Hypervisor API實作節點上的 instance的生命周期管理, OpenStack 對 instance 的操作,最后都是交給 nova-compute 來完成的, nova-compute 與 Hypervisor 一起實作 OpenStack 對 instance 生命周期的管理,
通過Driver架構支持多種Hypervisor
Hypervisor是計算節點上跑的虛擬化管理程式,虛機管理最底層的程式, 不同虛擬化技術提供自己的 Hypervisor, 常用的 Hypervisor 有 KVM,Xen, VMWare 等,nova-compute 為這些 Hypervisor 定義了統一的介面,Hypervisor 只需要實作這些介面,就可以 Driver 的形式即插即用到 OpenStack 系統中, 下面是Nova Driver的架構示意圖:

nova-conductor:
nova-compute 經常需要更新資料庫,比如更新和獲取虛機的狀態, 出于安全性和伸縮性的考慮,nova-compute 并不會直接訪問資料庫,而是將這個任務委托給 nova-conductor,

這樣做有兩個顯著好處:1.更高的系統安全性 2.更好的系統伸縮性
Console Interface
nova-console: 用戶可以通過多種方式訪問虛機的控制臺
nova-novncproxy: 基于 Web 瀏覽器的 VNC 訪問
nova-spicehtml5proxy: 基于 HTML5 瀏覽器的 SPICE 訪問
nova-xvpnvncproxy: 基于 Java 客戶端的 VNC 訪問
nova-consoleauth: 負責對訪問虛機控制臺請求提供 Token 認證
nova-cert: 提供 x509 證書支持
Database
Nova 會有一些資料需要存放到資料庫中,一般使用 MySQL,資料庫安裝在控制節點上, Nova 使用命名為 “nova” 的資料庫,
Message Queue
在前面我們了解到 Nova 包含眾多的子服務,這些子服務之間需要相互協調和通信,為解耦各個子服務,Nova 通過 Message Queue 作為子服務的資訊中轉站, 所以在架構圖上我們看到了子服務之間沒有直接的連線,是通過 Message Queue 聯系的,
附加:OpenStack 默認是用 RabbitMQ 作為 Message Queue, MQ 是 OpenStack 的核心基礎組件

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/233619.html
標籤:其他
下一篇:一個簡單的SDN實驗
