openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】

问题导读

1.keystone认证部分,glance密码该如何设置?
2.配置 [keystone_authtoken] 和 [paste_deploy]有哪些需要注意的问题?
3.如何配置glance数据库连接?


openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】



配置准备

1.创建database,完成下面步骤:

a.使用root用户登录
[Bash shell] 纯文本查看 复制代码
?
1
mysql -u root -p


b.创建glance 数据库
[Bash shell] 纯文本查看 复制代码
?
1
CREATE DATABASE glance;


c.授权
[Bash shell] 纯文本查看 复制代码
?
1
2
3
4
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  IDENTIFIED BY 'GLANCE_DBPASS';


d.退出数据库
[Bash shell] 纯文本查看 复制代码
?
1
exit


2.生效admin环境变量
[Bash shell] 纯文本查看 复制代码
?
1
source admin-openrc.sh



3.创建认证服务,完成下面内容
a.创建glance的用户
[Bash shell] 纯文本查看 复制代码
?
1
openstack user create --password-prompt glance

User Password:
Repeat User Password:


b.添加  admin 角色 到 glance 用户 和 service 租户:
[Bash shell] 纯文本查看 复制代码
?
1
openstack role add --project service --user glance admin

openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】 


c.创建 glance服务实例:
[Bash shell] 纯文本查看 复制代码
?
1
2
openstack service create --name glance \
  --description "OpenStack Image service" image


openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】 




4.创建镜像服务 API endpoint:
[Bash shell] 纯文本查看 复制代码
?
1
2
3
4
5
6
openstack endpoint create \
  --publicurl http://controller:9292 \
  --internalurl http://controller:9292 \
  --adminurl http://controller:9292 \
  --region RegionOne \
  image


openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】 


安装配置glance服务组件

1.安装glance 

[Bash shell] 纯文本查看 复制代码
?
1
apt-get install glance python-glanceclient -y

-----------------------------------------------------------------------------------------------------------

Glance Image service

Image service项目代号Glance,是Openstack的镜像服务组件。Glance主要提供了一个虚拟机镜像文件的存储、查询和检索服务,通过提供一个虚拟磁盘映像目录和存储库,为Nova的虚拟机提供镜像服务。现在Glance具有V1和V2(Openstack-F发布)两个版本。 
openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】

Image service 的组件

Glance-Api

glance-api:是一个对外的API接口,能够接受外部的API镜像请求。主要用于分析、分发、响应各种镜像管理的REST Request,然后通过其他模块(EG. glance-registry、Store Backend后端存储接口)完成镜像的发现、获取、存储等操作。默认绑定端口是9292

Glance-Registry

glance-registry:用于存储、处理、获取Image Metadata。通过响应从glance-api发送过来的Image Metadata REST Request,然后与MySQL进行交互,实现Image Metadate的存储、处理、获取。默认绑定的端口是9191

Glance-db

glance-db:在Openstack中使用MySQL来支撑,用于存放Image Metadate。 
Image Metadate(镜像元数据):指通过glance-registry来保存在MySQL Database中的镜像文件相关信息。

Image Store(Store Backend)

Image Store:用于存储镜像文件。通过Store Backend后端存储接口来与glance-api联系。通过这个接口,glance可以从Image Store获取镜像文件再交由Nova用于创建虚拟机。

Glance 通过Store Adapter(存储适配器)支持多种Imange Store方案: 
openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】

Glance允许上传私有或共有的不同格式镜像

  • Raw
  • Machine (kernel/ramdisk outside of image, a.k.a. AMI)
  • VHD (Hyper-V)
  • VDI (VirtualBox)
  • qcow2 (Qemu/KVM)
  • VMDK (VMWare)
  • OVF (VMWare, others)

Image

Image(镜像文件)的访问权限分为

  • Public 公共的:可以被所有的Tenant使用。
  • Private 私有的/项目的:只能被Image Owner所在的Tenant使用。
  • Shared 共享的:一个非公共的Image可以共享给指定的Tenant,通过member-*操作来实现。
  • Protected 受保护的:Protected Image不能被删除。

Image的状态类型

  • Queued:没有上传Image数据,只SQL Database中存有该镜像的元数据。
  • Saving:正在上传Image。
  • Active:正常状态。
  • Deleted/pending_delete: 已删除/等待删除的Image。
  • Killed:Image元数据不正确,等待被删除。

Image状态类型转换

  • ‘queued’ => (‘saving’, ‘active’, ‘deleted’)
  • ‘saving’ => (‘active’, ‘killed’, ‘deleted’, ‘queued’)
  • ‘active’ => (‘queued’, ‘pending_delete’, ‘deleted’)
  • ‘killed’ => (‘deleted’)
  • ‘pending_delete’ => (‘deleted’)
  • ‘deleted’ => ()

Glance 架构

Glance Restful API — V1

V1的功能:提供了基本的ImageMember操作 
1. 镜像文件的创建、删除、查询、更改 
2. 镜像Tenant成员的创建、删除和查询

V1包含有glance-apiglance-registry两个WSGI service,都提供了REST API接口来接收虚拟机镜像管理的请求。

两者的区别在于glance-api的REST API能够对外开放而glance-registry的REST API只能够被glance-api调用。

V1的架构

openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】

需要注意的是glance-api 不会真正去处理REST Request,可以将glance-api再分为两部分:

  • 一部分是中间件,主要用于对REST Request的分析、分发工作(EG. 分析出版本号)
  • 另一部分来提供实际的服务(EG. 与Store Backend后端存储接口交互,实现镜像上传、下载)

所以若glance-api接收到涉及SQL Database的操作请求时,会调用registry-clinet并生成HTTP指令,然后转发给glance-registryAPI进行处理。

Glance Restful API — V2

V2的功能:除了拥有V1的功能之外,还能够: 
1. 镜像Location的添加、删除和修改 
2. Metadata、Namespace、Image tag操作

V2架构图: 
openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】

V2在实现上,把glance-registryglance-api合并到了一起,减少了一个中间环节。


-----------------------------------------------------------------------------------------------------------



2.编辑文件 /etc/glance/glance-api.conf,完成下面内容

a.在[database]部分,配置数据库访问
[Bash shell] 纯文本查看 复制代码
?
1
2
3
[database]
...
connection = mysql://glance:[email protected]/glance

这里的密码是数据库密码,切忌不要跟glance用户的密码不要混肴

b.在 [keystone_authtoken] 和 [paste_deploy] 部分, 配置 Identity服务访问:
[Bash shell] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = glance
password = GLANCE_PASS
  
[paste_deploy]
...
flavor = keystone


GLANCE_PASS替换为自己设置密码,我这里123

注意:
注释掉其它 [keystone_authtoken] 部分password = GLANCE_PASS这里改成自己设置密码

c.在 [glance_store] 部分, 配置本地文件系统存储和image文件路径
[Bash shell] 纯文本查看 复制代码
?
1
2
3
4
[glance_store]
...
default_store = file
filesystem_store_datadir = /var/lib/glance/images/


d.在 [DEFAULT]部分,配置noop 禁用通知驱动,因为它只属于可选的遥测服务:
[Bash shell] 纯文本查看 复制代码
?
1
2
3
[DEFAULT]
...
notification_driver = noop



e.在[DEFAULT]部分启用日志详细信息记录
[Bash shell] 纯文本查看 复制代码
?
1
2
3
[DEFAULT]
...
verbose = True


3.编辑 /etc/glance/glance-registry.conf 文件,完成下面内容

a.在[database] ,配置数据库连接
[Bash shell] 纯文本查看 复制代码
?
1
2
3
[database]
...
connection = mysql://glance:[email protected]/glance


b.在 [keystone_authtoken] 和 [paste_deploy] 部分, 配置 Identity service 访问:
[Bash shell] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = glance
password = GLANCE_PASS
  
[paste_deploy]
...
flavor = keystone


注意:
GLANCE_PASS 替换为自己的密码
注释掉其它[keystone_authtoken] 部分

c.在 [DEFAULT] 部分, 配置  noopdriver 禁用通知因为他们只属于遥测服务
[Bash shell] 纯文本查看 复制代码
?
1
2
3
[DEFAULT]
...
notification_driver = noop


d.方便排除,启用日志信息详细记录
[Bash shell] 纯文本查看 复制代码
?
1
2
3
[DEFAULT]
...
verbose = True


4.同步数据库
[Bash shell] 纯文本查看 复制代码
?
1
su -s /bin/sh -c "glance-manage db_sync" glance




完成安装

1.重启镜像服务

[Bash shell] 纯文本查看 复制代码
?
1
2
service glance-registry restart
service glance-api restart


2.如果存在SQLite 数据库则删除.
[Bash shell] 纯文本查看 复制代码
?
1
rm -f /var/lib/glance/glance.sqlite



遇到问题:
ERROR: openstack No tenant with a name or ID of 'service' exists.
原因没有创建service 租户
解决:
创建租户即可
[Bash shell] 纯文本查看 复制代码
?
1
openstack project create --description "Service Project" service