天天看點

OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署

目錄

  • 一、概述
  • 二、lmages API的版本
  • 三、鏡像檔案磁盤格式
  • 四、鏡像檔案容器格式
  • 五、鏡像狀态
  • 六、通路權限
  • 七、工作流程
  • 八、部署
    • 一、建立Glance資料庫和使用者權限
    • 二、建立使用者及修改配置檔案
      • 一、建立使用者
      • 二、建立glance API端點
      • 三、安轉glance軟體包
      • 四、修改glance-api.conf檔案
      • 五、修改glance-registry.conf檔案
    • 三、初始化資料庫
    • 四、開啟服務并賦予權限
    • 五、鏡像導入

一、概述

鏡像服務就是用非管理鏡像的,讓使用者能夠發現、擷取和儲存鏡像在oenStack中提供鏡像服務的是Glance。

主要功能:

1、查詢和擷取鏡像的中繼資料和鏡像本身。

2、注冊和上傳虛拟機鏡像,包括鏡像的建立、上傳、下載下傳和管理。

3、維護鏡像資訊,包括中繼資料和鏡像本身。

4、支援多種方式存儲鏡像,包括普通的檔案系統、Swift、Amazon S3等。

5、對虛拟機執行個體執行建立快照指令來建立新的鏡像,或者備份虛拟機的狀态。

二、lmages API的版本

Glance提供的RESTful API目前有兩個版本:API v1和API v2。

1、v1隻提供基本的鏡像和成員操作功能,包括鏡像建立、删除、下載下傳、清單、詳細資訊查詢、更新,以及鏡像租戶成員的建立、删除和清單。

2、v2除了支援v1的所有功能外,主要增加了鏡像位置的添加、删除、修改,中繼資料和名稱空間操作,以及鏡像标記操作。

3、兩個版本對鏡像存儲支援相同,v1從N版開始已經過時,遷移路徑使用v2進行替代。

三、鏡像檔案磁盤格式

格式 含義
raw 無結構的磁盤格式
vhd 該格式通用于VMware、Xen、VirtualBox以及其他虛拟機管理程式
vhdx vhd格式的增強版本,支援更大的磁盤尺寸
vmdk 一種比較通用的虛拟機磁盤格式
vdi 由VirtualBox虛拟機監控程式和QEMU仿真器支援的磁盤格式
iso 用于CD光牒(CD-ROM)資料内容的檔案格式
ploop 由Virtuozzo支援,用于運作OS容器的磁盤格式
qcow2 由QEMU仿真支援,可動态擴充,支援寫時複制(Copy on Write)的磁盤格式
aki 在Glance中存儲的Amazon核心格式
ari 在Glance中存儲的Amazon虛拟記憶體盤(Ramdisk)格式
ami 在Glance中存儲的Amazon機器格式

ps:

1、raw:以二進制形式存儲的方式。

優點:通路速度非常快。

缺點:不支援動态擴容、前期消耗多。

2、Qcow2:Qemu支援的類型

四、鏡像檔案容器格式

格式 含義
bare 沒有容器或中繼資料“信封”的鏡像
ovf 開放虛拟化格式
ova 在Glance中存儲的開放虛拟化裝置格式
aki 在Glance中存儲的Amazon核心格式
ari 在Glance中存儲的Amazon虛拟記憶體盤(Ramdisk)格式
Docker 在Glance中存儲的容器檔案系統的Dockerd的tar檔案

ps:如果不能确定選擇哪種容器格式,那麼簡單地容器格式指定為bare是安全。

五、鏡像狀态

狀态 含義
queued 這是一種初始化狀态,鏡像檔案剛被建立,在Glance資料庫隻有其中繼資料,鏡像資料還沒有上傳至資料庫中
saving 是鏡像的原始資料在上傳到資料庫中的一種過渡狀态,表示正在上傳鏡像
uploading 訓示已進行導入資料送出調用,此狀态下不允許調用PUT/file(saving狀态會執行PUT/file,這是另外一種上傳的方法)
importing 訓示已經完成導入調用,但是鏡像還未準備好使用
active 表示當鏡像資料成功上傳完畢,成為Glance中可用的鏡像
deactivated 表示任何非管理者使用者都無權通路鏡像資料,禁止下載下傳鏡像,也禁止鏡像導出和鏡像克隆之類的操作
killed 表示鏡像上傳過程中發生錯誤,鏡像不可讀
deleted 境像将在不久後被自動删除,該鏡像不可再用,但是目前Glance仍然保留該鏡像的相關資訊和原始資料
pending _delete 與deleted相似,Glance還沒有清除鏡像資料,但處于該狀态的鏡像不可恢複

六、通路權限

1、Public(公共的):可以被所有的項目使用。

2、Private(私有的):隻有被鏡像所有者所在的項目使用。

3、Shared(共享的):一個非共有的鏡像可以共享給其他項目,這是通過項目成員(member-*)操作來實作的。

4、Protected(受保護的):這種鏡像不能被删除。

七、工作流程

OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署

元件介紹:

1、Policy(規則定義):定義鏡像操作的通路規則,這些規則在/etc/policy.json檔案中定義,該層對其進行監視并實施。

2、Quota(配額限制):如果管理者對某使用者定義了鏡像大小的鏡像上傳上限,則該使用者上傳了超過該限額的鏡像時會上傳失敗。

3、Location (定位):通過glance_store與背景存儲進行互動,例如上傳、下載下傳鏡像,管理鏡像存儲位置。該層還能夠在添加新位置時檢查位置URI是否正确;鏡像位置改變時删除存儲後端儲存的鏡像資料;防止鏡像位置重複。

4、DB(資料庫):實作與資料庫進行互動的AP1,方面将鏡像轉換為相應的格式以存儲在資料庫中,另一方面将從資料庫讀取的資訊轉換為可操作的鏡像對象。

5、Registry Layer(注冊層):是—個可選層,通過使用單獨的服務控制Glance Domain Controller與GlanceDB之間的安全互動。

6、Glance DB:是Glance服務使用的核心庫,該庫對Glance内部所有依賴資料庫的元件是共享的。(這個庫是存一些中繼資料資訊的,不是真正存鏡像的資料庫)。

7、Glance Store:用來組織處理Glancd和各種存儲後端的互動,提供了一個統一的接口來通路後端的存儲。所有的鏡像檔案操作都是通過調用Glance Store庫來執行的,它負責與外部存儲端或本地檔案存儲系統的互動。

工作流程:

1、client端是使用者通過登入horizon(控制台)進行操作。

2、client端向keystone注冊認證,認證權限;通過認證後keystone給client端token令牌,及URL(API)指向REST(Glance API)。

3、Glance API收到請求,把token給AuthZ認證,AuthZ把token傳遞給keystone确認。

4、keystone确認後,回複AuthZ;AuthZ在回複Glance API,然後Glance API才會把任務分發給後端。

5、Glance API把任務先交給controller(控制器),為了将請求分發給對應的子功能子產品,通過認證、權限範圍、配額、本地的方式以及DB資料庫來判斷交給哪個子功能子產品。

6、第一種:交給registry(管理雲資料的元件),然後給交給database(資料庫交接元件),最後調用DB資料庫中的資料。

7、第二種:如果交給存儲後端,會先交個Glance Store Drivers(存儲驅動),存儲驅動通過自己的API去找keystone認證(使用的儲存方式,不一定都是OpenStack内部的存儲方式,外部存儲需要建權認證),得到keystone的回報資訊後,才會去調用對應的存儲,最後傳回給使用者。

八、部署

一、建立Glance資料庫和使用者權限

[[email protected] ~]# mysql -u root -pabc123
MariaDB [(none)]> CREATE DATABASE glance; #建立glance資料庫
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> flush privileges; #重新整理權限
MariaDB [(none)]> show grants for glance; 檢視glance使用者權限
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署

二、建立使用者及修改配置檔案

一、建立使用者

#建立使用者前,需要首先執行管理者環境變量腳本
[[email protected] ~]# openstack user create --domain default --password GLANCE_PASS glance #建立glance使用者
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署
[[email protected] ~]# openstack role add --project service --user glance admin #将glance使用者添加到service項目中,并且針對這個項目擁有admin權限
#注冊glance的API,需要對service項目有admin權限

[[email protected] ~]# openstack service create --name glance --description "OpenStack Image" image #建立一個service服務,service名稱為glance,類型為image
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署
[[email protected] ~]# openstack service list #檢視服務清單
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署

二、建立glance API端點

#public服務
[[email protected] ~]# openstack endpoint create --region RegionOne image public http://ct:9292 
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署
#internal服務
[[email protected] ~]# openstack endpoint create --region RegionOne image internal http://ct:9292 
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署
#admin服務
[[email protected] ~]# openstack endpoint create --region RegionOne image admin http://ct:9292
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署

三、安轉glance軟體包

[[email protected] ~]# yum -y install openstack-glance
           

四、修改glance-api.conf檔案

[[email protected] ~]# cp -a /etc/glance/glance-api.conf{,.bak} #備份
[[email protected] ~]# grep -Ev '^$|#' /etc/glance/glance-api.conf.bak > /etc/glance/glance-api.conf #去除以#或$開頭的行

#傳入修改參數
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:[email protected]/glance
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://ct:5000
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://ct:5000
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers ct:11211
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
[[email protected] ~]# openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/

#檢視配置檔案修改項
[[email protected] ~]# cat /etc/glance/glance-api.conf
[DEFAULT]
[cinder]
[cors]
[database]
connection = mysql+pymysql://glance:[email protected]/glance 
[file]
[glance.store.http.store]
[glance.store.rbd.store]
[glance.store.sheepdog.store]
[glance.store.swift.store]
[glance.store.vmware_datastore.store]
[glance_store]
stores = file,http #存儲類型,file:檔案,http:基于api調用的方式,把鏡像放到其他存儲上
default_store = file #預設存儲方式
filesystem_store_datadir = /var/lib/glance/images/ #指定鏡像存放的本地目錄
[image_format]
[keystone_authtoken]
www_authenticate_uri = http://ct:5000 #指定認證的keystone的URI
auth_url = http://ct:5000 
memcached_servers = ct:11211 
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service #glance使用者針對service項目擁有admin權限
username = glance
password = GLANCE_PASS
[oslo_concurrency]
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[paste_deploy]
flavor = keystone #指定提供認證的伺服器為keystone
[profiler]
[store_type_location_strategy]
[task]
[taskflow_executor]
           

五、修改glance-registry.conf檔案

[[email protected] ~]# cp -a /etc/glance/glance-registry.conf{,.bak}
[[email protected] ~]# grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf database connection  mysql+pymysql://glance:[email protected]/glance
ken auth_type  password
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken www_authenticate_url   http://ct:5000
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url  http://ct:5000
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers  ct:11211
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type  password
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name  Default
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name  Default
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name  service
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username  glance
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password  GLANCE_PASS
[[email protected] ~]# openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor  keystone


#檢視配置檔案修改項
[[email protected] ~]# cat /etc/glance/glance-registry.conf
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署

三、初始化資料庫

[[email protected] ~]# su -s /bin/sh -c "glance-manage db_sync" glance #初始化資料庫
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署
[[email protected] ~]# mysql -uroot -pabc123
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署

四、開啟服務并賦予權限

#開啟服務
[[email protected] ~]# systemctl enable openstack-glance-api.service
[[email protected] ~]# systemctl start openstack-glance-api.service
[[email protected] ~]# netstat -antp | grep 9292
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署
#賦予openstack-glance-api.service服務對儲存設備的可寫權限
[[email protected] ~]# chown -hR glance:glance /var/lib/glance/
[[email protected] ~]# ll /var/lib/glance/
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署

五、鏡像導入

OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署
[[email protected] ~]# openstack image create --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field            | Value                                                                                                                                                                                      |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| checksum         | f8ab98ff5e73ebab884d80c9dc9c7290                                                                                                                                                           |
| container_format | bare                                                                                                                                                                                       |
| created_at       | 2021-08-25T17:36:31Z                                                                                                                                                                       |
| disk_format      | qcow2                                                                                                                                                                                      |
| file             | /v2/images/55d43ff0-5bf8-4946-9b55-f6da526a5311/file                                                                                                                                       |
| id               | 55d43ff0-5bf8-4946-9b55-f6da526a5311                                                                                                                                                       |
| min_disk         | 0                                                                                                                                                                                          |
| min_ram          | 0                                                                                                                                                                                          |
| name             | cirros                                                                                                                                                                                     |
| owner            | d84a4b32418942b1aa881badb361f0e3                                                                                                                                                           |
| properties       | os_hash_algo='sha512', os_hash_value='f0fd1b50420dce4ca382ccfbb528eef3a38bbeff00b54e95e3876b9bafe7ed2d6f919ca35d9046d437c6d2d8698b1174a335fbd66035bb3edc525d2cdb187232', os_hidden='False' |
| protected        | False                                                                                                                                                                                      |
| schema           | /v2/schemas/image                                                                                                                                                                          |
| size             | 13267968                                                                                                                                                                                   |
| status           | active                                                                                                                                                                                     |
| tags             |                                                                                                                                                                                            |
| updated_at       | 2021-08-25T17:36:32Z                                                                                                                                                                       |
| virtual_size     | None                                                                                                                                                                                       |
| visibility       | public                                                                                                                                                                                     |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
           
#檢視鏡像
[[email protected] ~]# openstack image list
           
OpenStack之Glance(T版)一、概述二、lmages API的版本三、鏡像檔案磁盤格式四、鏡像檔案容器格式五、鏡像狀态六、通路權限七、工作流程八、部署

繼續閱讀