溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

glance系列一:glance基礎(chǔ)

發(fā)布時(shí)間:2020-06-17 22:02:51 來(lái)源:網(wǎng)絡(luò) 閱讀:604 作者:心若素然 欄目:數(shù)據(jù)庫(kù)

一 什么是glance

二 為何要有g(shù)lance

三 glance的功能

四 glance的兩個(gè)版本

五 鏡像的數(shù)據(jù)存放

六 鏡像的訪問(wèn)權(quán)限

七 鏡像及任務(wù)的各種狀態(tài)

八 glance包含的組件

九 glance與openstack其他服務(wù)的關(guān)系

十 glance工作流程詳解

十一 Disk和Container格式

十二 常見(jiàn)的鏡像屬性及設(shè)置

十三:元數(shù)據(jù)定義的概念

一 什么是glance

二 為何要有g(shù)lance

三 glance的功能

四 glance的兩個(gè)版本

五 鏡像的數(shù)據(jù)存放

六 鏡像的訪問(wèn)權(quán)限

七 鏡像及任務(wù)的各種狀態(tài)

八 glance包含的組件

九 glance與openstack其他服務(wù)的關(guān)系

十 glance工作流程詳解

十一 Disk和Container格式

十二 常見(jiàn)的鏡像屬性及設(shè)置

十三:元數(shù)據(jù)定義的概念



一 什么是glance

glance即p_w_picpath service,是為虛擬機(jī)的創(chuàng)建提供鏡像的服務(wù)


二 為何要有g(shù)lance

我們基于openstack是構(gòu)建基本的Iaas平臺(tái)對(duì)外提供虛擬機(jī),而虛擬機(jī)在創(chuàng)建時(shí)必須為選擇需要安裝的操作系統(tǒng),glance服務(wù)就是為該選擇提供不同的操作系統(tǒng)鏡像。


三 glance的功能

glance服務(wù)使用戶能夠發(fā)現(xiàn),注冊(cè),檢索虛擬機(jī)的鏡像,它提供一個(gè)能夠查詢虛擬機(jī)鏡像元數(shù)據(jù)和檢索真實(shí)鏡像的REST API。


具體的:REST API的體現(xiàn)就是一個(gè)URI,而在glance中通過(guò)一個(gè)URI地址來(lái)唯一標(biāo)識(shí)一個(gè)鏡像的形式如下


<Glance Server Location>/v1/p_w_picpaths/<ID>

 


<Glance Server Location>:glance服務(wù)按照的位置


/v1:使用v1版本,詳見(jiàn)四


/p_w_picpaths:請(qǐng)求的類(lèi)型為鏡像


/<ID>:一個(gè)uuid,在glance中全局唯一




四 glance的兩個(gè)版本


在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對(duì) p_w_picpath store 的支持是相同的。


V1版本的實(shí)現(xiàn),具有g(shù)lance-api和glance-registry兩個(gè)WSGI服務(wù),二者都提供REST API,但需要強(qiáng)調(diào)的一點(diǎn)是: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。


glance系列一:glance基礎(chǔ)


v2的實(shí)現(xiàn)就是將glance-registry集成到了glance-api內(nèi)部,這么做的好處是減少了一個(gè)中間的處理環(huán)節(jié)


特別需要注意的是(查看開(kāi)發(fā)手冊(cè)https://docs.openstack.org/developer/glance/)


在Newton版本中V1已經(jīng)是過(guò)時(shí)的了,并且V1最終將被移除


五 鏡像的數(shù)據(jù)存放



鏡像的數(shù)據(jù)包括:1.鏡像元數(shù)據(jù);2.鏡像本身即chunk


其中鏡像的元數(shù)據(jù)是通過(guò)glance-registry保存到數(shù)據(jù)庫(kù)中,而鏡像的chunk數(shù)據(jù)是通過(guò)Glance store Drivers存放到各種bakcend store中。



為了讓大家快速地理解glance,在配置glance時(shí)我們使用file作為后端,即將鏡像存放于本地文件系統(tǒng)中,上傳或者存儲(chǔ)鏡像的目錄位于按照glance服務(wù)的機(jī)器上(控制節(jié)點(diǎn)),默認(rèn)目錄是:/var/lib/glance/p_w_picpaths/,我們應(yīng)該確認(rèn)該目錄有足夠的空間可以使用。


需要特別強(qiáng)調(diào)的一點(diǎn)是:fileh后端通常位于控制節(jié)點(diǎn)本身,因而這種后端并不適用于多節(jié)點(diǎn)部署。


在glance服務(wù)上周星期的運(yùn)行很多進(jìn)程來(lái)支持緩存。在做glance集群時(shí)要考慮使用復(fù)制服務(wù)來(lái)確保一致性和可用性,其他的周期性的進(jìn)程包括auditors, updaters, and reapers。


六 鏡像的訪問(wèn)權(quán)限


參照第七部分Glance Domain Controller之后的Auth服務(wù)是用來(lái)控制鏡像的訪問(wèn)權(quán)限的,此處我們需要了解鏡像的訪問(wèn)權(quán)限都有:


public 公共的:可以被所有的 tenant 使用。

private 私有的/項(xiàng)目的:只能被 p_w_picpath owner 所在的 tenant 使用。

shared 共享的:一個(gè)非共有的p_w_picpath 可以 共享給另外的 tenant,可通過(guò)member-* 操作來(lái)實(shí)現(xiàn)。

protected 受保護(hù)的:protected 的 p_w_picpath 不能被刪除。


七 鏡像及任務(wù)的各種狀態(tài)


7.1 鏡像的狀態(tài):


下圖表示glance在處理鏡像時(shí)如何從一個(gè)狀態(tài)移動(dòng)到下一個(gè)狀態(tài)。



glance系列一:glance基礎(chǔ)


    

注解:


queued:沒(méi)有上傳 p_w_picpath 數(shù)據(jù),只有db 中的元數(shù)據(jù)。

saving:正在上傳 p_w_picpath data,當(dāng)注冊(cè)一個(gè)鏡像使用POST  /p_w_picpaths并且當(dāng)前攜帶了一個(gè)x-p_w_picpath-meta-location頭,這個(gè)鏡像將不會(huì)進(jìn)入saving狀態(tài)(鏡像的數(shù)據(jù)已經(jīng)是可以獲得的,不能重傳)

active:當(dāng)鏡像數(shù)據(jù)上傳完畢,鏡像就可以被使用了(可獲得的),此時(shí)處于active狀態(tài)

deactivated:表示任何非管理員用戶都無(wú)權(quán)訪問(wèn)鏡像數(shù)據(jù),禁止下載鏡像,也禁止像鏡像導(dǎo)出和鏡像克隆之類(lèi)的操作(請(qǐng)求鏡像數(shù)據(jù)的操作)。

killed:表示上傳過(guò)程中發(fā)生錯(cuò)誤,并且鏡像是不可讀的

deleted:glance已經(jīng)保存了該鏡像的數(shù)據(jù),但是該鏡像不再可用,處于該狀態(tài)的鏡像將在不久后被自動(dòng)刪除。

pending_delete: 與deleted相似,glance還沒(méi)有清除鏡像數(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)保留,但是還沒(méi)一開(kāi)始處理


processing


正在執(zhí)行


success


執(zhí)行成功


failure


表示在執(zhí)行任務(wù)的過(guò)程中發(fā)生了錯(cuò)誤,并且不能繼續(xù)執(zhí)行


八 glance包含的組件


對(duì)照第四部分的圖示,讓我們來(lái)詳解了解下glance的組件構(gòu)成


glance-api

接受api請(qǐng)求,并提供相應(yīng)操作,包括發(fā)現(xiàn),檢索,存儲(chǔ)

glance-registry

存儲(chǔ)、處理、檢索鏡像的元數(shù)據(jù),元數(shù)據(jù)包括例如鏡像大小、類(lèi)型等

Database

可以選擇自己喜歡的數(shù)據(jù)庫(kù)存儲(chǔ)鏡像元數(shù)據(jù),大多數(shù)使用 MySQL 或則 SQLite.

Storage repository for p_w_picpath files

指的是存儲(chǔ)鏡像文件的倉(cāng)庫(kù)或者稱(chēng)為backend,可以是:

1.本地文件系統(tǒng)(或者任何掛載到glance-api控制節(jié)點(diǎn)的文件系統(tǒng))

2.對(duì)象存儲(chǔ)Object Storage(swift)

3.塊存儲(chǔ)RADOS(ceph)

4.VMware數(shù)據(jù)存儲(chǔ)

5.HTTP

Metadata definition service

為廠商、管理員、openstack其他服務(wù)提供一個(gè)公用的API,并且用戶可以自定義自己的元數(shù)據(jù)(有意義的)。

這個(gè)元數(shù)據(jù)功能非常強(qiáng)大,可以被用在不同類(lèi)型的資源

p_w_picpath 鏡像本身

artifacts

volumes 卷

flavors 套餐

aggregates 主機(jī)聚合

具體的可以拿主機(jī)聚合舉例,

主機(jī)集合即多臺(tái)物理主機(jī)的集合體,這個(gè)集合中的物理主機(jī)具有一個(gè)或多個(gè)硬件方面的優(yōu)勢(shì),比如說(shuō)內(nèi)存大,固態(tài)磁盤(pán)等,專(zhuān)門(mén)用來(lái)部署數(shù)據(jù)庫(kù)服務(wù)。


我們可以制作一個(gè)鏡像,然后在該鏡像內(nèi)定義好元數(shù)據(jù):綁定上述的主機(jī)結(jié)合。這樣凡是用到該鏡像安裝系統(tǒng)的虛擬機(jī),都會(huì)被指定到該集合內(nèi),然后從該集合內(nèi)選出一臺(tái)物理機(jī)創(chuàng)建出虛機(jī).




九 glance與openstack其他服務(wù)的關(guān)系



對(duì)glance來(lái)說(shuō),它的客戶端Glance Cli可以是:


1.glance的命令行工具


2.Horizon


3.nova


同keystone一樣,glance是Iaas的另外一個(gè)中心(見(jiàn)圖),keystone是關(guān)于權(quán)限的中心,而glance是關(guān)于鏡像的中心。glance可以被終端用戶或者nova服務(wù)訪問(wèn):接受磁盤(pán)或者鏡像的API請(qǐng)求和定義鏡像元數(shù)據(jù)的操作。 



十 glance工作流程詳解

glance系列一:glance基礎(chǔ)

注解:


A client


然后使用glance服務(wù)的應(yīng)用程序,可以是命令行工具,horizon,nova等


REST API


glance是一個(gè)client-server架構(gòu),提供一個(gè)REST API,而使用者就是通過(guò)REST API來(lái)執(zhí)行關(guān)于鏡像的各種操作。


Glance Domain Controller


是glance內(nèi)主要的中間件實(shí)現(xiàn),就相當(dāng)于一調(diào)度員,作用是將glance內(nèi)部服務(wù)的操作分發(fā)到各層(Auth認(rèn)證,Notifier,Policy策略,Quota,Location,DB數(shù)據(jù)庫(kù)連接)具體任務(wù)由每個(gè)層實(shí)現(xiàn)。


第一層:Auth

驗(yàn)證鏡像自己或者它的屬性是否可以被修改,只有管理員和該鏡像的擁有者才可以執(zhí)行該修改操作,否則報(bào)錯(cuò)。


第二層:Property protection

由glance domain controller控制的七層組件


是可選的層,只有在glance的配置文件中設(shè)置了property_protection_file參數(shù)才會(huì)生效,它提供了兩種類(lèi)型的鏡像屬性:


1.核心屬性,是在鏡像參數(shù)中指定的;2元數(shù)據(jù)屬性,是任意可以被附加到一個(gè)鏡像上的key/value


該層的功能就是通過(guò)調(diào)用glance的public API來(lái)管理對(duì)meta屬性的訪問(wèn),你也可以在它的配置文件中限定這個(gè)訪問(wèn)


第三層:Notifier




把下列信息添加到queue隊(duì)列中


1.關(guān)于所有鏡像修改的通知


2.在使用過(guò)程中發(fā)生的所有的異常和警告 


第四層:Policy

 負(fù)責(zé):


1.定義操作鏡像的訪問(wèn)規(guī)則rules,這些規(guī)則都定義在/etc/policy.json文件中


2.監(jiān)控rules的執(zhí)行


第五層:Quota

 如果針對(duì)一個(gè)用戶,管理員為其規(guī)定好他能夠上傳的所有鏡像的大小配額,此處的Quota層就是用來(lái)檢測(cè)用戶上傳是否超出配額限制:


1.如果沒(méi)有超出配額限制,那么添加鏡像的操作成功


2.如果超出了配額,那么添加鏡像的操作失敗并且報(bào)錯(cuò)。


第六層:Location

與Glance Store交互,如上傳下載等。由于可以有多個(gè)存儲(chǔ)后端,不同的鏡像存放的位置都被該組件管理。


負(fù)責(zé):


1.當(dāng)一個(gè)新的鏡像位置被添加時(shí),檢測(cè)該URI是否正確。


2.當(dāng)一個(gè)鏡像位置被改變時(shí),負(fù)責(zé)從存儲(chǔ)中刪除該鏡像。


3.阻止鏡像位置的重復(fù)


第七層:DB

1.實(shí)現(xiàn)了與數(shù)據(jù)庫(kù)API的交互


2.將鏡像轉(zhuǎn)換為相應(yīng)的格式以記錄在數(shù)據(jù)庫(kù)中。并且從數(shù)據(jù)庫(kù)接收的信息轉(zhuǎn)換為可操作的鏡像對(duì)象。


Registry Layer


屬于可選的層,用來(lái)組織安全。


通過(guò)使用這個(gè)單獨(dú)的服務(wù),來(lái)控制Glance Domain Controller與Glance DB之間的通信。


Glance DB

glance服務(wù)使用統(tǒng)一一個(gè)核心庫(kù)Glance DB,該庫(kù)對(duì)glance內(nèi)部所有依賴數(shù)據(jù)庫(kù)的組件來(lái)說(shuō)是共享的。


Glance Store


用來(lái)組織處理Glance和各種存儲(chǔ)后端的交互。


所有的鏡像文件操作都是通過(guò)調(diào)用Glance Store庫(kù)執(zhí)行的,它負(fù)責(zé)與外部存儲(chǔ)端和(或)本地文件系統(tǒng)的交互。Glance Store提供了一個(gè)統(tǒng)一的接口來(lái)訪問(wèn)后端的存儲(chǔ)。



十一 Disk和Container格式


當(dāng)我們添加一個(gè)鏡像到glance時(shí),你必須指定虛擬機(jī)的disk格式和container格式,關(guān)于disk格式請(qǐng)自行研究kvm等虛擬。


disk和container格式是每個(gè)部署的基本配置,常用的格式如下:


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ī)映像是否包含一個(gè)文件格式,該文件格式還包含有關(guān)實(shí)際虛擬機(jī)的元數(shù)據(jù)。


需要注意的是:容器格式字符串在當(dāng)前并不會(huì)被glance或其他OpenStack組件的使用,所以如果你不確定,簡(jiǎn)單的將容器格式指定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


十二 常見(jiàn)的鏡像屬性及設(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)的實(shí)例。(僅提供信息,不創(chuàng)建實(shí)例快照。)

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ā)行版本 


詳情點(diǎn)擊這里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


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI