一、服務概述
鏡像服務 (glance) 允許用戶發現、注冊和獲取虛擬機鏡像。它提供了一個 REST API,允許您查詢虛擬機鏡像的 metadata 並獲取一個現存的鏡像。您可以將虛擬機鏡像存儲到各種位置,從簡單的文件系統到對象存儲系統—-例如 OpenStack 對象存儲, 並通過鏡像服務使用。
OpenStack鏡像服務是IaaS的核心服務,如同 :ref:`get_started_conceptual_architecture`所示。它接受磁盤鏡像或服務器鏡像API請求,和來自終端用戶或OpenStack計算組件的元數據定義。它也支持包括OpenStack對象存儲在內的多種類型倉庫上的磁盤鏡像或服務器鏡像存儲。
大量周期性進程運行於OpenStack鏡像服務上以支持緩存。同步復制(Replication)服務保證集群中的一致性和可用性。其它周期性進程包括auditors, updaters, 和 reapers。
OpenStack鏡像服務包括以下組件:
- glance-api:接收鏡像API的調用,諸如鏡像發現、恢復、存儲。
- glance-registry:存儲、處理和恢復鏡像的元數據,元數據包括項諸如大小和類型。
- 數據庫:存放鏡像元數據,用戶是可以依據個人喜好選擇數據庫的,多數的部署使用MySQL或SQLite。
- 鏡像文件的存儲倉庫:支持多種類型的倉庫,它們有普通文件系統、對象存儲、RADOS塊設備、HTTP、以及亞馬遜S3。記住,其中一些倉庫僅支持只讀方式使用。
- 元數據定義服務:通用的API,是用於為廠商,管理員,服務,以及用戶自定義元數據。這種元數據可用於不同的資源,例如鏡像,工件,卷,配額以及集合。一個定義包括了新屬性的鍵,描述,約束以及可以與之關聯的資源的類型。
- 警告:glance-registry是私有內部服務,用於服務OpenStack Image服務。不要向用戶暴露該服務
- 二、安裝和配置
准備工作:安裝和配置鏡像服務之前,你必須創建創建一個數據庫、服務憑證和API端點
1、創建數據庫並授權
[root@controller ~]# mysql -u root -p MariaDB [(none)]> CREATE DATABASE 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';
2、創建 glance 用戶,添加 admin 角色到 glance 用戶和 service 項目上
[root@controller ~]# openstack user create --domain default --password GLANCE_PASS glance +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | 73e42b9fc6b64cfdb17940cdf0a0f692 | | enabled | True | | id | 7a6f6526409c459a980d9b441c6e3575 | | name | glance | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ [root@controller ~]# openstack role add --project service --user glance admin
查看命令
[root@controller ~]# openstack project list
[root@controller ~]# openstack role assignment list
[root@controller ~]# openstack role list
[root@controller ~]# mysql keystone -e "show tables;" |grep role 過濾表,查看是否有個role表
3、在keystone上創建服務,並注冊api
[root@controller ~]# openstack service create --name glance --description "OpenStack Image" image [root@controller ~]# openstack endpoint create --region RegionOne image public http://controller:9292 [root@controller ~]# openstack endpoint create --region RegionOne image internal http://controller:9292 [root@controller ~]# openstack endpoint create --region RegionOne image admin http://controller:9292
4、安裝相應的服務
[root@controller ~]# yum install openstack-glance -y
5、編輯文件 /etc/glance/glance-api.conf 並完成如下動作
cp /etc/glance/glance-api.conf{,.bak} grep '^[a-z\[]' /etc/glance/glance-api.conf.bak >/etc/glance/glance-api.conf [database] 在 [database] 部分,配置數據庫訪問 ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance [keystone_authtoken] 在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問 ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS 將 GLANCE_PASS 替換為你為認證服務中你為 glance 用戶選擇的密碼。 [paste_deploy] ... flavor = keystone [glance_store] 在 [glance_store] 部分,配置本地文件系統存儲和鏡像文件位置 ... stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/
6、編輯文件 ``/etc/glance/glance-registry.conf``並完成如下動作
cp /etc/glance/glance-registry.conf{,.bak} 備份配置文件 grep '^[a-z\[]' /etc/glance/glance-registry.conf.bak >/etc/glance/glance-registry.conf 過濾空格和注釋行 [database] 在 [database] 部分,配置數據庫訪問 ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance [keystone_authtoken] 在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問 ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS [paste_deploy] ... flavor = keystone
7、數據庫同步
[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance [root@controller ~]# mysql glance -e "show tables;"
8、啟動服務
systemctl enable openstack-glance-api.service openstack-glance-registry.service 加入自啟動項
systemctl start openstack-glance-api.service openstack-glance-registry.service 批量啟動服務
9、上傳一個測試鏡像驗證服務
下載地址:http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
[root@controller opt]# openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
上傳成功!!!
10、驗證,查看鏡像位置
11、查看相關信息
[root@controller ~]# openstack image list 查看鏡像列表 +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 6ee7c745-cad8-46a0-ba90-78bbaa3ba1e8 | cirros | active | +--------------------------------------+--------+--------+ [root@controller ~]# mysql glance -e "show tables;"|grep image 查看鏡像存儲的數據庫表 image_locations image_members image_properties image_tags images [root@controller ~]#