OpenStack鏡像服務(glance)是IaaS的核心服務,容許用戶發現、註冊和獲取虛擬機的鏡像。 他提供了一個RESTAPI,容許查詢虛擬機鏡像的元數據並獲取一個現存的鏡像。能夠將虛擬機鏡像存儲到各類位置,從簡單的文件系統到對象存儲系統—例如OpenStack對象存儲,並經過鏡像服務使用。
mysql
簡單來講使用file做爲後端配置鏡像服務,可以上傳並存儲在一個託管鏡服務的控制節點目錄中。默認狀況下,這個目錄是 /var/lib/glance/images/
大量週期性進程運行於OpenStack鏡像服務上以支持緩存。
同步複製(Replication)服務保證集羣中的一致性和可用性。
其它週期性進程包括auditors, updaters, 和 reapers。sql
OpenStack鏡像服務包括如下組件:數據庫
glance-apivim
接收鏡像API的調用,諸如鏡像發現、恢復、存儲。後端
glance-registryapi
存儲、處理和恢復鏡像的元數據,元數據包括項諸如大小和類型。緩存
數據庫dom
存放鏡像元數據,用戶是能夠依據我的喜愛選擇數據庫的,多數的部署使用MySQL或SQLite。ide
鏡像文件的存儲倉庫memcached
支持多種類型的倉庫,它們有普通文件系統、對象存儲、RADOS塊設備、HTTP、以及亞馬遜S3。記住,其中一些倉庫僅支持只讀方式使用。
通用的API,是用於爲廠商,管理員,服務,以及用戶自定義元數據。這種元數據可用於不一樣的資源,例如鏡像,工件,卷,配額以及集合。一個定義包括了新屬性的鍵,描述,約束以及能夠與之關聯的資源的類型。
控制節點上部署
建立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
建立鏡像服務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
# 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
使用QCOW2磁盤格式,裸容器格式和公開可見性將圖像上傳到Image服務,以便全部項目均可以訪問它
# openstack image create "cirros" --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public
查看上傳的鏡像
# openstack image list