openstack之Glance介绍
什么是Glance
glance即image service(鏡像服務),是為虛擬機的創建提供鏡像服務
為什么要有Glance
我們基于openstack是構建基本的Iaas平臺對外提供虛機,而虛機在創建的時候必須為其選擇操作系統,glance服務器就是為該選擇提供不同的系統鏡像
Glance的功能
glance服務使用戶能夠發現,注冊,檢索虛擬機的鏡像,它提供一個能夠查詢虛擬機鏡像元數據和檢索真實鏡像的REST API
具體的:REST API的體現就是一個URI,而在glance中通過一個URI地址來唯一標示一個鏡像的形式如下
<Glance Server Location>/v1/images/<ID>
<Glance Server Location>:glance服務安裝的位置
/v1:使用v1版本
/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 S3、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
總結
以上是生活随笔為你收集整理的openstack之Glance介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五、【Docker笔记】Dockers仓
- 下一篇: /etc/profile环境变量配置进阶