OpenStack之基礎知識

1、雲計算

雲計算(cloud computing)是基於互聯網的相關服務的增長、使用和交付模式,一般涉及經過互聯網來提供動態易擴展且常常是虛擬化的資源。雲是網絡、互聯網的一種比喻說法。過去在圖中每每用雲來表示電信網,後來也用來表示互聯網和底層基礎設施的抽象。所以,雲計算甚至可讓你體驗每秒10萬億次的運算能力,擁有這麼強大的計算能力能夠模擬核爆炸、預測氣候變化和市場發展趨勢。用戶經過電腦、筆記本、手機等方式接入數據中心,按本身的需求進行運算。
美國國家標準與技術研究院(NIST)定義:雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問, 進入可配置的計算資源共享池(資源包括網絡,服務器,存儲,應用軟件,服務),這些資源可以被快速提供,只需投入不多的管理工做,或與服務供應商進行不多的交互。XenSystem,以及在國外已經很是成熟的Intel 和IBM,各類「雲計算」的應用服務範圍正日漸擴大,影響力也無可估量。
不一樣的「雲」對應着不一樣的基礎設施。下面是三種廣義的「雲」:html

  • 基礎設施即服務(IaaS)
  • 平臺即服務(PaaS)
  • 軟件即服務(SaaS)

2、OpenStack

2.1 openstack介紹

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 的態勢。
前端

2.2 歷史版本信息

openstack的核心組件是計算、網絡和存儲,是爲了簡化資源的管理和分配,把資源劃分爲三個比較大的資源池,對外經過API進行交互,openstack相似於一個開源的AWS,有不少功能和API和AWS是相同的,所以AWS底層也是使用的KVM虛擬化,當前最新的是N版,每半年更新一次新版本,已經從A-N,從G版之後國內的使用用戶愈來愈多,一下是歷史版本更新時間:
html5

2.3 OpenStack的架構


各組件的功能:
整個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不會綁定某一個應用,而是兼容衆多的相關技術,所以火的一塌糊塗!

3、組件詳解

1.OpenStack認證服務(Keystone)

Keystone爲全部的OpenStack組件提供認證和訪問策略服務,它依賴自身REST(基於Identity API)系統進行工做,主要對(但不限於)Swift、Glance、Nova等進行認證與受權。事實上,受權經過對動做消息來源者請求的合法性進行鑑定。
重要組成:

  • 服務器
    一箇中心化的服務器使用RESTful 接口來提供認證和受權服務。
  • Drivers
    驅動或服務後端被整合進集中式服務器中。它們被用來訪問OpenStack外部倉庫的身份信息, 而且它們可能已經存在於OpenStack被部署在的基礎設施(例如,SQL數據庫或LDAP服務器)中。
  • Modules
    中間件模塊運行於使用身份認證服務的OpenStack組件的地址空間中。這些模塊攔截服務請求,取出用戶憑據,並將它們送入中央是服務器尋求受權。中間件模塊和OpenStack組件間的整合使用Python Web服務器網關接口。

下圖顯示了身份認證服務流程:

Keystone採用兩種受權方式,一種基於用戶名/密碼,另外一種基於令牌(Token)。

除此以外,Keystone提供如下三種服務:

  • 令牌服務:含有受權用戶的受權信息
  • 目錄服務:含有用戶合法操做的可用服務列表
  • 策略服務:利用Keystone具體指定用戶或羣組某些訪問權限

keystone認證服務注意點:

  • 服務入口:如Nova、Swift和Glance同樣每一個OpenStack服務都擁有一個指定的端口和專屬的URL,咱們稱其爲入口(endpoints)。
  • 區位:在某個數據中心,一個區位具體指定了一處物理位置。在典型的雲架構中,若是不是全部的服務都訪問分佈式數據中心或服務器的話,則也稱其爲區位。
  • 用戶:Keystone受權使用者
      PS:表明一個個體,OpenStack以用戶的形式來受權服務給它們。用戶擁有證書(credentials),且可能分配給一個或多個租戶。通過驗證後,會爲每一個單獨的租戶提供一個特定的令牌。
  • 服務:整體而言,任何經過Keystone進行鏈接或管理的組件都被稱爲服務。舉個例子,咱們能夠稱Glance爲Keystone的服務。
  • 角色:爲了維護安全限定,就雲內特定用戶可執行的操做而言,該用戶關聯的角色是很是重要的。
      PS:一個角色是應用於某個租戶的使用權限集合,以容許某個指定用戶訪問或使用特定操做。角色是使用權限的邏輯分組,它使得通用的權限能夠簡單地分組並綁定到與某個指定租戶相關的用戶。
  • 租間:租間指的是具備所有服務入口並配有特定成員角色的一個項目。
      PS:一個租間映射到一個Nova的「project-id」,在對象存儲中,一個租間能夠有多個容器。根據不一樣的安裝方式,一個租間能夠表明一個客戶、賬號、組織或項目。

2.OpenStack計算設施(Nova)

Nova是OpenStack計算的彈性控制器。OpenStack雲實例生命期所需的各類動做都將由Nova進行處理和支撐,這就意味着Nova以管理平臺的身份登場,負責管理整個雲的計算資源、網絡、受權及測度。雖然Nova自己並不提供任何虛擬能力,可是它將使用libvirt API與虛擬機的宿主機進行交互。Nova經過Web服務API來對外提供處理接口,並且這些接口與Amazon的Web服務接口是兼容的。

功能及特色: 

  • 實例生命週期管理
  • 計算資源管理
  • 網絡與受權管理
  • 基於REST的API
  • 異步連續通訊
  • 支持各類宿主:Xen、XenServer/XCP、KVM、UML、VMware vSphere及Hyper-V

Nova彈性雲(OpenStack計算部件)包含如下主要部分:

  • API Server(nova-api)
    API服務器提供了雲設施與外界交互的接口,它是外界用戶對雲實施管理的惟一通道。經過使用web服務來調用各類EC2的API,接着API服務器便經過消息隊列把請求送達至雲內目標設施進行處理。做爲對EC2-api的替代,用戶也可使用OpenStack的原生API,咱們把它叫作「OpenStack API」。
    接收和響應來自最終用戶的計算API請求。此服務支持OpenStack計算服務API,Amazon EC2 API,以及特殊的管理API用於賦予用戶作一些管理的操做。它會強制實施一些規則,發起多數的編排活動,例如運行一個實例。
  • 消息隊列(rabbit-mq server)
    OpenStack內部在遵循AMQP(高級消息隊列協議)的基礎上採用消息隊列進行通訊。Nova對請求應答進行異步調用,當請求接收後便則當即觸發一個回調。因爲使用了異步通訊,不會有用戶的動做被長置於等待狀態。例如,啓動一個實例或上傳一份鏡像的過程較爲耗時,API調用就將等待返回結果而不影響其它操做,在此異步通訊起到了很大做用,使整個系統變得更加高效。
  • 運算工做站(nova-compute)
    運算工做站的主要任務是管理實例的整個生命週期。他們經過消息隊列接收請求並執行,從而對實例進行各類操做。在典型實際生產環境下,會架設許多運算工做站,根據調度算法,一個實例能夠在可用的任意一臺運算工做站上部署。
    一個持續工做的守護進程,經過Hypervior的API來建立和銷燬虛擬機實例。例如:
    XenServer/XCP 的 XenAPI
    KVM 或 QEMU 的 libvirt
    VMware 的 VMwareAPI
    過程是蠻複雜的。最爲基本的,守護進程贊成了來自隊列的動做請求,轉換爲一系列的系統命令如啓動一個KVM實例,而後,到數據庫中更新它的狀態。
  • 網絡控制器(nova-network)
    網絡控制器處理主機的網絡配置,例如IP地址分配,配置項目VLAN,設定安全羣組以及爲計算節點配置網絡。
  • 卷管理(nova-volume)
    卷工做站管理基於LVM的 實例卷,它可以爲一個實例建立、刪除、附加捲,也能夠從一個實例中分離卷。卷管理爲什麼如此重要?由於它提供了一種保持實例持續存儲的手段,好比當結束一個 實例後,根分區若是是非持續化的,那麼對其的任何改變都將丟失。但是,若是從一個實例中將卷分離出來,或者爲這個實例附加上卷的話,即便實例被關閉,數據 仍然保存其中。這些數據能夠經過將卷附加到原實例或其餘實例的方式而從新訪問。
    所以,爲了往後訪問,重要數據務必要寫入卷中。這種應用對於數據服務器實例的存儲而言,尤其重要。
  • 調度器(nova-scheduler)
    拿到一個來自隊列請求虛擬機實例,而後決定那臺計算服務器主機來運行它。
    調度器負責把nova-API調用送達給目標。調度器以名爲「nova-schedule」的守護進程方式運行,並根據調度算法從可用資源池中恰當地選擇運算服務器。有不少因素均可以影響調度結果,好比負載、內存、子節點的遠近、CPU架構等等。強大的是nova調度器採用的是可插入式架構。
    目前nova調度器使用了幾種基本的調度算法:
    隨機化:主機隨機選擇可用節點;
    可用化:與隨機類似,只是隨機選擇的範圍被指定;
    簡單化:應用這種方式,主機選擇負載最小者來運行實例。負載數據能夠從別處得到,如負載均衡服務器。
  • nova-cert
    服務器守護進程向Nova Cert服務提供X509證書。用來爲euca-bundle-image生成證書。僅僅是在EC2 API的請求中使用
  • nova-novncproxy
    提供一個代理,用於訪問正在運行的實例,經過VNC協議,支持基於瀏覽器的novnc客戶端。
  • nova-spicehtml5proxy
    提供一個代理,用於訪問正在運行的實例,經過 SPICE 協議,支持基於瀏覽器的 HTML5 客戶端。
  • nova-xvpvncproxy
    提供一個代理,用於訪問正在運行的實例,經過VNC協議,支持OpenStack特定的Java客戶端。
  • SQL數據庫
    存儲構建時和運行時的狀態,爲雲基礎設施,包括有:
    可用實例類型
    使用中的實例
    可用網絡
    項目

3.OpenStack鏡像服務(Glance)

OpenStack鏡像服務是IaaS的核心服務,如同 :ref:get_started_conceptual_architecture所示。它接受磁盤鏡像或服務器鏡像API請求,和來自終端用戶或OpenStack計算組件的元數據定義。它也支持包括OpenStack對象存儲在內的多種類型倉庫上的磁盤鏡像或服務器鏡像存儲。

大量週期性進程運行於OpenStack鏡像服務上以支持緩存。同步複製(Replication)服務保證集羣中的一致性和可用性。其它週期性進程包括auditors, updaters, 和 reapers。

OpenStack鏡像服務包括如下組件:

  • glance-api
    接收鏡像API的調用,諸如鏡像發現、恢復、存儲。
  • glance-registry
    存儲、處理和恢復鏡像的元數據,元數據包括項諸如大小和類型。
  • 數據庫
    存放鏡像元數據,用戶是能夠依據我的喜愛選擇數據庫的,多數的部署使用MySQL或SQLite。
  • 鏡像文件的存儲倉庫
    Various repository types are supported including normal file systems (or any filesystem mounted on the glance-api controller node), Object Storage, RADOS block devices, VMware datastore, and HTTP. Note that some repositories will only support read-only usage.
  • 元數據定義服務
    通用的API,是用於爲廠商,管理員,服務,以及用戶自定義元數據。這種元數據可用於不一樣的資源,例如鏡像,工件,卷,配額以及集合。一個定義包括了新屬性的鍵,描述,約束以及能夠與之關聯的資源的類型。

4.OpenStack網絡服務(neutron)

OpenStack Networking(neutron),容許建立、插入接口設備,這些設備由其餘的OpenStack服務管理。插件式的實現能夠容納不一樣的網絡設備和軟件,爲OpenStack架構與部署提供了靈活性。

它包含下列組件:

  • neutron-server
    接收和路由API請求到合適的OpenStack網絡插件,以達到預想的目的。
  • OpenStack網絡插件和代理
    Plug and unplug ports, create networks or subnets, and provide IP addressing. These plug-ins and agents differ depending on the vendor and technologies used in the particular cloud. OpenStack Networking ships with plug-ins and agents for Cisco virtual and physical switches, NEC OpenFlow products, Open vSwitch, Linux bridging, and the VMware NSX product.
    常見的代理L3(3層),DHCP(動態主機IP地址),以及插件代理。
  • 消息隊列
    大多數的OpenStack Networking安裝都會用到,用於在neutron-server和各類各樣的代理進程間路由信息。也爲某些特定的插件扮演數據庫的角色,以存儲網絡狀態。

OpenStack網絡主要和OpenStack計算交互,以提供網絡鏈接到它的實例。

網絡(neutron)概念

網絡服務提供網絡,子網以及路由這些對象的抽象概念。每一個抽象概念都有本身的功能,能夠模擬對應的物理設備:網絡包括子網,路由在不一樣的子網和網絡間進行路由轉發。

對於任意一個給定的網絡都必須包含至少一個外部網絡。不想其餘的網絡那樣,外部網絡不只僅是一個定義的虛擬網絡。相反,它表明了一種OpenStack安裝以外的能從物理的,外部的網絡訪問的視圖。外部網絡上的IP地址可供外部網絡上的任意的物理設備所訪問

外部網絡以外,任何 Networking 設置擁有一個或多個內部網絡。這些軟件定義的網絡直接鏈接到虛擬機。僅僅在給定網絡上的虛擬機,或那些在經過接口鏈接到相近路由的子網上的虛擬機,能直接訪問鏈接到那個網絡上的虛擬機。

若是外部網絡想要訪問實例或者相反實例想要訪問外部網絡,那麼網絡之間的路由就是必要的了。每個路由都配有一個網關用於鏈接到外部網絡,以及一個或多個鏈接到內部網絡的接口。就像一個物理路由同樣,子網能夠訪問同一個路由上其餘子網中的機器,而且機器也能夠訪問路由的網關訪問外部網絡。

另外,你能夠將外部網絡的IP地址分配給內部網絡的端口。無論何時一旦有鏈接鏈接到子網,那個鏈接被稱做端口。你能夠給實例的端口分配外部網絡的IP地址。經過這種方式,外部網絡上的實體能夠訪問實例.

網絡服務一樣支持安全組。安全組容許管理員在安全組中定義防火牆規則。一個實例能夠屬於一個或多個安全組,網絡爲這個實例配置這些安全組中的規則,阻止或者開啓端口,端口範圍或者通訊類型。

每個Networking使用的插件都有其自有的概念。雖然對操做VNI和OpenStack環境不是相當重要的,但理解這些概念能幫助你設置Networking。全部的Networking安裝使用了一個核心插件和一個安全組插件(或僅是空操做安全組插件)。另外,防火牆即服務(FWaaS)和負載均衡即服務(LBaaS)插件是可用的。

5.OpenStack管理的Web接口(Horizon)

Dashboard(horizon)是一個web接口,使得雲平臺管理員以及用戶能夠管理不一樣的Openstack資源以及服務。

Horizon具備以下一些特色:  

  • 實例管理:建立、終止實例,查看終端日誌,VNC鏈接,添加捲等
  • 訪問與安全管理:建立安全羣組,管理密匙對,設置浮動IP等
  • 偏好設定:對虛擬硬件模板能夠進行不一樣偏好設定
  • 鏡像管理:編輯或刪除鏡像
  • 查看服務目錄
  • 管理用戶、配額及項目用途
  • 用戶管理:建立用戶等
  • 卷管理:建立卷和快照
  • 對象存儲處理:建立、刪除容器和對象
  • 爲項目下載環境變量

6.OpenStack塊存儲服務(Cinder)

塊存儲服務(cinder)爲實例提供塊存儲。存儲的分配和消耗是由塊存儲驅動器,或者多後端配置的驅動器決定的。還有不少驅動程序可用:NAS/SAN,NFS,ISCSI,Ceph等。

典型狀況下,塊服務API和調度器服務運行在控制節點上。取決於使用的驅動,卷服務器能夠運行在控制節點、計算節點或單獨的存儲節點。

OpenStack塊存儲服務(cinder)爲虛擬機添加持久的存儲,塊存儲提供一個基礎設施爲了管理卷,以及和OpenStack計算服務交互,爲實例提供卷。此服務也會激活管理卷的快照和卷類型的功能。

塊存儲服務一般包含下列組件:

  • cinder-api
    接受API請求,並將其路由到cinder-volume執行。
  • cinder-volume
    與塊存儲服務和例如cinder-scheduler的進程進行直接交互。它也能夠與這些進程經過一個消息隊列進行交互。cinder-volume服務響應送到塊存儲服務的讀寫請求來維持狀態。它也能夠和多種存儲提供者在驅動架構下進行交互。
  • cinder-scheduler守護進程
    選擇最優存儲提供節點來建立卷。其與nova-scheduler組件相似。
  • cinder-backup daemon
    cinder-backup服務提供任何種類備份捲到一個備份存儲提供者。就像cinder-volume服務,它與多種存儲提供者在驅動架構下進行交互。
  • 消息隊列
    在塊存儲的進程之間路由信息。

7.OpenStack存儲服務(Swift)

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。

8.其餘服務

裸金屬服務(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 服務相關的計量數據。
  • 經過監測通知收集來自各個服務發送的事件和計量數據。
  • 將收集到的數據發佈到各個目標區,包括數據存儲區和消息隊列。

4、OpenStack工做流程

這裏以建立一個虛擬機爲例來了解 OpenStack 是如何工做的,下面的圖是 OpenStack 建立虛擬機整個工做過程:

虛擬機建立過程:

  • 1.界面或命令行經過RESTful API向keystone獲取認證信息。
  • 2.keystone經過用戶請求認證信息,並生成auth-token返回給對應的認證請求。
  • 3.界面或命令行經過RESTful API向nova-api發送一個boot instance的請求(攜帶auth-token)。
  • 4.nova-api接受請求後向keystone發送認證請求,查看token是否爲有效用戶和token。
  • 5.keystone驗證token是否有效,若有效則返回有效的認證和對應的角色(注:有些操做須要有角色權限才能操做)。
  • 6.經過認證後nova-api和數據庫通信。
  • 7.初始化新建虛擬機的數據庫記錄。
  • 8.nova-api經過rpc.call向nova-scheduler請求是否有建立虛擬機的資源(Host ID)。
  • 9.nova-scheduler進程偵聽消息隊列,獲取nova-api的請求。
  • 10.nova-scheduler經過查詢nova數據庫中計算資源的狀況,並經過調度算法計算符合虛擬機建立須要的主機。
  • 11.對於有符合虛擬機建立的主機,nova-scheduler更新數據庫中虛擬機對應的物理主機信息。
  • 12.nova-scheduler經過rpc.cast向nova-compute發送對應的建立虛擬機請求的消息。
  • 13.nova-compute會從對應的消息隊列中獲取建立虛擬機請求的消息。
  • 14.nova-compute經過rpc.call向nova-conductor請求獲取虛擬機消息。(Flavor)
  • 15.nova-conductor從消息隊隊列中拿到nova-compute請求消息。
  • 16.nova-conductor根據消息查詢虛擬機對應的信息。
  • 17.nova-conductor從數據庫中得到虛擬機對應信息。
  • 18.nova-conductor把虛擬機信息經過消息的方式發送到消息隊列中。
  • 19.nova-compute從對應的消息隊列中獲取虛擬機信息消息。
  • 20.nova-compute經過keystone的RESTfull API拿到認證的token,並經過HTTP請求glance-api獲取建立虛擬機所須要鏡像。
  • 21.glance-api向keystone認證token是否有效,並返回驗證結果。
  • 22.token驗證經過,nova-compute得到虛擬機鏡像信息(URL)。
  • 23.nova-compute經過keystone的RESTfull API拿到認證k的token,並經過HTTP請求neutron-server獲取建立虛擬機所須要的網絡信息。
  • 24.neutron-server向keystone認證token是否有效,並返回驗證結果。
  • 25.token驗證經過,nova-compute得到虛擬機網絡信息。
  • 26.nova-compute經過keystone的RESTfull API拿到認證的token,並經過HTTP請求cinder-api獲取建立虛擬機所須要的持久化存儲信息。
  • 27.cinder-api向keystone認證token是否有效,並返回驗證結果。
  • 28.token驗證經過,nova-compute得到虛擬機持久化存儲信息。
  • 29.nova-compute根據instance的信息調用配置的虛擬化驅動來建立虛擬機。

參考資料:
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

相關文章
相關標籤/搜索