天天看點

OpenStack之基礎知識

本文介紹OpenStack基礎知識

一、雲計算

雲計算(cloud computing)是基于網際網路的相關服務的增加、使用和傳遞模式,通常涉及通過網際網路來提供動态易擴充且經常是虛拟化的資源。雲是網絡、網際網路的一種比喻說法。過去在圖中往往用雲來表示電信網,後來也用來表示網際網路和底層基礎設施的抽象。是以,雲計算甚至可以讓你體驗每秒10萬億次的運算能力,擁有這麼強大的計算能力可以模拟核爆炸、預測氣候變化和市場發展趨勢。使用者通過電腦、筆記本、手機等方式接入資料中心,按自己的需求進行運算。

美國國家标準與技術研究院(NIST)定義:雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡通路, 進入可配置的計算資源共享池(資源包括網絡,伺服器,存儲,應用軟體,服務),這些資源能夠被快速提供,隻需投入很少的管理工作,或與服務供應商進行很少的互動。XenSystem,以及在國外已經非常成熟的Intel 和IBM,各種“雲計算”的應用服務範圍正日漸擴大,影響力也無可估量。

不同的“雲”對應着不同的基礎設施。下面是三種廣義的“雲”:

  • 基礎設施即服務(IaaS)
  • 平台即服務(PaaS)
  • 軟體即服務(SaaS)

二、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 的态勢。

OpenStack之基礎知識
2.2 曆史版本資訊

openstack的核心元件是計算、網絡和存儲,是為了簡化資源的管理和配置設定,把資源劃分為三個比較大的資源池,對外通過API進行互動,openstack類似于一個開源的AWS,有很多功能和API和AWS是相同的,是以AWS底層也是使用的KVM虛拟化,目前最新的是N版,每半年更新一次新版本,已經從A-N,從G版以後國内的使用使用者越來越多,一下是曆史版本更新時間:

OpenStack之基礎知識
2.3 OpenStack的架構
OpenStack之基礎知識
OpenStack之基礎知識

各元件的功能:

整個OpenStack是由控制節點,計算節點,網絡節點,存儲節點四大部分組成。

其中:

控制節點負責對其餘節點的控制,包含虛拟機建立,遷移,網絡配置設定,存儲配置設定等等

計算節點負責虛拟機運作

網絡節點負責對外網絡與内網絡之間的通信

存儲節點負責對虛拟機的額外存儲管理等等

控制節點架構:

控制節點包括以下服務

  • 管理支援服務
  • 基礎管理服務
  • 擴充管理服務

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:提供對實體資源以及虛拟資源的監控,并記錄這些資料,對該資料進行分析,在一定條件下觸發相應動作

控制節點一般來說隻需要一個網絡端口用于通信/管理各個節點

網絡節點架構

網絡節點僅包含Neutron服務

Neutron:負責管理私有網段與公有網段的通信,以及管理虛拟機網絡之間的通信/拓撲,管理虛拟機之上的防火等等

網絡節點包含三個網絡端口

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不會綁定某一個應用,而是相容衆多的相關技術,是以火的一塌糊塗!

三、元件詳解

1.OpenStack認證服務(Keystone)

Keystone為所有的OpenStack元件提供認證和通路政策服務,它依賴自身REST(基于Identity API)系統進行工作,主要對(但不限于)Swift、Glance、Nova等進行認證與授權。事實上,授權通過對動作消息來源者請求的合法性進行鑒定。

重要組成:

  • 伺服器

    一個中心化的伺服器使用RESTful 接口來提供認證和授權服務。

  • Drivers

    驅動或服務後端被整合進集中式伺服器中。它們被用來通路OpenStack外部倉庫的身份資訊, 并且它們可能已經存在于OpenStack被部署在的基礎設施(例如,SQL資料庫或LDAP伺服器)中。

  • Modules

    中間件子產品運作于使用身份認證服務的OpenStack元件的位址空間中。這些子產品攔截服務請求,取出使用者憑據,并将它們送入中央是伺服器尋求授權。中間件子產品和OpenStack元件間的整合使用Python Web伺服器網關接口。

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

OpenStack之基礎知識

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 服務相關的計量資料。
  • 通過監測通知收集來自各個服務發送的事件和計量資料。
  • 将收集到的資料釋出到各個目标區,包括資料存儲區和消息隊列。

四、OpenStack工作流程

這裡以建立一個虛拟機為例來了解 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

https://www.cnblogs.com/klb561/p/8660264.html

https://www.cnblogs.com/resn/p/5870264.html