Glance是Openstack項目中負責鏡像管理的模塊,其功能包括虛擬機鏡像的查找、註冊和檢索等。
Glance提供Restful API(接口)可以查詢虛擬機鏡像的metadata及獲取鏡像。 Glance可以將鏡像保存到多種後端存儲上,比如簡單的文件存儲或者對象存儲。
glance服務端口 9292
理解image
要理解 Image Service,先得搞清楚什麼是 Image 以及爲什麼要用 Image?
在傳統 IT 環境下,安裝一個系統要麼從安裝 CD 從頭安裝,要麼用 Ghost 等克隆工具恢復。這兩種方式有如下幾個問題:
如果要安裝的系統多了效率就很低
時間長,工作量大
安裝完還要進行手工配置,比如安裝其他的軟件,設置 IP 等
備份和恢復系統不靈活
雲環境下需要更高效的方案,這就是 Image。 Image 是一個模板,裏面包含了基本的操作系統和其他的軟件。
image service
glance-api
glance-api 是系統後臺運行的服務進程。 對外提供 REST API,響應 image 查詢、獲取和存儲的調用。
glance-api 不會真正處理請求。 如果操作是與 image metadata(元數據)相關,glance-api 會把請求轉發給 glance-registry; 如果操作是與 image 自身存取相關,glance-api 會把請求轉發給該 image 的 store backend。
glance-registry
glance-registry 是系統後臺運行的服務進程。 負責處理和存取 image 的 metadata,例如 image 的大小和類型。在控制節點上可以查看 glance-registry 進程
registry server幫助api和數據庫通信
Glance 支持多種格式的 image:
Store backend
Glance 自己並不存儲 image。 真正的 image 是存放在 backend 中的。 Glance 支持多種 backend,包括:
A directory on a local file system(這是默認配置)
GridFS
Ceph RBD
Amazon S3
Sheepdog
OpenStack Block Storage (Cinder)
OpenStack Object Storage (Swift)
VMware ESX
具體使用哪種 backend,是在 /etc/glance/glance-api.conf 中配置的
鏡像保存位置(也可以保存到nfs的共享目錄):/var/lib/glance/images
配置
#mysql -uroot -p123
> CREATE 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';
重新執行環境變量
#source openrc
創建glance用戶
#openstack user create --domain default --password=glance glance
添加glance爲管理員
#openstack role add --project service --user glance admin
創建glance服務
#openstack service create --name glance \
--description "OpenStack Image" image
創建服務端點
#openstack endpoint create --region RegionOne \
image public http://pikachu1:9292
#openstack endpoint create --region RegionOne \
image internal http://pikachu1:9292
#openstack endpoint create --region RegionOne \
image admin http://pikachu1:9292
安裝軟件
#yum install openstack-glance
修改配置文件
#cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
#cp /etc/glance/glance-registry.conf /etc/glance/glance-registry.conf.bak
#vim /etc/glance/glance-api.conf(對外提供服務的接口)
#
[DEFAULT]
[cors]
[cors.subdomain]
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@pikachu1/glance
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
[image_format]
[keystone_authtoken]
auth_uri = http://pikachu1:5000
auth_url = http://pikachu1:35357
memcached_servers = pikachu1:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
[matchmaker_redis]
[oslo_concurrency]
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_messaging_zmq]
[oslo_middleware]
[oslo_policy]
[paste_deploy]
flavor = keystone
[profiler]
[store_type_location_strategy]
[task]
[taskflow_executor]
#
#vim /etc/glance/glance-registry.conf
#
[DEFAULT]
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@pikachu1/glance
[keystone_authtoken]
auth_uri = http://pikachu1:5000
auth_url = http://pikachu1:35357
memcached_servers = pikachu1:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
[matchmaker_redis]
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_messaging_zmq]
[oslo_policy]
[paste_deploy]
flavor = keystone
[profiler]
#
導入glance表到數據庫
#su -s /bin/sh -c "glance-manage db_sync" glance
啓動服務
#systemctl enable openstack-glance-api.service \
openstack-glance-registry.service
#systemctl start openstack-glance-api.service \
openstack-glance-registry.service
上傳鏡像測試(不是裝系統的鏡像)
#openstack image list
#glance image-list
#openstack image create "cirros" \
--file cirros-0.3.3-x86_64-disk.img.img \
--disk-format qcow2 --container-format bare \
--public
刪除鏡像
#openstack image delete cirros