OpenStack入門篇(八)之鏡像服務Glance

1、Glance的概述

Glance是爲虛擬機的建立提供鏡像的服務,咱們基於Openstack是構建基本的IaaS平臺對外提供虛擬機,而虛擬機在建立時必須爲選擇須要安裝的操做系統,Glance服務就是爲該選擇提供不一樣的操做系統鏡像。node

2、Glance的組件

  • Glance-API

主要用來響應各類REST請求而後經過其它模塊(主要是glance-registry組件和後端存儲接口)完成鏡像的上傳、刪除、查詢等操做。能夠簡單的再分爲兩部分:一層中間件,它主要是作一些對請求的解析工做(如分析出版本號), 另一部分提供實際的服務(如與鏡像上傳下載的後端存儲接口交互)。默認綁定端口是9292。python

  • Glance-Registry

鏡像註冊服務用於提供鏡像元數據的REST接口。主要工做是存儲或者獲取鏡像的元數據,與MySQL數據庫進行交互。也能夠簡單的再細分爲兩部分,API和具體的Server。元數據是指鏡像相關的一些信息(如id,size, status,location,checksum,min_disk,min_ram,owner等)真正的鏡像數據保存在實際所使用的後端存儲裏(如Swift,S3,Filesystem等)。默認綁定的端口是9191。mysql

  • Image Store

嚴格來講Image Store不屬於Glance的組件,這裏把它單獨分出來只是爲了方便理解,它只是一個接口層,提供鏡像存儲和查詢的接口。具體的實現則須要外部存儲(Swift,S3)的支持。linux

3、Glance的工做流程

Glance須要配置的服務:glance-api、glance-registry
Glance-api:接受雲系統鏡像的建立、刪除、讀取請求
Glance-registry:雲系統鏡像註冊服務sql

①Glance-api接收REST API的請求,相似nova-api
②Glance-api在功能上與nova-api十分相似,都是接收REST API請求,而後經過其餘模塊(glance-registry及Image Store)來完成諸如鏡像的查找、‘獲取、上傳、刪除等操做,api默認的監聽端口爲9292
③Glance-registry用於與MySQL數據庫交互,用於存儲或獲取鏡像的元數據(metadata);提供鏡像元數據相關的REST接口,經過glance-registry,能夠向數據庫寫入或獲取鏡像的各類數據,glance-registry的監聽端口爲9191。glance的數據庫中有兩張表,一張是image表,另外一張是imgage propetry表。image表保存了鏡像的格式、大小等信息;而image propetry表則主要保存鏡像的定製化信息。能夠經過:mysql -h 192.168.56.11 -uglance -pglance -e "use glance;show tables;"查看錶信息
④image store是一個存儲的接口層,經過這個接口,glance能夠獲取鏡像,image store支持有Amazon的S3,OpenStack自己的swift,還有諸如ceph,GlusterFS等分佈式存儲。Image Store僅僅是一個接口處,具體的實現須要外部的存儲支持。數據庫

總結:
glance-api 是系統後臺運行的服務進程。 
對外提供 REST API,響應 image 查詢、獲取和存儲的調用。swift

glance-api 不會真正處理請求。 
若是是與 image metadata(元數據)相關的操做,glance-api 會把請求轉發給 glance-registry; 
若是是與 image 自身存取相關的操做,glance-api 會把請求轉發給該 image 的 store 。後端

4、Glance安裝配置(此處將glance服務配置在控制節點上)

(1)建立「glance」服務實體api

[root@linux-node1 ~]# openstack service create --name glance \
>   --description "OpenStack Image" image

(2)建立鏡像服務的 API 端點:服務器

[root@linux-node1 ~]# openstack endpoint create --region RegionOne   image public http://192.168.56.11:9292
[root@linux-node1 ~]# openstack endpoint create --region RegionOne   image internal http://192.168.56.11:9292
[root@linux-node1 ~]# openstack endpoint create --region RegionOne   image admin http://192.168.56.11:9292

(3)編輯文件 /etc/glance/glance-api.conf 並完成以下動做:

在 [database] 部分,配置數據庫訪問:

[database]
...
connection = mysql+pymysql://glance:glance@192.168.56.11/glance
同步修改/etc/glance/glance-registry.conf

在 [database] 部分,配置數據庫訪問:

[database]
...
connection = mysql+pymysql://glance:glance@192.168.56.11/glance

(4)同步鏡像服務數據庫並查看建立是否成功(此處有WARNING能夠忽略):

[root@linux-node1 ~]# su -s /bin/sh -c "glance-manage db_sync" glance
Option "verbose" from group "DEFAULT" is deprecated for removal.  Its value may be silently ignored in the future.
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1171: OsloDBDeprecationWarning: EngineFacade is deprecated; please use oslo_db.sqlalchemy.enginefacade
  expire_on_commit=expire_on_commit, _conf=conf)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u"Duplicate index 'ix_image_properties_image_id_name' defined on the table 'glance.image_properties'. This is deprecated and will be disallowed in a future release.")
  result = self._query(query)

[root@linux-node1 ~]# mysql -h 192.168.56.11 -uglance -pglance -e "use glance;show tables;"

(5)編輯文件 /etc/glance/glance-api.conf 並完成以下動做:

在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問:

[keystone_authtoken]
...
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance

[paste_deploy]
...
flavor = keystone
同步修改
/etc/glance/glance-registry.conf 在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問: [keystone_authtoken] ... auth_uri = http://192.168.56.11:5000 auth_url = http://192.168.56.11:35357 memcached_servers = 192.168.56.11:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [paste_deploy] ... flavor = keystone

(6)編輯文件 /etc/glance/glance-api.conf 並完成以下動做:

在 [glance_store] 部分,配置本地文件系統存儲和鏡像文件位置:只須要打開註釋

[glance_store]
...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

到此,glance-api和glance-registry都已經配置完畢
查看glance-api和registry的全部配置

[root@linux-node1 ~]# grep "^[a-z]" /etc/glance/glance-api.conf 
connection =  mysql+pymysql://glance:glance@192.168.56.11/glance
stores = file,http                                                     \# 配置本地文件系統和鏡像存儲位置
default_store = file                                                 \#默認存儲文件類型
filesystem_store_datadir = /var/lib/glance/images   \#默認鏡像存儲位置
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
flavor = keystone      \#配置認證服務訪問

[root@linux-node1 ~]# grep "^[a-z]" /etc/glance/glance-registry.conf 
connection = mysql+pymysql://glance:glance@192.168.56.11/glance
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
flavor = keystone

(7)完成安裝和配置,啓動glance服務

[root@linux-node1 ~]# systemctl enable openstack-glance-api.service   openstack-glance-registry.service
[root@linux-node1 ~]# systemctl start openstack-glance-api.service   openstack-glance-registry.service

(8)驗證操做
①得到 admin 憑證來獲取只有管理員能執行的命令的訪問權限:

[root@linux-node1 ~]# source admin-openstack

②下載源鏡像

[root@linux-node1 ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

③使用 QCOW2 磁盤格式, bare 容器格式上傳鏡像到鏡像服務並設置公共可見,這樣全部的項目均可以訪問它:
注: 把鏡像放到任意目錄下,執行如下命令,進入那個目錄,不然要加絕對路徑

[root@linux-node1 ~]# openstack image create "cirros"   --file cirros-0.3.4-x86_64-disk.img   --disk-format qcow2 --container-format bare   --public

檢查上傳結果:

[root@linux-node1 ~]# openstack image list

5、Glance配置總結

①glance服務須要使用數據庫,須要在配置文件中配置數據庫鏈接;②glance服務使用須要在keystone上進行註冊認證,須要在配置文件中配置keystone的驗證參數和方式,以及token的存儲指定在memcache服務器上;③glance服務的鏡像須要配置存儲的類型以及路徑。

相關文章
相關標籤/搜索