如何了解雲?
雲是基于“雲計算”技術,實作各種終端裝置之間的互聯互通。手機、電視機等都隻是一個單純的顯示和操作終端,它們不再需要具備強大的處理能力。使用者享受的所有資源、所有應用程式全部都由一個存儲和運算能力超強的雲端背景來提供。像我們現在經常使用的線上殺毒、網絡硬碟、線上音樂等都屬于雲服務範疇。
雲計算的概念可以從使用者、技術提供商和技術開發人員三個不同角度來解讀。
使用者看雲計算
從使用者的角度考慮,主要根據使用者的體驗和效果來描述,雲計算可以總結為:雲計算系統是一個資訊基礎設施,包含有硬體裝置、軟體平台、系統管理的資料以及相應的資訊服務。使用者使用該系統的時候,可以實作“按需索取、按用計費、無限擴充,網絡通路”的效果。
簡單而言,使用者可以根據自己的需要,通過網絡去獲得自己需要的計算機資源和軟體服務。這些計算機資源和軟體服務是直接供使用者使用而無需使用者做進一步的定制化開發、管理和維護等工作。同時,這些計算機資源和軟體服務的規模可以根據使用者業務變化和需求的變化,随時進行調整到足夠大的規模。使用者使用這些計算機資源和軟體服務,隻需要按照使用量來支付租用的費用。
技術提供商看雲計算
技術提供商對雲計算了解為,通過排程和優化的技術,管理和協同大量的計算資源;針對使用者的需求,通過網際網路釋出和提供使用者所需的計算機資源和軟體服務;基于租用模式的按用計費方法進行收費。
技術開發人員看雲計算
技術開發人員作為雲計算系統的設計和開發人員,認為雲計算是一個大型集中的資訊系統,該系統通過虛拟化技術和面向服務的系統設計等手段來完成資源和能力的封裝以及互動,并且通過網際網路來釋出這些封裝好的資源和能力。
所謂大型集中的資訊系統,指的是包含有大量的軟硬體資源,并且通過技術和網絡等對其進行集中式的管理的資訊系統。通常這些軟硬體資源在實體上或者在網絡連接配接上是集中或者相鄰的,能夠協同來完成同一個任務。
資訊系統包含有軟硬體和很多軟體功能,這些軟硬體和軟體功能如果需要被通路和使用,必須有一種把相關資源和軟體子產品打包在一起并且能夠呈現給使用者的方式。虛拟化技術和Web服務為最為常見的封裝和呈現技術,可以把硬體資源和軟體功能等打包,并且以虛拟計算機和網絡服務的形式呈現給使用者使用。
是以雲計算(CloudComputing)是分布式計算(Distributed Computing)、并行計算(Parallel Computing)、效用計算(Utility Computing)、網絡存儲(Network Storage Technologies)、虛拟化(Virtualization)、負載均衡(Load Balance)等傳統計算機和網絡技術發展融合的産物。
好比是從古老的單台發電機模式轉向了電廠集中供電的模式。它意味着計算能力也可以作為一種商品進行流通,就像瓦斯、水電一樣,取用友善,費用低廉。最大的不同在于,它是通過網際網路進行傳輸的。
雲計算的部署類型
雲計算可以分成三種不同的類型進行部署,分别是私有雲、公有雲、混合雲。
私有雲指的是部署在一個封閉和特定環境(網絡封閉或者服務範圍封閉)中的一個雲計算系統。該系統的系統邊界明确,僅對指定範圍内的人員提供服務。該範圍以外的人員和系統無法使用該雲,比如非服務區域或者非指定内部網絡的人不能使用私有雲上的雲服務。
公有雲指的是部署在一個開放環境中,為所有具備網絡接入能力的人和系統提供服務。使用者通過網際網路通路和使用公有雲的服務,但不擁有雲也不管理雲。
混合雲指的是以私有雲為基礎,能夠在業務負載超越私有雲自身能力或其它指定的情況下,把部分業務負載透明地分流到其它雲上進行處理,使得私有雲和部分其它雲的資源整合在一起形成的一個系統。
雲計算的服務類型
雲計算的服務類型可以分為基礎設施即服務(IaaS)、應用平台即服務(PaaS)以及軟體即服務(SaaS)三個層次。
基礎設施即服務(IaaS)對雲計算系統的軟硬體和網絡等基礎設施進行集中管理和排程,并且把這些基礎設施以一種可以通過網絡進行通路和使用的形式進行封裝,并對外以服務的方式提供這些封裝好的IT能力。
應用平台即服務(PaaS)在雲基礎設施上運作的應用軟體支撐平台,其提供業務軟體開發所需的業務接口和公共基礎處理的支援,友善開發人員開發特定業務的雲服務;同時,應用平台即服務(PaaS)為業務軟體的運作提供運作時刻的語言運作、網絡互動、程序通信、同步控制以及排程等支援,使得雲服務能夠高效可控地運作。
軟體即服務(SaaS)指在雲計算平台上,通過網際網路直接為使用者提供軟體服務。軟體即服務(SaaS)使得使用者不用再購買軟體,而是向提供商租用通過網際網路即可使用的軟體來管理企業經營活動,且使用者無需對軟體進行維護。
2010年,美國國家航空航天局聯手Rackspace,在建設美國國家航空航天局的私有雲過程中,建立了openstack的項目,之後他們邀請其他供應商提過元件,建立了一個完整的開源雲計算解決方案。
注:Rackspace (NYSE:RAX)全球三大雲計算中心之一,1998年成立,是一家全球領先的托管伺服器及雲計算提供商。
2010年誕生的第一個版本Austin,隻包含Rackspace和美國國家航空航天局的元件。之後釋出的版本包含了已加入該項目的供應商開發的附加元件。最初Rackspace獨立管理openstack項目,随着openstack的不斷發展,在2012年建立了openstack基金會,該基金會又選舉産生的董事會監管。Openstack的技術委員會由每個核心的軟體項目和項目上司組成。
目前openstack有來自87個國家或地區的850個基金會成員,白金會員提供最高水準的支援,其次是黃金會員,贊助企業和個人會員。
Cloudstack的曆史:
Cloudstack始于cloud.com,其目标是使服務供應商和企業建立,營運能力類似于亞馬遜公司的公有雲,私有雲。2010年,cloud.com提供了基于GPLv3的社群版本,供使用者免費下載下傳。
思傑公司在2011年7月收購了cloud.com。思傑公司是openstack社群最早期的成員之一,但在2012年決定離開Openstack社群。根據媒體報道,做出這一決定是因為思傑公司認為,最初由cloud.com提供的代碼相比openstack更穩定,可為使用者提供更多的功能。
2012年4月,思傑公司送出了cloud.com的代碼給apache軟體基金會,現在在apache基金會的apache2.0許可證下進行代碼開發,思傑公司将繼續提供版本支援及解決方案支援。由于過度到了apache,其他廠商也紛紛加入到了開發隊伍,增加功能和增強核心軟體。
有一點不同的是,openstack的基金會中會有供應商的名單,不同于cloudstack的釋出者名單。因為apache基金會負責了大量的項目,而Apache項目成員均為個人名義被列入,而不是他們所代表的公司。
在apache項目中,由感興趣的公司制定獨立從業人員的工作項目。目前cloudstack項目成員有一些思傑公司的員工和一些不太知名的公司,項目的發展方向由個别參與者所代表的雇主的意願來決定。
Openstack與cloudstack的曆史比較
Cloud.com緻力于開發和發展一個更大的開源社群,是以,大部分cloudstack核心元件由cloud.com開發,然後由思傑公司增強。
相比之下,openstack項目從最開始就發展開放社群,其直接結果是,openstack裡聚集了比cloudstack更多的主流供應商。在大多數情況下,這些廠商開發的元件第一時間提供給openstack,之後才是cloudstack提供接口。
此外,思科和Nicira公司已經成為openstack網絡元件neutron的主要開發者。Neutron接收來自虛拟機的指令來定義虛拟機所需的網絡,然後發送指令給交換機和路由器來建立這些網絡。
每個交換機的供應商必須為Neutron提供插件,這個插件在Neutron中轉換為特定廠商裝置的特定指令文法。Extreme Networks和brocade這兩個openstack基金會成員同樣先為openstack提供插件,在進行cloudstack支援。
Openstack也有不完善的地方,如openstack相對于cloudstack來說更加複雜,對終端使用者的支援不夠,在安裝部署上不如cloudstack便捷,在界面顯示方面也不如cloudstack豐富。
要确定企業的合适部署,就必須自行對比每一個解決方案,然後進行選擇,思傑公司向大型服務提供商,大學以及其他機構展現了cloudstack的成熟和穩定。而要關注openstack的穩定性可以檢視IBM,戴爾和rackspace等公司的解決方案,這兩款産品一直在持續發展,提供了一系列的存儲和網絡選項。相比開源項目,openstack是一個更進階且更現代化的開源項目,因為它是高度協作的産物。Openstack的支援者都是世界頂級的供應商,可以看出openstack備受青睐,也是開源界的明星産品。
支援openstack項目的主流供應商
X86伺服器供應商
HP(惠普)
DELL(戴爾)
IBM
Linux供應商
Redhat
Suse
Canonical
路由器供應商
Cisco
Juniper network
Alcatel-luceent
刀片伺服器供應商
HP
交換機供應商
存儲供應商
Emc
NetApp
Hypervisor供應商
Vmware
Kvm
Xen
當今的資料中心,許多伺服器都遇到過同樣的問題,即計算,電源,網絡帶寬等資源的使用率不足。例如,某個項目可能會需要大量的計算資源來完成計算,而一旦完成了計算任務,将不再需要那麼多的計算資源。當使用者想要一種靈活的,按需供給計算資源的服務,通過自動化或很少的人工幹預就能使用時,那麼雲計算就是最好的選擇之一。雲計算通常包含了一個服務責任,表示雲計算服務提供商承諾的性能,規格,可用率等。雲計算服務讓使用者通過一個共享的計算資源,網絡帶寬,存儲池,運作應用程式或服務來完成計算工作,并按資源的使用來計費。
關于雲計算服務的主要特點如下:
按需自助服務:使用者可以提供自己的需要訂購所需的計算、存儲和網絡資源,而幾乎無需人工幹預。
網絡通路:可以通過網絡使用任意類型的異構計算能力,通過标準化的機制調用計算資源而不受限于具體的通路裝置
資源池:多個使用者可以同時通路和使用雲計算提供的計算服務,服務提供商根據消費者的計算要求或實際使用量和配置設定實際的計算資源。
彈性;可根據需要不停機或短暫停機後迅速垂直或橫向擴充
計量或測量服務:按照使用的時間,傳輸或存儲的位元組數支付雲計算服務,并提供消費者具體的資源消費圖表。同時,他也可以根據消費者的不同需求提供定制化的計費模式
雲計算是網格計算(網格計算是分布式計算(DistributedComputing)的一種,整合大量異構計算機的閑置資源(如計算資源和磁盤存儲等),組成虛拟組織,以解決大規模計算問題。),分布式計算,并行計算,效用計算(效用計算(Utility computing)是一種提供服務的模型,在這個模型裡服務提供商提供客戶需要的計算資源和基礎設施管理,并根據應用所占用的資源情況進行計費,而不是僅僅按照速率進行收費.),聯機存儲技術,虛拟化,負載均衡等一些列傳統計算技術和網絡技術發展融合的産物。它旨在通過網絡将多個成本低廉的計算實體整合成一個大型的計算資源池,并借助Saas,Paas,Iaas等服務模式,将強大的計算能力分發到終端使用者手中。雲計算的核心理念就是,不斷的提高雲端處理能力,減輕使用者負擔,将一系列的IT能力以服務的形式提供給使用者,簡化使用者終端的處理負擔,最終使用成為一個單純的輸入/輸出裝置,享受雲提供的強大計算處理及服務能力。
Openstack具有建設這樣資源池的能力,通過openstack的各種元件多種模式的排列組合,可以搭建成各種規模的雲,這些雲可以是私有雲,公有雲,混合雲。
Openstack具有三大核心功能,即計算,存儲,網絡,分别對應相應的項目Nova,Cinder等。其中Nova提供了計算資源的管理,可以管理跨伺服器網絡的vm執行個體。同時Nova還提供了對多種Hyperviosr的支援,如KVM,QEMU,Xen,LXC,Vmware,Hyper-V,Powervm等。Cinder提供了存儲資源的管理,可以管理各個廠商提供的專業儲存設備。
Mysql:
Openstack所使用的資料庫,包括nova,glance,cinder等在内的元件都會建立自己的資料庫,儲存一些必要的資料。
Keystone:
Openstack的使用者認證元件,它的功能主要是建立管理項目的使用者和各種服務端口,以及進行使用者的身份認證,若要使用openstack的任意的API,第一步就必須通過keystone的驗證。
keystone的主要功能是提供認證和編錄服務
keystone提供了兩種認證方式:token,identifybackend)
token(令牌,實際是一個随機字串,在認證時直接使用),主要用于内部各元件之間
identify(賬号,密碼),需要使用者登陸時,如使用者通過horizon通路雲資源
catalog(編錄):儲存目前openstack架構中的調用接口(ip位址,端口,url資訊),openstack各個元件之間互動通過api接口,openstack架構各個元件通過http的restful機制(一種軟體架構風格,設計風格而不是标準,隻是提供了一組設計原則和限制條件。它主要用于用戶端和伺服器互動類的軟體。基于這個風格設計的軟體可以更簡潔,更有層次,更易于實作緩存等機制)遠端過程調用,基于URI輸出。
policy:管理政策,如與使用者管理、虛拟機執行個體管理有關的政策
Glance:
用來存放管理虛拟機鏡像和快照的服務,這也是一個最小架構中必須有的服務
glance:存放鏡像的中繼資料
registry:調用資料庫的接口,檢索接口
database:映像檔案的存儲位置等
swift:分布式存儲
Neutron:
網絡服務,用來提供虛拟機網絡通信的元件,負責接收對網絡的調用請求。
Nova:
Nova是個至關重要的元件,也是個相對龐大的元件,其中有很多服務,它是進行生成虛拟機工作的主要服務。
Nova計算節點,是openstack的最核心的節點,運作虛拟機執行個體,配置設定cpu、記憶體,nova-compute本身并不能運作虛拟機,是要通過hypervisor,nova-compute通過api調用hypervisor,,nova-compute支援那種api就可以調用那種hypervisor,如nova-compute支援libvirt api就可以調用libvirt支援的hypervisor(如kvm),xenapi可以調用xen
Cinder:塊存儲
用來建立,删除及管理volume(虛拟磁盤卷),以及給volume做快照等服務的元件
swift:分布式檔案系統,用來存儲鏡像檔案模闆
Horizion:
Openstack的web管理頁面,使用django架構開發。Web管理頁面包含了日常使用的大部分功能,提供給使用者一個最直覺的展現方式。很多簡單的二次開發都是從Horizon開始的。
Rabbitmq:
在openstack中,各個服務之間是通過消息來互動的,因為openstack使用AMQP作為消息傳遞的技術,是以rabbitmq,qpid,zeromq等支援AMQP的軟體都是被openstack所支援的。Rabbitmq是第一個被openstack所使用的消息傳遞軟體。Openstack通過AMQP實作RPC服務,來保證不同元件之間的通信,rabbitmq是控制節點中的一個非常關鍵的服務。
虛拟機運作在nova節點上的,所有元件都圍繞vm工作
keystone是openstack的元件之一,用于為openstack家族中的其他元件成員提供統一的認證服務,包括身份驗證、令牌發放和校驗、服務清單、使用者權限定義等。其中服務清單展現在使用者登入openstack系統後能夠使用的計算,網絡,存儲等服務的清單。通過下面的圖可以看出openstack中所有元件的認證,都需要keystone的參與,是以keystone自身的高可用也非常重要。
keystone服務主要有兩個功能
1. 實作使用者管理:主要是認證和授權
Keystone實作認證的方式有兩種:token認證,使用者名密碼認證
2. 實作服務管理:openstack叢集中每一個服務都有可能在獨立的節點上,這些節點的IP位址,監聽的端口,通路路徑uri都要在Identity中進行注冊,部署identity後,隻需向外輸出一個identity的路徑就可以查找到其他元件(p_w_picpath,nova,compute…)的通路路徑了。即存儲所有可用服務的資訊,包含其API的通路入口(API endpoint路徑)。
keystone的關鍵術語:
User:一個user可以關聯至多個tenant
Tenant(租戶):一個tenant對應一個project或一個組織,一個租戶相當于一個公司或一個項目,openstack是可以實作公有雲的,每一個項目中也有可能會包含多個虛拟機執行個體,項目也可以是一個tenant
Tenant的另一種解釋:Project(Tenant):可以了解為一個人、或服務所擁有的資源集合。在一個Project(Tenant)中可以包含多個User,每一個User都會根據權限的劃分來使用Project(Tenant)中的資源。比如通過Nova建立虛拟機時要指定到某個Project中,在Cinder建立卷也要指定到某個Project中。User通路Project的資源前,必須要與該Project關聯,并且指定User在Project下的Role。
Role:角色主要實作向User授權的,openstack有幾個内置的角色,admin,member等
Token:定義了令牌的有效時間和令牌中使用者的權限,項目等基本資訊
Service:對應業務模型服務,如計算(compute),存儲(volume),鏡像(Glance)等
Endpoint:服務的通路入口每個服務都會有自己的通路入口,也稱之為通路端點。
Endpoint:一個可以通過網絡來通路和定位某個Openstack service的位址,通常是一個URL。比如,當Nova需要通路Glance服務去擷取p_w_picpath 時,Nova通過通路Keystone拿到Glance的endpoint,然後通過通路該endpoint去擷取Glance服務。我們可以通過Endpoint的region屬性去定義多個region。Endpoint 使用對象分為三類:
admin url –>給admin使用者使用,Post:35357
internal url –> OpenStack内部服務使用來跟别的服務通信,Port:5000
public url –>其它使用者可以通路的位址,Post:5000
建立完service後建立API EndPoint. 在openstack中,每一個service都有三種endpoints. Admin, public, internal。 Admin是用作管理用途的,如它能夠修改user/tenant(project)。 public 是讓客戶調用的,比如可以部署在外網上讓客戶可以管理自己的雲。internal是openstack内部調用的。三種endpoints 在網絡上開放的權限一般也不同。Admin通常隻能對内網開放,public通常可以對外網開放internal通常隻能對安裝有openstack服務的機器開放。