OpenStack_Glance

什麼是Glace

Glance即image service(鏡像服務),就是爲建立虛擬機提供鏡像的地方docker

爲何要有Glance

這個問題問的好,openstack就是構建Iaas平臺對外提供虛擬機的啊,構建虛擬機沒有鏡像怎麼行,並且還不能只有一個數據庫

Glance的功能

Glance服務使用戶可以發現,註冊,檢索虛擬機的鏡像,它提供一個可以查詢虛擬機鏡像元數據和檢索真實鏡像的REST API(實際上就是一個URL,glance就是經過url來標誌一個鏡像的)json

<Glance Server Location>/v1/image/<ID>後端

<Glance Server Location>:glance服務安裝的位置api

/v1:使用v1版本緩存

/images:請求的類型爲鏡像安全

/<ID>:一個uuid,在glance中全局惟一架構

Glance的兩個版本

在Newton以前的版本中,glance支持兩種REST API V1和V2,二者區別仍是很明顯的:dom

(1). V1只提供了基本的image和member操做功能:鏡像建立、刪除、下載、列表、詳細信息查詢、更新,以及鏡像tenant成員的建立、刪除和列表。工具

(2). V2除了支持V1的全部功能外,主要是增長了以下功能:

  • 鏡像 location 的添加、刪除和修改等操做
  • metadata  namespace 操做
  • image tag 操做   

(3).V1 和V2對 image store 的支持是相同的。

V1版本的實現,具備glance-api和glance-registry兩個WSGI服務,兩者都提供REST API,但須要強調的一點是:glance-registry提供的REST API是給glance-api使用的,即The registry is a private internal service meant for use by OpenStack Image service. Do not expose this service to users。

v2的實現就是將glance-registry集成到了glance-api內部,這麼作的好處是減小了一箇中間的處理環節

 在Newton版本中V1已通過時了,而且V1最終會被移除

鏡像的數據存放

鏡像的數據包括:1.鏡像元數據;2.鏡像自己即chunk

其中鏡像的元數據是經過glance-registry保存到數據庫中,而鏡像的chunk數據是經過Glance store Drivers存放到各類bakcend store中。

在配置glance時咱們使用file做爲後端,即將鏡像存放於本地文件系統中,上傳或者存儲鏡像的目錄位於按照glance服務的機器上(控制節點),默認目錄是:/var/lib/glance/images/,咱們應該確認該目錄有足夠的空間可使用。

須要特別強調的一點是:fileh後端一般位於控制節點自己,於是這種後端並不適用於多節點部署。

在glance服務上週星期的運行不少進程來支持緩存。在作glance集羣時要考慮使用複製服務來確保一致性和可用性,其餘的週期性的進程包括auditors, updaters, and reapers。

鏡像的訪問權限

public 公共的:能夠被全部的項目使用。

private 私有的/項目的:只能被image owner所在的project使用(即只能在一個項目中使用)

shared 共享的:一個非共享的image能夠共享給其餘project。

protected 受保護的:protected的image不能被刪除

鏡像及任務的各類狀態

下圖爲官網圖

註解:

  queued:沒有上傳image數據,只有db中的元數據

  saving:正在上傳image data。

  active:當鏡像上傳完畢,鏡像就能夠被使用,此時屬於active

  deactivated:表示任何非管理員用戶都無權訪問鏡像數據,禁止下載鏡像,也禁止鏡像導出和鏡像克隆之類的操做(請求鏡像數據的操做)

  killed:表示上傳過程當中發生錯誤,而且鏡像不可讀

  deleted:glance已經保存了該鏡像的數據,可是該鏡像不在可用,處於該狀態的鏡像將在不久後被自動刪除

  pending_delete:與delete想說,glance尚未清除鏡像數據,處於該狀態的鏡像不可恢復

小結:

'queued' => ('saving', 'active', 'deleted')
'saving' => ('active', 'killed', 'deleted', 'queued')
'active' => ('queued', 'pending_delete', 'deleted')
'killed' => ('deleted')
'pending_delete' => ('deleted')
'deleted' => ()

任務的狀態

pending:任務已經保留,可是還沒開始處理

processing:正在執行

success:執行成功

failure:表示在執行任務的過程當中發生了錯誤,而且不能繼續執行

Glance包含的組件

glance-api

接受api請求,並提供相應操做,包括髮現、檢索、存儲

glance-registry

存儲、處理、檢索鏡像的元數據,元數據包括例如鏡像大小、類型等

Database

能夠選擇組件喜歡的數據庫存儲進行元數據,大多數使用MySQL或者SQLite.

Storage repository for image files

指的是存儲鏡像文件的倉庫或者稱爲backend,能夠是:

1本地文件存儲(或者任何掛載到glance-api控制節點的文件系統)

2.對象存儲Object Stroage(Swift)

3.塊存儲RADOS(ceph)

4.VMware數據存儲

5.HTTP

Glance和OpenStack其餘服務的關係

對glance來講,他的客戶端Glance Cli能夠是:

1.glance的命令行工具

2.Horizon

3.nova

同keystone同樣,glance是Iass的另一箇中心,keystone是關於權限的中心,而glance是關於鏡像的中心。glance能夠被終端用戶或者nova服務訪問:接受磁盤或者鏡像的API請求和定義鏡像元數據的操做

Glance工做流程

註解:

A client

而後使用glance服務的應用程序,能夠是命令行工具,horizon,nova等

REST API

glance是一個client-server架構,提供一個REST API,而使用者就是經過REST API來執行關於鏡像的各類操做。

Glance Domain Controller(glance域控制器)

glance內主要的中間件實現,至關於調度員,做用是將glance內部服務的操做分發到各層(Auth認證,Notifier,Policy策略,Quota,Location,DB數據庫鏈接)具體任務由每一個層實現。

· 第一層:Auth

  驗證鏡像本身或者它的屬性是否能夠被修改,只有管理員和鏡像的擁有者才能夠執行修改操做,不然保存。

 

· 第二層:Property protection

  由glance domain controller控制的七層組件

  可選層,只有在glance的配置文件中設置了property_protection_file參數纔會生效,它提供了兩種類型的鏡像屬性:

  1.核心屬性,是在鏡像參數中指定的;

  2元數據屬性,是任意能夠被附加到一個鏡像上的key/value

  該層的功能就是經過調用glance的public API來管理對meta屬性的訪問,你也能夠在它的配置文件中限定這個訪問

· 第三層:Notifier

  把下列信息添加到queue隊列中

  1.關於全部鏡像修改的通知

  2.在使用過程當中發生的全部的異常和警告 

 · 第四層:Policy

  1.定義操做鏡像的訪問規則rules,這些規則都定義在/etc/policy.json文件中

  2.監控rules的執行

 

· 第五層:Quota

    若是針對一個用戶,管理員爲其規定好他可以上傳的全部鏡像的大小配額,此處的Quota層就是用來檢測用戶上傳是否超出配額限制:

  1.若是沒有超出配額限制,那麼添加鏡像的操做成功

    2.若是超出了配額,那麼添加鏡像的操做失敗而且報錯。

 

  

· 第六層:Location

  與Glance Store交互,如上傳下載等。因爲能夠有多個存儲後端,不一樣的鏡像存放的位置都被該組件管理。

  1.當一個新的鏡像位置被添加時,檢測該URI是否正確。

  2.當一個鏡像位置被改變時,負責從存儲中刪除該鏡像。

  3.阻止鏡像位置的重複

 

· 第七層:DB

  1.實現了與數據庫API的交互

  2.將鏡像轉換爲相應的格式以記錄在數據庫中。而且從數據庫接收的信息轉換爲可操做的鏡像對象。

 

Registry Layer

可選層,用來組織安全

經過使用這個單獨的服務,來控制Glance Domain Controller與Glance DB之間的通訊

Clance DB

glance服務使用同一一個核心庫Glance DB,該庫對glance內部全部依賴數據庫的組件來講是共享的。

 

Glance Store

用來組織處理Glance和各類存儲後端的交互

全部有的進行文件操做都是經過調用Glance Store庫執行的,它負責與外部存儲端和(或)本地文件存儲系統的交互。

Glance Store提供了一個統一的接口來訪問後端的存儲

Disk和Container格式

當咱們添加一個鏡像到glance時,你必須指定虛擬機的disk格式和container格式,關於disk格式請自行研究kvm等虛擬。

disk和container格式是每一個部署的基本配置,經常使用的格式以下:

1.Disk Format

不一樣的虛擬化應用的廠針有不一樣的虛擬機鏡像的disk格式:

  • raw

    This is an unstructured disk image format

  • vhd

    This is the VHD disk format, a common disk format used by virtual machine monitors from VMware, Xen, Microsoft, VirtualBox, and others

  • vhdx

    This is the VHDX disk format, an enhanced version of the vhd format which supports larger disk sizes among other features.

  • vmdk

    Another common disk format supported by many common virtual machine monitors

  • vdi

    A disk format supported by VirtualBox virtual machine monitor and the QEMU emulator

  • iso

    An archive format for the data contents of an optical disc (e.g. CDROM).

  • ploop

    A disk format supported and used by Virtuozzo to run OS Containers

  • qcow2

    A disk format supported by the QEMU emulator that can expand dynamically and supports Copy on Write

  • aki

    This indicates what is stored in Glance is an Amazon kernel image

  • ari

    This indicates what is stored in Glance is an Amazon ramdisk image

  • ami

    This indicates what is stored in Glance is an Amazon machine image

2.Container Format

容器container格式是指虛擬機映像是否包含一個文件格式,該文件格式還包含有關實際虛擬機的元數據。

須要注意的是:容器格式字符串在當前並不會被glance或其餘OpenStack組件的使用,因此若是你不肯定,簡單的將容器格式指定bare是安全的。

你能夠設置以下容器格式:

  • bare

    This indicates there is no container or metadata envelope for the image

  • ovf

    This is the OVF container format

  • aki

    This indicates what is stored in Glance is an Amazon kernel image

  • ari

    This indicates what is stored in Glance is an Amazon ramdisk image

  • ami

    This indicates what is stored in Glance is an Amazon machine image

  • ova

    This indicates what is stored in Glance is an OVA tar archive file

  • docker

    This indicates what is stored in Glance is a Docker tar archive of the container filesystem

本站公眾號
   歡迎關注本站公眾號,獲取更多信息