OpenStack 的部署T版(三)——Glance组件
目錄
- 一、glance概述
- 1、鏡像服務(wù)
- 2、images API的版本
- 3、鏡像格式
- 4、鏡像文件容器格式
- 5、鏡像狀態(tài)
- 6、訪問(wèn)權(quán)限
- 7、Glance架構(gòu)圖
- 8、Glance 工作流程
- 二、OpenStack-glance的組件部署
- 1、創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例和數(shù)據(jù)庫(kù)用戶
- 2、創(chuàng)建用戶、修改配置文件
- 3、測(cè)試是否部署成功
- 總結(jié)
一、glance概述
鏡像服務(wù)在OpenStack中的項(xiàng)目名稱為Glance。在早期的OpenStack版本中,Glance只有管理鏡像的功能,并不具備鏡像存儲(chǔ)功能。現(xiàn)在,Glance已發(fā)展成為集鏡像上傳、檢索、管理和存儲(chǔ)等多種功能的OpenStack核心服務(wù)。
1、鏡像服務(wù)
鏡像服務(wù)就是用來(lái)管理鏡像的,讓用戶能夠發(fā)現(xiàn)、獲取和保存鏡像。在OpenStack中提供鏡像服務(wù)的是Glance,其主要功能如下
- 查詢和獲取鏡像的元數(shù)據(jù)和鏡像本身
- 注冊(cè)和上傳虛擬機(jī)鏡像,包括鏡像的創(chuàng)建、上傳、下載和管理
- 維護(hù)鏡像信息,包括元數(shù)據(jù)和鏡像本身
- 支持多種方式存儲(chǔ)鏡像,包括普通的文件系統(tǒng),Swift、Amazon S3等
- 對(duì)虛擬機(jī)實(shí)例執(zhí)行創(chuàng)建快照命令來(lái)創(chuàng)建新的鏡像,或者備份虛擬機(jī)的狀態(tài)
2、images API的版本
Glance提供的RESTful API目前有兩個(gè)版本:API v1和API v2
- API v1:提供基本的鏡像和成員操作功能,包括鏡像創(chuàng)建、刪除、下載、列表、詳細(xì)信息查詢、更新,以及鏡像租戶成員的創(chuàng)建、刪除和列表。
- API v2:除了支持v1的所有功能外,主要增加了鏡像位置的添加、刪除、修改,元數(shù)據(jù)和名稱空間操作, 以及鏡像標(biāo)記操作。
兩個(gè)版本對(duì)鏡像存儲(chǔ)支持相同,v1從N版開始已經(jīng)過(guò)時(shí),遷移路徑使用v2進(jìn)行替代
3、鏡像格式
虛擬機(jī)鏡像文件磁盤格式
1.raw:無(wú)結(jié)構(gòu)的磁盤格式vhd:該格式通用于VMware,Xen, VirtualBox以及其他虛機(jī)管理程序
2.vhdx:vhd格式的增強(qiáng)版本,支持更大的磁盤尺寸
3.vmdk:一種比較通用的虛擬機(jī)磁盤格式
4.vdi:由VirtualBox虛擬機(jī)監(jiān)控程序和QEMU仿真器支持的磁盤格式
5.iso:用于光盤(CD-ROM)數(shù)據(jù)內(nèi)容的檔案格式
6.ploop:由Virtuozzo支持,用于運(yùn)行OS容器的磁盤格式
7.qcow2:由QEMU仿真支持,可動(dòng)態(tài)擴(kuò)展,支持寫時(shí)復(fù)制(Copy on Write)的磁盤格式
8.aki:在Glance中存儲(chǔ)的Amazon內(nèi)核格式
9.ari:在Glance中存儲(chǔ)的Amazon虛擬內(nèi)存盤(Ramdisk)格式
10.ami:在Glance中存儲(chǔ)的Amazon機(jī)器格式
4、鏡像文件容器格式
1.bare:沒(méi)有容器或元數(shù)據(jù)"信封"的鏡像
2.ovf:開放虛擬化格式
3.ova:在Glance中存儲(chǔ)的開放虛擬化設(shè)備格式
5.aki:在Glance中存儲(chǔ)的Amazon內(nèi)核格式
6.ari:在Glance中存儲(chǔ)的Amazon虛擬內(nèi)存盤(Ramdisk)格式
7.Docker:在Glance中存儲(chǔ)的容器文件系統(tǒng)的Dockerd的tar檔案
5、鏡像狀態(tài)
queued:這是一種初始化狀態(tài),鏡像文件剛被創(chuàng)建,在Glance數(shù)據(jù)庫(kù)只有其元數(shù)據(jù),鏡像數(shù)據(jù)還沒(méi)有上傳至數(shù)據(jù)庫(kù)中
saving:是鏡像的原始數(shù)據(jù)在上傳到數(shù)據(jù)庫(kù)中的一種過(guò)渡狀態(tài),表示正在上傳鏡像
uploading:指示已進(jìn)行導(dǎo)入數(shù)據(jù)提交調(diào)用,此狀態(tài)下不允許調(diào)用PUT/filesaving狀態(tài)會(huì)執(zhí)行PUT/file,這是另外一種上傳的方法)
importing:指示已經(jīng)完成導(dǎo)入調(diào)用,但是鏡像還未準(zhǔn)備好使用
active:表示當(dāng)鏡像數(shù)據(jù)成功上傳完畢,成為Glance中可用的鏡像
deactivated:表示任何非管理員用戶都無(wú)權(quán)訪問(wèn)鏡像數(shù)據(jù),禁止下載鏡像,也禁止鏡像導(dǎo)出和鏡像克隆之類的操作(只有管理員可以操作,維護(hù))
killed:表示鏡像上傳過(guò)程中發(fā)生錯(cuò)誤,鏡像不可讀
deleted:鏡像將在不久后被自動(dòng)刪除,該鏡像不可再用,但是目前Glance仍然保留該鏡像的相關(guān)信息和原始數(shù)據(jù)
pending_delete:與deleted相似, Glance還沒(méi)有清除鏡像數(shù)據(jù),但處于該狀態(tài)的鏡像不可恢復(fù)
6、訪問(wèn)權(quán)限
- Public(公共的):可以被所有的項(xiàng)目使用
- Private (私有的):只有被鏡像所有者所在的項(xiàng)目使用
- Shared (共享的):一個(gè)非共有的鏡像可以共享給其他項(xiàng)目,這是通過(guò)項(xiàng)目成員(member-*)操作來(lái)實(shí)現(xiàn)的
- Protected (受保護(hù)的):這種鏡像不能被刪除
7、Glance架構(gòu)圖
- 客戶端是Glance服務(wù)應(yīng)用程序使用者,是OpenStack命令行工具、Horizon或Nova服務(wù)
- glance-api是系統(tǒng)后臺(tái)運(yùn)行的服務(wù)進(jìn)程。是進(jìn)入Glance的入口。它對(duì)外提供REST API,負(fù)責(zé)接收用戶的RESTful請(qǐng)求,響應(yīng)鏡像查詢、獲取和存儲(chǔ)的調(diào)用。
- glance-registry是系統(tǒng)后臺(tái)運(yùn)行的glancei注冊(cè)服務(wù)進(jìn)程,負(fù)責(zé)處理與鏡像元數(shù)據(jù)相關(guān)的RESTful請(qǐng)求,元數(shù)據(jù)包括鏡像大小、類型等信息。Glance-api接收的請(qǐng)求如果是與鏡像的元數(shù)據(jù)相關(guān)的操作, glance-api會(huì)把請(qǐng)求轉(zhuǎn)發(fā)給glance-registry.glance-registry會(huì)解析請(qǐng)求內(nèi)容,并與數(shù)據(jù)庫(kù)交互。存儲(chǔ),處理、檢索鏡像的元數(shù)據(jù)。glance-api對(duì)外提供API。而gllance-registry的API只由glance-api使用。
- Glance的DB模塊存儲(chǔ)的是鏡像的元數(shù)據(jù),可以選用MYSQL、MariaDB、SQLite等數(shù)據(jù)庫(kù)。鏡像的元數(shù)據(jù)通過(guò)glance-registry存放在數(shù)據(jù)庫(kù)中。注意,鏡像本身(chunk數(shù)據(jù))是通過(guò)glance存儲(chǔ)驅(qū)動(dòng)存放到各種存儲(chǔ)后端中的。
- 存儲(chǔ)后端(Store Backend) Glance自身并不存儲(chǔ)鏡像,它將鏡像存放在后端存儲(chǔ)系統(tǒng)中。鏡像本身的數(shù)據(jù)通過(guò)glance_store存放在各種后端,并可從中獲取。支持本地存儲(chǔ)、對(duì)象存儲(chǔ)、RBD塊設(shè)備、Sheepdog分布式存儲(chǔ)、Cinder塊存儲(chǔ)、VMware數(shù)據(jù)存儲(chǔ)。
- 具體使用哪種backend,是在/etc/glancelglance-api.conf 中配置的[glance_store]
8、Glance 工作流程
- OpenStack的操作都需經(jīng)Keystone進(jìn)行身份認(rèn)證(AuthN)并授權(quán)(AuthZ),Glance也不例外。Glance是一個(gè)C/S架構(gòu),提供一個(gè)REST API,用戶就通過(guò)RESTAPI來(lái)執(zhí)行鏡像的各種操作。[Glance Domain Controller是一個(gè)主要的中間件,相當(dāng)于調(diào)度器,作用是將Glance內(nèi)部服務(wù)的操作分發(fā)到以下各個(gè)功能層
- Registry Layer(注冊(cè)層):是一個(gè)可選層,通過(guò)使用單獨(dú)的服務(wù)控制Glance Domain Controller與GlanceDB之間的安全交互。
- Glance DB:是Glance服務(wù)使用的核心庫(kù),該庫(kù)對(duì)Glance內(nèi)部所有依賴數(shù)據(jù)庫(kù)的組件是共享的。(這個(gè)庫(kù)是存一些元數(shù)據(jù)信息的,不是真正存鏡像的數(shù)據(jù)庫(kù))
- Glance Store:用來(lái)組織處理Glance和各種存儲(chǔ)后端的交互,提供了一個(gè)統(tǒng)一的接口來(lái)訪問(wèn)后端的存儲(chǔ)。所有的鏡像文件操作都是通過(guò)調(diào)用Glance Store庫(kù)來(lái)執(zhí)行的,它負(fù)責(zé)與外部存儲(chǔ)端或本地文件存儲(chǔ)系統(tǒng)的交互。
二、OpenStack-glance的組件部署
1、創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例和數(shù)據(jù)庫(kù)用戶
mysql -u root -pCREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS'; flush privileges; exit2、創(chuàng)建用戶、修改配置文件
創(chuàng)建OpenStack的Glance用戶
- 創(chuàng)建用戶前,需要首先執(zhí)行管理員環(huán)境變量腳本(此處已經(jīng)在~/.bashrc 中定義過(guò)了)
創(chuàng)建鏡像服務(wù) API 端點(diǎn),OpenStack使用三種API端點(diǎn)代表三種服務(wù):admin、internal、public
openstack endpoint create --region RegionOne image public http://ct:9292 openstack endpoint create --region RegionOne image internal http://ct:9292 openstack endpoint create --region RegionOne image admin http://ct:9292安裝 openstack-glance 軟件包
yum -y install openstack-glance修改glance配置文件,glance有兩個(gè)配置文件:/etc/glance/glance-api.conf
/etc/glance/glance-registry.conf
添加glance-api.conf配置
openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://ct:5000 openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://ct:5000 openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers ct:11211 openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http openstack-config --set /etc/glance/glance-api.conf glance_store default_store file openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/修改glance-registry.conf 配置文件
cp -a /etc/glance/glance-registry.conf{,.bak} grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf添加glance-registry.conf 配置
openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken www_authenticate_uri http://ct:5000 openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://ct:5000 openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers ct:11211 openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name Default openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name Default openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password GLANCE_PASS openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone初始化glance數(shù)據(jù)庫(kù),生成相關(guān)表結(jié)構(gòu);(不管有多少個(gè)controler,只需要初始化一次即可)
su -s /bin/sh -c "glance-manage db_sync" glance開啟glance服務(wù)(此處開啟之后會(huì)生成存放鏡像的目錄/var/lib/glance/image)
systemctl enable openstack-glance-api.service systemctl start openstack-glance-api.service查看端口
netstat -natp | grep 9292 #或(lsof需要安裝) yum -y install lsof lsof -i:9292賦予openstack-glance-api.service服務(wù)對(duì)存儲(chǔ)設(shè)備的可寫權(quán)限(-h:值對(duì)符號(hào)連接/軟鏈接的文件修改)
chown -hR glance:glance /var/lib/glance/3、測(cè)試是否部署成功
cirros-0.3.5-x86_64-disk.img
測(cè)試鏡像下載
鏡像導(dǎo)入
先上傳cirros鏡像到控制節(jié)點(diǎn)的/root,然后導(dǎo)入glance,最后查看是否創(chuàng)建成功
查看鏡像的兩種方式
openstack image listglance image-list總結(jié)
因?yàn)镺penStack上創(chuàng)建虛擬機(jī)需要鏡像支持,所以先行進(jìn)行部署
部署思路:
1、創(chuàng)建數(shù)據(jù)庫(kù)、授權(quán)
2、創(chuàng)建openstack用戶、授權(quán)、管理
3、修改配置文件(glance-api.conf、glance-registry.conf)
4、初始化數(shù)據(jù)庫(kù)、上傳實(shí)例鏡像
總結(jié)
以上是生活随笔為你收集整理的OpenStack 的部署T版(三)——Glance组件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 内存速度测试大揭秘:轻松4步,发现电脑内
- 下一篇: 内存灯光新玩法!炫彩自选,智能调节一键搞