OpenStack之Glance模塊

1、Glance服務

1.Glance架構

Glance架構是一個典型的CS架構,提供的也是標準的Rest接口,各個layer分層也是很清楚的。
html

2.Glance服務

Glance是OpenStack鏡像服務組件,glance服務默認監聽在9292端口,其接收REST API請求,而後經過其餘模塊(glance-registry及image store)來完成諸如鏡像的獲取、上傳、刪除等操做,Glance提供restful API能夠查詢虛擬機鏡像的metadata,而且能夠得到鏡像,經過Glance,虛擬機鏡像能夠被存儲到多種存儲上,好比簡單的文件存儲或者對象存儲(好比OpenStack中swift項目)是在建立虛擬機的時候,須要先把鏡像上傳到glance,對鏡像的列出鏡像、刪除鏡像和上傳鏡像都是經過glance進行管理。
mysql

3.Glance主要組件
  • glance-api
    glance-api是系統後臺運行的服務進程,對外提供REST API,響應image查詢、獲取和存儲的調用。
    glance-api不會真正處理請求。若是是與image metadata(元數據)相關的操做,glance-api會把請求轉發給 glance-registry。若是是與image自身存取相關的操做,glance-api會把請求轉發給該image的store backend。
  • glance-registry
    glance-registry負責與mysql數據交互,用於存儲或獲取鏡像的元數據(metadata),提供鏡像元數據相關的REST接口,經過glance-registry能夠向數據庫中寫入或獲取鏡像的各類數據,glance-registyr監聽的端口是9191,glance數據庫中有兩張表,一張是image表,一張是image property表,image表保存了鏡像格式、大小等信息,image property表保存了鏡像的定製化信息。
  • Database
    Image的metadata會保持到database中,主要使用MySQL和SQLite。
  • image store
    image store是一個存儲的接口層,經過這個接口glance能夠獲取鏡像,image store支持的存儲有Amazon的S三、openstack自己的swift、還有ceph、glusterFS、sheepdog等分佈式存儲,image store是鏡像保存與讀取的接口,可是它只是一個接口,具體的實現須要外部的支持,glance不須要配置消息隊列,可是須要配置數據庫和keystone。
    Glance本身並不存儲image。真正的image是存放在repository中的,Glance支持多種repository。以下:
A directory on a local file system(這是默認配置)
RADOS block devices
VMware datastore
Amazon S3
HTTP
OpenStack Block Storage (Cinder)
OpenStack Object Storage (Swift)
  • Metadata definition service
    對於廠商、管理員、服務常見的API來講,用戶有意地定義本身元數據。此元數據可用於不一樣類型的資源,如鏡像、卷、單個主機和集合。本服務能夠定義新屬性的鍵、描述、約束以及與之相關聯的資源類型。

4.Glance的格式

(1)磁盤格式
虛擬機鏡像的磁盤格式是底層磁盤鏡像的格式。如下是OpenStack支持的磁盤格式。
sql

格式說明:數據庫

  • 一、RAW
    RAW即常說的裸格式,它其實就是沒有格式,最大的特色就是簡單,數據寫入什麼就是什麼,不作任何修飾,因此再性能方面很不錯,甚至不須要啓動這個鏡像的虛擬機,只須要文件掛載便可直接讀寫內部數據。而且因爲RAW格式簡單,所以RAW和其餘格式之間的轉換也更容易。在KVM的虛擬化環境下,有不少使用RAW格式的虛擬機。
  • 二、QCOW2
    qcow2是qcow的升級版本,它是QEMU的CopyOn Write特性的磁盤格式,主要特性是磁盤文件大小能夠隨着數據的增加而增加。譬如建立一個10GB的虛擬機,實際虛擬機內部只用了5GB,那麼初始的qcow2磁盤文件大小就是5GB。與RAW相比,使用這種格式能夠節省一部分空間資源。
  • 三、VHD
    VHD也是一種通用的磁盤格式。微軟公司的Virtual PC和Hyper-V使用的就是VHD格式。VirtualBox也提供了對VHD的支持。若是要在OpenStack上使用Hyper-V的虛擬化,就應該上傳VHD格式的鏡像文件。
  • 四、VMDK
    VMware建立的一個虛擬機磁盤格式,目前也是一個開放的通用格式,除了VMware自家的產品外,QEMU和VirtualBox也提供了對VMDK格式的支持。
  • 五、VDI
    Oracle公司的VirtualBox虛擬軟件所使用的格式。
  • 六、ISO
    ISO是指一種存檔數據文件在光盤上的格式。
  • 七、AKI、ARI、AMI
    Amazon公司的AWS所使用的鏡像格式。

(2)容器格式
正如OpenStack glance也支持容器格式的概念,它描述了文件格式,幷包含關於實際虛擬機的額外元數據。json

如下是OpenStack Glance支持的Container格式。
swift

2、Glance處理流程

1.Glance請求流程

Client端發送請求,api端router.py中將請求下發,選擇相應的方法處理請求,通過中間auth, notifier, policy, quota到location,會調用到glance_store進行底端存儲,並返回存儲的位置信息,須要寫到數據庫中 在跟數據庫的交互中須要用到glance_registry,將鏡像的相關信息寫到數據庫中,值得注意的是會將上面鏡像存儲的位置信息location_uri寫入到數據庫中,在進行刪除等操做會直接從數據庫中讀取這個uri,進行刪除。api

2.Glance狀態流

上傳鏡像時Glance會顯示鏡像的各類狀態。當咱們第一步上傳鏡像時,第一步就是入隊列,通過短期的驗證,鏡像進入queued狀態,保存鏡像並開始上傳。以後鏡像會進入saving的狀態,表示尚未徹底上傳完畢。鏡像徹底上傳後,狀態會變成Active。若是上傳失敗,將會變成killed或deleted狀態。另外咱們還可使用命令停用或者從新激活徹底上傳成功的鏡像。安全

下圖爲glance鏡像的狀態流轉圖。
restful

狀態說明:網絡

  • queued
    在Glance registry裏已經經過驗證能夠開始存儲. 暫時沒有鏡像數據被上傳到glance,鏡像大小在上傳時設置爲0。
  • saving
    表示正在上傳鏡像到Glance。經過POST /images接口註冊鏡像,若是有x-image-meta-location http頭,這個鏡像將不會處於saving狀態(由於鏡像數據在其餘位置已經可用)。
  • active
    表示在glance裏是一個徹底可用的鏡像。當鏡像上傳成功後,會切換到這個狀態。.
  • deactivated
    表示不容許任何非管理的用戶訪問。禁止下載鏡像,同時也禁止因此可能獲取鏡像數據的操做,好比鏡像導出和鏡像克隆等操做。
  • killed
    表示上傳鏡像時發生錯誤,這個鏡像不可用。
  • deleted
    Glance仍然保留了鏡像的相關信息,但不能在被使用。這個狀態下的鏡像將會被自動刪除。
  • Deactivatingand Reactivating an image
    能夠停用鏡像。也能夠從新激活,或者刪除。當管理員對鏡像進行更新時,能夠先把鏡像停用,這樣鏡像對非管理員用戶就不可見了,當更新完成後,能夠從新激活鏡像,以便用戶能夠用更新後鏡像啓動虛擬機。

3、鏡像與實例

如前所述,磁盤鏡像做爲模板存儲。鏡像服務存儲和管理鏡像。實例是在計算節點上運行的單個虛擬機,計算節點管理這些實例。用戶能夠從用同一個鏡像啓動任意數量的實例。每一個啓動的實例都是基於鏡像的一個副本,因此實例上的任何修改都不會影響到鏡像。咱們能夠對正在運行實例作快照,並能夠用快照於啓動另外一個新的實例。

當咱們啓動一個實例時,咱們須要指定Flavor。Flavor定義了實例能夠有多少個虛擬CPU,多大的RAM以及臨時磁盤的大小。 OpenStack提供了預約義的flavor,咱們也能夠新建立和編輯Flavor。

下圖顯示了啓動實例的系統狀態。glance store包含必定數量的鏡像,計算節點包含可用的vcpu,內存和本地磁盤資源,cinder-volume包含必定數量的volume。

啓動實例以前,須要選擇一個鏡像,flavor和任何可選屬性。選定的 flavor提供一個系統盤,標記爲vda,另一個臨時盤被標記爲vdb,cinder-volume提供的volume被映射到第三個虛擬磁盤並將其稱爲vdc。

vdc使用iSCSI鏈接到cinder-volume。隨後計算節點提供vCPU和內存資源以後,該實例將從vda.啓動。該實例運行並更改磁盤上的數據。若是volume store位於單獨的網絡上,須要在計算節點nova.conf裏指定的my_block_storage_ip,將會經過存儲網絡直接通訊。

實例被刪除後, 除volume以外的其它資源都會被回收。臨時盤將會被清空,內存和vCPU資源被會被釋放。在這個過程當中鏡像不會發生任何改變。

4、Glance配置文件

Glance-api.conf :Glance api 服務配置文件.

Glance-registry.conf :Glanceregistry服務配置文件,用戶存儲鏡像有關的元數據。

glance-scrubber.conf :用於清理已刪除的鏡像的服務。

policy.json :鏡像服務的訪問控制。在這裏,咱們能夠定義角色和策略,是OpenStack Glance中的安全特性。

參考文章:
http://www.sohu.com/a/156310708_610730
http://www.bubuko.com/infodetail-2287562.html
https://www.2cto.com/net/201707/657859.html

相關文章
相關標籤/搜索