一 什么是glance
創(chuàng)新互聯(lián)建站是一家專業(yè)提供辛集企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為辛集眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
二 為何要有g(shù)lance
三 glance的功能
四 glance的兩個版本
五 鏡像的數(shù)據(jù)存放
六 鏡像的訪問權(quán)限
七 鏡像及任務(wù)的各種狀態(tài)
八 glance包含的組件
九 glance與openstack其他服務(wù)的關(guān)系
十 glance工作流程詳解
十一 Disk和Container格式
十二 常見的鏡像屬性及設(shè)置
十三:元數(shù)據(jù)定義的概念
一 什么是glance
二 為何要有g(shù)lance
三 glance的功能
四 glance的兩個版本
五 鏡像的數(shù)據(jù)存放
六 鏡像的訪問權(quán)限
七 鏡像及任務(wù)的各種狀態(tài)
八 glance包含的組件
九 glance與openstack其他服務(wù)的關(guān)系
十 glance工作流程詳解
十一 Disk和Container格式
十二 常見的鏡像屬性及設(shè)置
十三:元數(shù)據(jù)定義的概念
一 什么是glance
glance即p_w_picpath service,是為虛擬機(jī)的創(chuàng)建提供鏡像的服務(wù)
二 為何要有g(shù)lance
我們基于openstack是構(gòu)建基本的Iaas平臺對外提供虛擬機(jī),而虛擬機(jī)在創(chuàng)建時必須為選擇需要安裝的操作系統(tǒng),glance服務(wù)就是為該選擇提供不同的操作系統(tǒng)鏡像。
三 glance的功能
glance服務(wù)使用戶能夠發(fā)現(xiàn),注冊,檢索虛擬機(jī)的鏡像,它提供一個能夠查詢虛擬機(jī)鏡像元數(shù)據(jù)和檢索真實鏡像的REST API。
具體的:REST API的體現(xiàn)就是一個URI,而在glance中通過一個URI地址來唯一標(biāo)識一個鏡像的形式如下
/v1:使用v1版本,詳見四
/p_w_picpaths:請求的類型為鏡像
/
四 glance的兩個版本
在Newton之前的版本中,glance支持兩種REST API V1和V2,兩者區(qū)別還是很明顯的:
(1). V1只提供了基本的p_w_picpath和member操作功能:鏡像創(chuàng)建、刪除、下載、列表、詳細(xì)信息查詢、更新,以及鏡像tenant成員的創(chuàng)建、刪除和列表。
(2). V2除了支持V1的所有功能外,主要是增加了如下功能:
鏡像 location 的添加、刪除和修改等操作
metadata namespace 操作
p_w_picpath tag 操作
(3).V1 和V2對 p_w_picpath store 的支持是相同的。
V1版本的實現(xiàn),具有g(shù)lance-api和glance-registry兩個WSGI服務(wù),二者都提供REST API,但需要強(qiáng)調(diào)的一點是: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的實現(xiàn)就是將glance-registry集成到了glance-api內(nèi)部,這么做的好處是減少了一個中間的處理環(huán)節(jié)
特別需要注意的是(查看開發(fā)手冊https://docs.openstack.org/developer/glance/)
在Newton版本中V1已經(jīng)是過時的了,并且V1最終將被移除
五 鏡像的數(shù)據(jù)存放
鏡像的數(shù)據(jù)包括:1.鏡像元數(shù)據(jù);2.鏡像本身即chunk
其中鏡像的元數(shù)據(jù)是通過glance-registry保存到數(shù)據(jù)庫中,而鏡像的chunk數(shù)據(jù)是通過Glance store Drivers存放到各種bakcend store中。
為了讓大家快速地理解glance,在配置glance時我們使用file作為后端,即將鏡像存放于本地文件系統(tǒng)中,上傳或者存儲鏡像的目錄位于按照glance服務(wù)的機(jī)器上(控制節(jié)點),默認(rèn)目錄是:/var/lib/glance/p_w_picpaths/,我們應(yīng)該確認(rèn)該目錄有足夠的空間可以使用。
需要特別強(qiáng)調(diào)的一點是:fileh后端通常位于控制節(jié)點本身,因而這種后端并不適用于多節(jié)點部署。
在glance服務(wù)上周星期的運(yùn)行很多進(jìn)程來支持緩存。在做glance集群時要考慮使用復(fù)制服務(wù)來確保一致性和可用性,其他的周期性的進(jìn)程包括auditors, updaters, and reapers。
六 鏡像的訪問權(quán)限
參照第七部分Glance Domain Controller之后的Auth服務(wù)是用來控制鏡像的訪問權(quán)限的,此處我們需要了解鏡像的訪問權(quán)限都有:
public 公共的:可以被所有的 tenant 使用。
private 私有的/項目的:只能被 p_w_picpath owner 所在的 tenant 使用。
shared 共享的:一個非共有的p_w_picpath 可以 共享給另外的 tenant,可通過member-* 操作來實現(xiàn)。
protected 受保護(hù)的:protected 的 p_w_picpath 不能被刪除。
七 鏡像及任務(wù)的各種狀態(tài)
7.1 鏡像的狀態(tài):
下圖表示glance在處理鏡像時如何從一個狀態(tài)移動到下一個狀態(tài)。
注解:
queued:沒有上傳 p_w_picpath 數(shù)據(jù),只有db 中的元數(shù)據(jù)。
saving:正在上傳 p_w_picpath data,當(dāng)注冊一個鏡像使用POST /p_w_picpaths并且當(dāng)前攜帶了一個x-p_w_picpath-meta-location頭,這個鏡像將不會進(jìn)入saving狀態(tài)(鏡像的數(shù)據(jù)已經(jīng)是可以獲得的,不能重傳)
active:當(dāng)鏡像數(shù)據(jù)上傳完畢,鏡像就可以被使用了(可獲得的),此時處于active狀態(tài)
deactivated:表示任何非管理員用戶都無權(quán)訪問鏡像數(shù)據(jù),禁止下載鏡像,也禁止像鏡像導(dǎo)出和鏡像克隆之類的操作(請求鏡像數(shù)據(jù)的操作)。
killed:表示上傳過程中發(fā)生錯誤,并且鏡像是不可讀的
deleted:glance已經(jīng)保存了該鏡像的數(shù)據(jù),但是該鏡像不再可用,處于該狀態(tài)的鏡像將在不久后被自動刪除。
pending_delete: 與deleted相似,glance還沒有清除鏡像數(shù)據(jù),只是處于該狀態(tài)的鏡像不可恢復(fù)。
小結(jié):
'queued' => ('saving', 'active', 'deleted')
'saving' => ('active', 'killed', 'deleted', 'queued')
'active' => ('queued', 'pending_delete', 'deleted')
'killed' => ('deleted')
'pending_delete' => ('deleted')
'deleted' => ()
7.2 任務(wù)的狀態(tài)
pending
任務(wù)已經(jīng)保留,但是還沒一開始處理
processing
正在執(zhí)行
success
執(zhí)行成功
failure
表示在執(zhí)行任務(wù)的過程中發(fā)生了錯誤,并且不能繼續(xù)執(zhí)行
八 glance包含的組件
對照第四部分的圖示,讓我們來詳解了解下glance的組件構(gòu)成
glance-api
接受api請求,并提供相應(yīng)操作,包括發(fā)現(xiàn),檢索,存儲
glance-registry
存儲、處理、檢索鏡像的元數(shù)據(jù),元數(shù)據(jù)包括例如鏡像大小、類型等
Database
可以選擇自己喜歡的數(shù)據(jù)庫存儲鏡像元數(shù)據(jù),大多數(shù)使用 MySQL 或則 SQLite.
Storage repository for p_w_picpath files
指的是存儲鏡像文件的倉庫或者稱為backend,可以是:
1.本地文件系統(tǒng)(或者任何掛載到glance-api控制節(jié)點的文件系統(tǒng))
2.對象存儲Object Storage(swift)
3.塊存儲RADOS(ceph)
4.VMware數(shù)據(jù)存儲
5.HTTP
Metadata definition service
為廠商、管理員、openstack其他服務(wù)提供一個公用的API,并且用戶可以自定義自己的元數(shù)據(jù)(有意義的)。
這個元數(shù)據(jù)功能非常強(qiáng)大,可以被用在不同類型的資源
p_w_picpath 鏡像本身
artifacts
volumes 卷
flavors 套餐
aggregates 主機(jī)聚合
具體的可以拿主機(jī)聚合舉例,
主機(jī)集合即多臺物理主機(jī)的集合體,這個集合中的物理主機(jī)具有一個或多個硬件方面的優(yōu)勢,比如說內(nèi)存大,固態(tài)磁盤等,專門用來部署數(shù)據(jù)庫服務(wù)。
我們可以制作一個鏡像,然后在該鏡像內(nèi)定義好元數(shù)據(jù):綁定上述的主機(jī)結(jié)合。這樣凡是用到該鏡像安裝系統(tǒng)的虛擬機(jī),都會被指定到該集合內(nèi),然后從該集合內(nèi)選出一臺物理機(jī)創(chuàng)建出虛機(jī).
九 glance與openstack其他服務(wù)的關(guān)系
對glance來說,它的客戶端Glance Cli可以是:
1.glance的命令行工具
2.Horizon
3.nova
同keystone一樣,glance是Iaas的另外一個中心(見圖),keystone是關(guān)于權(quán)限的中心,而glance是關(guān)于鏡像的中心。glance可以被終端用戶或者nova服務(wù)訪問:接受磁盤或者鏡像的API請求和定義鏡像元數(shù)據(jù)的操作。
十 glance工作流程詳解
注解:
A client
然后使用glance服務(wù)的應(yīng)用程序,可以是命令行工具,horizon,nova等
REST API
glance是一個client-server架構(gòu),提供一個REST API,而使用者就是通過REST API來執(zhí)行關(guān)于鏡像的各種操作。
Glance Domain Controller
是glance內(nèi)主要的中間件實現(xiàn),就相當(dāng)于一調(diào)度員,作用是將glance內(nèi)部服務(wù)的操作分發(fā)到各層(Auth認(rèn)證,Notifier,Policy策略,Quota,Location,DB數(shù)據(jù)庫連接)具體任務(wù)由每個層實現(xiàn)。
第一層:Auth
驗證鏡像自己或者它的屬性是否可以被修改,只有管理員和該鏡像的擁有者才可以執(zhí)行該修改操作,否則報錯。
第二層:Property protection
由glance domain controller控制的七層組件
是可選的層,只有在glance的配置文件中設(shè)置了property_protection_file參數(shù)才會生效,它提供了兩種類型的鏡像屬性:
1.核心屬性,是在鏡像參數(shù)中指定的;2元數(shù)據(jù)屬性,是任意可以被附加到一個鏡像上的key/value
該層的功能就是通過調(diào)用glance的public API來管理對meta屬性的訪問,你也可以在它的配置文件中限定這個訪問
第三層:Notifier
把下列信息添加到queue隊列中
1.關(guān)于所有鏡像修改的通知
2.在使用過程中發(fā)生的所有的異常和警告
第四層:Policy
負(fù)責(zé):
1.定義操作鏡像的訪問規(guī)則rules,這些規(guī)則都定義在/etc/policy.json文件中
2.監(jiān)控rules的執(zhí)行
第五層:Quota
如果針對一個用戶,管理員為其規(guī)定好他能夠上傳的所有鏡像的大小配額,此處的Quota層就是用來檢測用戶上傳是否超出配額限制:
1.如果沒有超出配額限制,那么添加鏡像的操作成功
2.如果超出了配額,那么添加鏡像的操作失敗并且報錯。
第六層:Location
與Glance Store交互,如上傳下載等。由于可以有多個存儲后端,不同的鏡像存放的位置都被該組件管理。
負(fù)責(zé):
1.當(dāng)一個新的鏡像位置被添加時,檢測該URI是否正確。
2.當(dāng)一個鏡像位置被改變時,負(fù)責(zé)從存儲中刪除該鏡像。
3.阻止鏡像位置的重復(fù)
第七層:DB
1.實現(xiàn)了與數(shù)據(jù)庫API的交互
2.將鏡像轉(zhuǎn)換為相應(yīng)的格式以記錄在數(shù)據(jù)庫中。并且從數(shù)據(jù)庫接收的信息轉(zhuǎn)換為可操作的鏡像對象。
Registry Layer
屬于可選的層,用來組織安全。
通過使用這個單獨的服務(wù),來控制Glance Domain Controller與Glance DB之間的通信。
Glance DB
glance服務(wù)使用統(tǒng)一一個核心庫Glance DB,該庫對glance內(nèi)部所有依賴數(shù)據(jù)庫的組件來說是共享的。
Glance Store
用來組織處理Glance和各種存儲后端的交互。
所有的鏡像文件操作都是通過調(diào)用Glance Store庫執(zhí)行的,它負(fù)責(zé)與外部存儲端和(或)本地文件系統(tǒng)的交互。Glance Store提供了一個統(tǒng)一的接口來訪問后端的存儲。
十一 Disk和Container格式
當(dāng)我們添加一個鏡像到glance時,你必須指定虛擬機(jī)的disk格式和container格式,關(guān)于disk格式請自行研究kvm等虛擬。
disk和container格式是每個部署的基本配置,常用的格式如下:
1.Disk Format
不同的虛擬化應(yīng)用的廠針有不同的虛擬機(jī)鏡像的disk格式:
raw
This is an unstructured disk p_w_picpath 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 p_w_picpath
ari
This indicates what is stored in Glance is an Amazon ramdisk p_w_picpath
ami
This indicates what is stored in Glance is an Amazon machine p_w_picpath
2.Container Format
容器container格式是指虛擬機(jī)映像是否包含一個文件格式,該文件格式還包含有關(guān)實際虛擬機(jī)的元數(shù)據(jù)。
需要注意的是:容器格式字符串在當(dāng)前并不會被glance或其他OpenStack組件的使用,所以如果你不確定,簡單的將容器格式指定bare是安全的。
你可以設(shè)置如下容器格式:
bare
This indicates there is no container or metadata envelope for the p_w_picpath
ovf
This is the OVF container format
aki
This indicates what is stored in Glance is an Amazon kernel p_w_picpath
ari
This indicates what is stored in Glance is an Amazon ramdisk p_w_picpath
ami
This indicates what is stored in Glance is an Amazon machine p_w_picpath
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
十二 常見的鏡像屬性及設(shè)置
操作系統(tǒng)架構(gòu),修改方式如下
openstack p_w_picpath set IMG-UUID --property architecture=x86_64
更多猛擊這里http://docs.openstack.org/cli-reference/glance-property-keys.html
instance_uuid
是元數(shù)據(jù),可用于記錄與此鏡像關(guān)聯(lián)的實例。(僅提供信息,不創(chuàng)建實例快照。)
kernel_id
The ID of p_w_picpath stored in Glance that should be used as the kernel when booting an AMI-style p_w_picpath.
ramdisk_id
The ID of p_w_picpath stored in Glance that should be used as the ramdisk when booting an AMI-style p_w_picpath.
os_distro
操作系統(tǒng)的發(fā)行版本
詳情點擊這里http://docs.openstack.org/cli-reference/glance-property-keys.html
os_version
廠商指定的操作系統(tǒng)版本
十三:元數(shù)據(jù)定義的概念
http://docs.openstack.org/developer/glance/metadefs-concepts.html