OpenStack鏡像服務概覽
OpenStack鏡像服務(glance)是IaaS的核心服務,允許使用者發現、注冊和擷取虛拟機的鏡像。 他提供了一個RESTAPI,允許查詢虛拟機鏡像的中繼資料并擷取一個現存的鏡像。可以将虛拟機鏡像存儲到各種位置,從簡單的檔案系統到對象存儲系統—例如OpenStack對象存儲,并通過鏡像服務使用。
簡單來說使用file作為後端配置鏡像服務,能夠上傳并存儲在一個托管鏡服務的控制節點目錄中。預設情況下,這個目錄是 /var/lib/glance/images/
大量周期性程序運作于OpenStack鏡像服務上以支援緩存。
同步複制(Replication)服務保證叢集中的一緻性和可用性。
其它周期性程序包括auditors, updaters, 和 reapers。
OpenStack鏡像服務包括以下元件:
- glance-api
接收鏡像API的調用,諸如鏡像發現、恢複、存儲。
- glance-registry
存儲、處理和恢複鏡像的中繼資料,中繼資料包括項諸如大小和類型。
- 資料庫
存放鏡像中繼資料,使用者是可以依據個人喜好選擇資料庫的,多數的部署使用MySQL或SQLite。
- 鏡像檔案的存儲倉庫
支援多種類型的倉庫,它們有普通檔案系統、對象存儲、RADOS塊裝置、HTTP、以及亞馬遜S3。記住,其中一些倉庫僅支援隻讀方式使用。
- 中繼資料定義服務
通用的API,是用于為廠商,管理者,服務,以及使用者自定義中繼資料。這種中繼資料可用于不同的資源,例如鏡像,工件,卷,配額以及集合。一個定義包括了新屬性的鍵,描述,限制以及可以與之關聯的資源的類型。
部署鏡像服務glance
控制節點上部署
- 建立glance資料庫,并授權
# mysql -u root -p > CREATE DATABASE glance; > GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456'; > GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456';
- 擷取admin使用者的環境變量,并建立服務認證
# cd ~ # . admin-openrc # export | grep OS_
- 建立glance使用者
# openstack user create --domain default --password-prompt glance
- 把admin使用者添加到glance使用者和項目中
# openstack role add --project service --user glance admin
- 建立glance服務
# openstack service create --name glance --description "OpenStack Image" image
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCM581dvRWYoNHLwEzX5xCMx8FesU2cfdGLwATMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4QmMhRzNkZzM2YWZ5czM1IGMyITYxEzMjRmYlRGM1gzLcFzMvwFOwgTMwIzLcd2bsJ2LcNXZnFWbp9CXt92Yu8GdjFTNuITavw1LcpDc0RHaiojIsJye.png)
- 建立鏡像服務API端點
# openstack endpoint create --region RegionOne image public http://controller:9292 # openstack endpoint create --region RegionOne image internal http://controller:9292 # openstack endpoint create --region RegionOne image admin http://controller:9292
-
安裝glance包
# yum install openstack-glance -y # mkdir /var/lib/glance/images # cd /var/lib # chown -hR glance:glance glance # vim /etc/glance/glance-api.conf [database] connection = mysql+pymysql://glance:123456@controller/glance [keystone_authtoken] auth_uri = http://controller:5000 //3501行 auth_url = http://controller:35357 (!注意 url 不是 uri) memcached_servers = controller:11211 //3552行 auth_type = password //3659行 project_domain_name = default user_domain_name = default project_name = service username = glance password = 123456 [paste_deploy] flavor = keystone ////4508 [glance_store] stores = file,http //2066 default_store = file //2110 filesystem_store_datadir = /var/lib/glance/images //2429
.
# vim /etc/glance/glance-registry.conf
[database]
//1188行
connection = mysql+pymysql://glance:123456@controller/glance
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357 (!注意 url 不是 uri)
memcached_servers = controller:11211 //1365行
auth_type = password //1472行
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123456
[paste_deploy]
flavor = keystone //2294行
- 同步鏡像資料庫
- 啟動鏡像服務、配置開機啟動
# su -s /bin/sh -c "glance-manage db_sync" glance # systemctl enable openstack-glance-api.service # systemctl start openstack-glance-api.service # systemctl enable openstack-glance-registry.service # systemctl start openstack-glance-registry.service
- 擷取admin使用者的環境變量,且下載下傳鏡像
# source ~/admin-openrc # wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
- 上傳鏡像
-
# openstack image create "cirros" --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public
-
# openstack image list