什麼是Glancedocker
glance即image service(鏡像服務),是爲虛擬機的建立提供鏡像服務數據庫
爲何要有Glancejson
咱們基於openstack是構建基本的Iaas平臺對外提供虛機,而虛機在建立的時候必須爲其選擇操做系統,glance服務器就是爲該選擇提供不一樣的系統鏡像後端
Glance的功能api
glance服務使用戶可以發現,註冊,檢索虛擬機的鏡像,它提供一個可以查詢虛擬機鏡像元數據和檢索真實鏡像的REST API安全
具體的:REST API的體現就是一個URI,而在glance中經過一個URI地址來惟一標示一個鏡像的形式以下服務器
<Glance Server Location>/v1/images/<ID>
<Glance Server Location>:glance服務安裝的位置架構
/v1:使用v1版本dom
/images:請求的類型爲鏡像工具
/<ID>:一個uuid,在glance中全局惟一
Glance的兩個版本
在Newton以前的版本中,glance支持兩種REST API V1和V2,二者區別仍是很明顯的:
1.V1只提供了基本的image和member操做功能:建立鏡像、刪除、下載、列表、查詢、更新,以及鏡像tenant成員的建立、刪除和列表。
2.V2除了支持V1的全部功能外,主要還增長了以下功能:
鏡像location的添加、刪除和修改等操做
metadata namespace操做
image tag操做
3.V1和V2對image store的支持是相同的。
Newton版本中V1已經屬於老版本了,之後終將被移除
鏡像上傳的存儲方式有多種:Swift、File system、 Amazon S三、HTTP、Ceph、Cinder等
鏡像的數據存放
鏡像的數據包括:鏡像元數據和鏡像自己
其中鏡像的元數據是經過glance中的一個glance-registry模塊保存的數據庫中,而鏡像自己則是經過glance中的Glance store Divers存放到各類存儲設備中。
此次試驗我使用的是file system做爲後端的存儲,即將鏡像存放到本地文件系統中。上傳或存儲鏡像的目錄位於安裝glance服務的機器上的默認目錄:/var/lib/glance/images/,咱們應該確認該目錄有足夠大的空間可使用。
須要特別強調的一點是:file後端一般位於控制節點自己,於是這種後端並不適用於多節點部署
鏡像的訪問權限
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尚未清除鏡像數據,處於該狀態的鏡像不可恢復
PS:上面的一些含義簡單瞭解下就能夠。在命令行中不常見,只有在安裝的horizon後出現圖形化界面後會有顯示
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內部服務的操做分發到各層(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