openstack【Kilo】入门 【glance篇】十:glance安装配置【控制节点】
1.keystone认证部分,glance密码该如何设置?
2.配置 [keystone_authtoken] 和 [paste_deploy]有哪些需要注意的问题?
3.如何配置glance数据库连接?
配置准备
1.创建database,完成下面步骤:
a.使用root用户登录
1
|
mysql
-u root -p
|
b.创建glance 数据库
1
|
CREATE
DATABASE glance;
|
c.授权
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.退出数据库
1
|
exit
|
2.生效admin环境变量
1
|
source
admin-openrc.sh
|
3.创建认证服务,完成下面内容
a.创建glance的用户
1
|
openstack
user create --password-prompt glance
|
User Password:
Repeat User Password:
b.添加 admin 角色 到 glance 用户 和 service 租户:
1
|
openstack
role add --project service --user glance admin
|
c.创建 glance服务实例:
1
2
|
openstack
service create --name glance \
--description
"OpenStack
Image service"
image
|
4.创建镜像服务 API endpoint:
1
2
3
4
5
6
|
openstack
endpoint create \
--publicurl
http: //controller :9292
\
--internalurl
http: //controller :9292
\
--adminurl
http: //controller :9292
\
--region
RegionOne \
image
|
安装配置glance服务组件
1.安装glance
1
|
apt-get
install
glance python-glanceclient -y
|
Glance Image service
Image service项目代号Glance,是Openstack的镜像服务组件。Glance主要提供了一个虚拟机镜像文件的存储、查询和检索服务,通过提供一个虚拟磁盘映像目录和存储库,为Nova的虚拟机提供镜像服务。现在Glance具有V1和V2(Openstack-F发布)两个版本。
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方案:
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的功能:提供了基本的Image
和Member
操作
1. 镜像文件的创建、删除、查询、更改
2. 镜像Tenant成员的创建、删除和查询
V1包含有glance-api
和glance-registry
两个WSGI
service,都提供了REST API
接口来接收虚拟机镜像管理的请求。
两者的区别在于:glance-api
的REST API能够对外开放而glance-registry
的REST
API只能够被glance-api
调用。
V1的架构:
需要注意的是:glance-api
不会真正去处理REST
Request
,可以将glance-api
再分为两部分:
- 一部分是中间件,主要用于对
REST Request
的分析、分发工作(EG. 分析出版本号) - 另一部分来提供实际的服务(EG. 与Store Backend后端存储接口交互,实现镜像上传、下载)
所以若glance-api
接收到涉及SQL Database的操作请求时,会调用registry-clinet
并生成HTTP
指令,然后转发给glance-registry
API进行处理。
Glance Restful API — V2
V2的功能:除了拥有V1的功能之外,还能够:
1. 镜像Location的添加、删除和修改
2. Metadata、Namespace、Image tag操作
V2架构图:
V2在实现上,把glance-registry
和glance-api
合并到了一起,减少了一个中间环节。
2.编辑文件 /etc/glance/glance-api.conf,完成下面内容
a.在[database]部分,配置数据库访问
1
2
3
|
这里的密码是数据库密码,切忌不要跟glance用户的密码不要混肴
b.在 [keystone_authtoken] 和 [paste_deploy] 部分, 配置 Identity服务访问:
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文件路径
1
2
3
4
|
[glance_store]
...
default_store
= file
filesystem_store_datadir
= /var/lib/glance/images/
|
d.在 [DEFAULT]部分,配置noop 禁用通知驱动,因为它只属于可选的遥测服务:
1
2
3
|
[DEFAULT]
...
notification_driver
= noop
|
e.在[DEFAULT]部分启用日志详细信息记录
1
2
3
|
[DEFAULT]
...
verbose
= True
|
3.编辑 /etc/glance/glance-registry.conf 文件,完成下面内容
a.在[database] ,配置数据库连接
1
2
3
|
b.在 [keystone_authtoken] 和 [paste_deploy] 部分, 配置 Identity service 访问:
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 禁用通知因为他们只属于遥测服务
1
2
3
|
[DEFAULT]
...
notification_driver
= noop
|
d.方便排除,启用日志信息详细记录
1
2
3
|
[DEFAULT]
...
verbose
= True
|
4.同步数据库
1
|
su
-s /bin/sh
-c "glance-manage
db_sync"
glance
|
完成安装
1.重启镜像服务
1
2
|
service
glance-registry restart
service
glance-api restart
|
2.如果存在SQLite 数据库则删除.
1
|
rm
-f /var/lib/glance/glance .sqlite
|
遇到问题:
ERROR: openstack No tenant with a name or ID of 'service' exists.
原因没有创建service 租户
解决:
创建租户即可
1
|
openstack
project create --description "Service
Project"
service
|