雲計算(cloud computing)是基於互聯網的相關服務的增長、使用和交付模式,一般涉及經過互聯網來提供動態易擴展且常常是虛擬化的資源。雲是網絡、互聯網的一種比喻說法。過去在圖中每每用雲來表示電信網,後來也用來表示互聯網和底層基礎設施的抽象。所以,雲計算甚至可讓你體驗每秒10萬億次的運算能力,擁有這麼強大的計算能力能夠模擬核爆炸、預測氣候變化和市場發展趨勢。用戶經過電腦、筆記本、手機等方式接入數據中心,按本身的需求進行運算。
美國國家標準與技術研究院(NIST)定義:雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問, 進入可配置的計算資源共享池(資源包括網絡,服務器,存儲,應用軟件,服務),這些資源可以被快速提供,只需投入不多的管理工做,或與服務供應商進行不多的交互。XenSystem,以及在國外已經很是成熟的Intel 和IBM,各類「雲計算」的應用服務範圍正日漸擴大,影響力也無可估量。
不一樣的「雲」對應着不一樣的基礎設施。下面是三種廣義的「雲」:html
openstack是(infrastructure as a service,基礎設置即服務)IAAS架構的實現,OpenStack是一個由NASA(美國國家航空航天局)和Rackspace合做研發併發起的,以Apache許可證受權的自由軟件和開放源代碼項目。
OpenStack是一個開源的雲計算管理平臺項目,由幾個主要的組件組合起來完成具體工做。OpenStack支持幾乎全部類型的雲環境,項目目標是提供實施簡單、可大規模擴展、豐富、標準統一的雲計算管理平臺。OpenStack經過各類互補的服務提供了基礎設施即服務(IaaS)的解決方案,每一個服務提供API以進行集成。
OpenStack是一個旨在爲公共及私有云的建設與管理提供軟件的開源項目。它的社區擁有超過130家企業及1350位開發者,這些機構與我的都將OpenStack做爲基礎設施即服務(IaaS)資源的通用前端。OpenStack項目的首要任務是簡化雲的部署過程併爲其帶來良好的可擴展性。本文但願經過提供必要的指導信息,幫助你們利用OpenStack前端來設置及管理本身的公共雲或私有云。
OpenStack雲計算平臺,幫助服務商和企業內部實現相似於 Amazon EC2 和 S3 的雲基礎架構服務(Infrastructure as a Service, IaaS)。OpenStack 包含兩個主要模塊:Nova 和 Swift,前者是 NASA 開發的虛擬服務器部署和業務計算模塊;後者是 Rackspace開發的分佈式雲存儲模塊,二者能夠一塊兒用,也能夠分開單獨用。OpenStack除了有 Rackspace 和 NASA 的大力支持外,還有包括 Dell、Citrix、 Cisco、 Canonical等重量級公司的貢獻和支持,發展速度很是快,有取代另外一個業界領先開源雲平臺 Eucalyptus 的態勢。
前端
openstack的核心組件是計算、網絡和存儲,是爲了簡化資源的管理和分配,把資源劃分爲三個比較大的資源池,對外經過API進行交互,openstack相似於一個開源的AWS,有不少功能和API和AWS是相同的,所以AWS底層也是使用的KVM虛擬化,當前最新的是N版,每半年更新一次新版本,已經從A-N,從G版之後國內的使用用戶愈來愈多,一下是歷史版本更新時間:
html5
各組件的功能:
整個OpenStack是由控制節點,計算節點,網絡節點,存儲節點四大部分組成。
其中:
控制節點負責對其他節點的控制,包含虛擬機創建,遷移,網絡分配,存儲分配等等
計算節點負責虛擬機運行
網絡節點負責對外網絡與內網絡之間的通訊
存儲節點負責對虛擬機的額外存儲管理等等node
控制節點架構:
控制節點包括如下服務web
1)管理支持服務包含MySQL與Qpid兩個服務
MySQL:數據庫做爲基礎/擴展服務產生的數據存放的地方
Qpid:消息代理(也稱消息中間件)爲其餘各類服務之間提供了統一的消息通訊服務算法
2)基礎管理服務包含Keystone,Glance,Nova,Neutron,Horizon五個服務
Keystone:認證管理服務,提供了其他全部組件的認證信息/令牌的管理,建立,修改等等,使用MySQL做爲統一的數據庫
Glance:鏡像管理服務,提供了對虛擬機部署的時候所能提供的鏡像的管理,包含鏡像的導入,格式,以及製做相應的模板
Nova:計算管理服務,提供了對計算節點的Nova的管理,使用Nova-API進行通訊
Neutron:網絡管理服務,提供了對網絡節點的網絡拓撲管理,同時提供Neutron在Horizon的管理面板
Horizon:控制檯服務,提供了以Web的形式對全部節點的全部服務的管理,一般把該服務稱爲DashBoard數據庫
3)擴展管理服務包含Cinder,Swift,Trove,Heat,Centimeter五個服務
Cinder:提供管理存儲節點的Cinder相關,同時提供Cinder在Horizon中的管理面板
Swift:提供管理存儲節點的Swift相關,同時提供Swift在Horizon中的管理面板
Trove:提供管理數據庫節點的Trove相關,同時提供Trove在Horizon中的管理面板
Heat:提供了基於模板來實現雲環境中資源的初始化,依賴關係處理,部署等基本操做,也能夠解決自動收縮,負載均衡等高級特性。
Centimeter:提供對物理資源以及虛擬資源的監控,並記錄這些數據,對該數據進行分析,在必定條件下觸發相應動做swift
控制節點通常來講只須要一個網絡端口用於通訊/管理各個節點後端
網絡節點架構
網絡節點僅包含Neutron服務
Neutron:負責管理私有網段與公有網段的通訊,以及管理虛擬機網絡之間的通訊/拓撲,管理虛擬機之上的防火等等api
網絡節點包含三個網絡端口
eth0:用於與控制節點進行通訊
eth1:用於與除了控制節點以外的計算/存儲節點之間的通訊
eth2:用於外部的虛擬機與相應網絡之間的通訊
計算節點架構
計算節點包含Nova,Neutron,Telemeter三個服務
1)基礎服務
Nova:提供虛擬機的建立,運行,遷移,快照等各類圍繞虛擬機的服務,並提供API與控制節點對接,由控制節點下發任務
Neutron:提供計算節點與網絡節點之間的通訊服務
2)擴展服務
Telmeter:提供計算節點的監控代理,將虛擬機的狀況反饋給控制節點,是Centimeter的代理服務
計算節點包含最少兩個網絡端口
eth0:與控制節點進行通訊,受控制節點統一調配
eth1:與網絡節點,存儲節點進行通訊
存儲節點架構
存儲節點包含Cinder,Swift等服務
Cinder:塊存儲服務,提供相應的塊存儲,簡單來講,就是虛擬出一塊磁盤,能夠掛載到相應的虛擬機之上,不受文件系統等因素影響,對虛擬機來講,這個操做就像是新加了一塊硬盤,能夠完成對磁盤的任何操做,包括掛載,卸載,格式化,轉換文件系統等等操做,大多應用於虛擬機空間不足的狀況下的空間擴容等等
Swift:對象存儲服務,提供相應的對象存儲,簡單來講,就是虛擬出一塊磁盤空間,能夠在這個空間當中存放文件,也僅僅只能存放文件,不能進行格式化,轉換文件系統,大多應用於雲磁盤/文件
存儲節點包含最少兩個網絡接口
eth0:與控制節點進行通訊,接受控制節點任務,受控制節點統一調配
eth1:與計算/網絡節點進行通訊,完成控制節點下發的各種任務
openstack經過Nova調用KVM/XEN/VMWARE等虛擬機化技術建立虛擬機,即openstack是一個管理平臺框架,支持衆多的虛擬化管理,cinder存儲支持GlusterFS、ISCSI、MFS等存儲技術給虛擬機使用,即openstack不會綁定某一個應用,而是兼容衆多的相關技術,所以火的一塌糊塗!
Keystone爲全部的OpenStack組件提供認證和訪問策略服務,它依賴自身REST(基於Identity API)系統進行工做,主要對(但不限於)Swift、Glance、Nova等進行認證與受權。事實上,受權經過對動做消息來源者請求的合法性進行鑑定。
重要組成:
下圖顯示了身份認證服務流程:
Keystone採用兩種受權方式,一種基於用戶名/密碼,另外一種基於令牌(Token)。
除此以外,Keystone提供如下三種服務:
keystone認證服務注意點:
Nova是OpenStack計算的彈性控制器。OpenStack雲實例生命期所需的各類動做都將由Nova進行處理和支撐,這就意味着Nova以管理平臺的身份登場,負責管理整個雲的計算資源、網絡、受權及測度。雖然Nova自己並不提供任何虛擬能力,可是它將使用libvirt API與虛擬機的宿主機進行交互。Nova經過Web服務API來對外提供處理接口,並且這些接口與Amazon的Web服務接口是兼容的。
功能及特色:
Nova彈性雲(OpenStack計算部件)包含如下主要部分:
euca-bundle-image
生成證書。僅僅是在EC2 API的請求中使用OpenStack鏡像服務是IaaS的核心服務,如同 :ref:get_started_conceptual_architecture
所示。它接受磁盤鏡像或服務器鏡像API請求,和來自終端用戶或OpenStack計算組件的元數據定義。它也支持包括OpenStack對象存儲在內的多種類型倉庫上的磁盤鏡像或服務器鏡像存儲。
大量週期性進程運行於OpenStack鏡像服務上以支持緩存。同步複製(Replication)服務保證集羣中的一致性和可用性。其它週期性進程包括auditors, updaters, 和 reapers。
OpenStack鏡像服務包括如下組件:
OpenStack Networking(neutron),容許建立、插入接口設備,這些設備由其餘的OpenStack服務管理。插件式的實現能夠容納不一樣的網絡設備和軟件,爲OpenStack架構與部署提供了靈活性。
它包含下列組件:
OpenStack網絡主要和OpenStack計算交互,以提供網絡鏈接到它的實例。
網絡服務提供網絡,子網以及路由這些對象的抽象概念。每一個抽象概念都有本身的功能,能夠模擬對應的物理設備:網絡包括子網,路由在不一樣的子網和網絡間進行路由轉發。
對於任意一個給定的網絡都必須包含至少一個外部網絡。不想其餘的網絡那樣,外部網絡不只僅是一個定義的虛擬網絡。相反,它表明了一種OpenStack安裝以外的能從物理的,外部的網絡訪問的視圖。外部網絡上的IP地址可供外部網絡上的任意的物理設備所訪問
外部網絡以外,任何 Networking 設置擁有一個或多個內部網絡。這些軟件定義的網絡直接鏈接到虛擬機。僅僅在給定網絡上的虛擬機,或那些在經過接口鏈接到相近路由的子網上的虛擬機,能直接訪問鏈接到那個網絡上的虛擬機。
若是外部網絡想要訪問實例或者相反實例想要訪問外部網絡,那麼網絡之間的路由就是必要的了。每個路由都配有一個網關用於鏈接到外部網絡,以及一個或多個鏈接到內部網絡的接口。就像一個物理路由同樣,子網能夠訪問同一個路由上其餘子網中的機器,而且機器也能夠訪問路由的網關訪問外部網絡。
另外,你能夠將外部網絡的IP地址分配給內部網絡的端口。無論何時一旦有鏈接鏈接到子網,那個鏈接被稱做端口。你能夠給實例的端口分配外部網絡的IP地址。經過這種方式,外部網絡上的實體能夠訪問實例.
網絡服務一樣支持安全組。安全組容許管理員在安全組中定義防火牆規則。一個實例能夠屬於一個或多個安全組,網絡爲這個實例配置這些安全組中的規則,阻止或者開啓端口,端口範圍或者通訊類型。
每個Networking使用的插件都有其自有的概念。雖然對操做VNI和OpenStack環境不是相當重要的,但理解這些概念能幫助你設置Networking。全部的Networking安裝使用了一個核心插件和一個安全組插件(或僅是空操做安全組插件)。另外,防火牆即服務(FWaaS)和負載均衡即服務(LBaaS)插件是可用的。
Dashboard(horizon)是一個web接口,使得雲平臺管理員以及用戶能夠管理不一樣的Openstack資源以及服務。
Horizon具備以下一些特色:
塊存儲服務(cinder)爲實例提供塊存儲。存儲的分配和消耗是由塊存儲驅動器,或者多後端配置的驅動器決定的。還有不少驅動程序可用:NAS/SAN,NFS,ISCSI,Ceph等。
典型狀況下,塊服務API和調度器服務運行在控制節點上。取決於使用的驅動,卷服務器能夠運行在控制節點、計算節點或單獨的存儲節點。
OpenStack塊存儲服務(cinder)爲虛擬機添加持久的存儲,塊存儲提供一個基礎設施爲了管理卷,以及和OpenStack計算服務交互,爲實例提供卷。此服務也會激活管理卷的快照和卷類型的功能。
塊存儲服務一般包含下列組件:
cinder-volume
執行。cinder-scheduler
的進程進行直接交互。它也能夠與這些進程經過一個消息隊列進行交互。cinder-volume
服務響應送到塊存儲服務的讀寫請求來維持狀態。它也能夠和多種存儲提供者在驅動架構下進行交互。nova-scheduler
組件相似。cinder-backup
服務提供任何種類備份捲到一個備份存儲提供者。就像cinder-volume
服務,它與多種存儲提供者在驅動架構下進行交互。Swift爲OpenStack提供一種分佈式、持續虛擬對象存儲,它相似於Amazon Web Service的S3簡單存儲服務。Swift具備跨節點百級對象的存儲能力。Swift內建冗餘和失效備援管理,也可以處理歸檔和媒體流,特別是對大數據(千兆字節)和大容量(多對象數量)的測度很是高效。
swift功能及特色:
Swift代理服務器
用戶都是經過Swift-API與代理服務器進行交互,代理服務器正是接收外界請求的門衛,它檢測合法的實體位置並路由它們的請求。
此外,代理服務器也同時處理實體失效而轉移時,故障切換的實體重複路由請求。
Swift對象服務器
對象服務器是一種二進制存儲,它負責處理本地存儲中的對象數據的存儲、檢索和刪除。對象都是文件系統中存放的典型的二進制文件,具備擴展文件屬性的元數據(xattr)。
注意:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支持,可是並無有效測試證實在XFS,JFS,ReiserFS,Reiser4和ZFS下也一樣能運行良好。不過,XFS被認爲是當前最好的選擇。
Swift容器服務器
容器服務器將列出一個容器中的全部對象,默認對象列表將存儲爲SQLite文件(譯者注:也能夠修改成MySQL,安裝中就是以MySQL爲例)。容器服務器也會統計容器中包含的對象數量及容器的存儲空間耗費。
Swift帳戶服務器
帳戶服務器與容器服務器相似,將列出容器中的對象。
Ring(索引環)
Ring容器記錄着Swift中物理存儲對象的位置信息,它是真實物理存儲位置的實體名的虛擬映射,相似於查找及定位不一樣集羣的實體真實物理位置的索引服務。這裏所謂的實體指帳戶、容器、對象,它們都擁有屬於本身的不一樣的Rings。
裸金屬服務(ironic)
裸金屬服務是提供管理和準備物理硬件支持的組件的集合。
容器的基礎設施管理服務(magnum)
容器的基礎設施管理服務(magnum)是OpenStack API服務,它使容器編排引擎(COE),好比Docker Swarm, Kubernetes和Mesos,成爲了OpenStack頭等資源。
數據庫服務(trove)
數據庫服務(trove)提供了數據庫引擎的雲部署功能。
DNS service (designate)
The DNS service (designate) provides cloud provisioning functionality for DNS Zones and Recordsets.
祕鑰管理器服務
密鑰管理服務爲存儲提供了RESTful API,以及密鑰數據,好比口令、加密密鑰和X.509證書。
雲消息服務(zaqar)
雲消息服務容許開發人員共享分佈式應用組件間的數據來完成不一樣任務,而不會丟失消息或要求每一個組件老是可用。
對象存儲服務(swift)
對象存儲服務(swift)經過REST API提供對象存儲和檢索的訪問入口。
編排服務(heat)
The Orchestration service (heat) uses a Heat Orchestration Template (HOT) to create and manage cloud resources.
共享文件系統服務(manila)
共享文件系統服務(manila)提供了共享或分佈式文件系統的協同訪問。
監測告警服務(aodh)
當收集到的測量或事件數據符合預約義的規則時,監測告警服務就會觸發告警。
Telemetry 數據收集服務(ceilometer)
Telemetry 數據收集服務提供以下功能:
這裏以建立一個虛擬機爲例來了解 OpenStack 是如何工做的,下面的圖是 OpenStack 建立虛擬機整個工做過程:
虛擬機建立過程:
參考資料:
https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/common/conventions.html
http://www.javashuo.com/article/p-oyhvpgwy-ew.html
http://www.javashuo.com/article/p-cbtcxhln-z.html