Glance简介
glance是为Openstack提供镜像服务,Openstack镜像服务是基础设施即服务(IAAS)的中心,他接受处理来自用户的硬盘或服务镜像与镜像元数据等请求。他同时也提供硬盘、镜像存储服务。
openstack中的镜像服务包括如下内容:
glance-api
接受镜像api的调用,包括镜像发现、存储与检索
glance-registry
存储、处理与检索镜像的元数据,元数据主要包括镜像的类型与大小的信息
Database
存储镜像元数据,你可以根据你的个人爱好选择相应的数据库,大多数开发者选择MYSQL数据库或者SQLite
storage repository for image file
镜像文件的存储仓库,支持各种文件系统类型,其中包括普通文件系统、对象存储、RADOS块设备、HTTP、Amazon S3等。
安装与配置glance
这部分介绍安装与配置镜像服务,我们将镜像服务glance安装在controller节点,同时,为了简单起见,我们使用本地文件系统来存储镜像。
安装前准备
1、在我们安装前需要创建数据库,服务证书与API端点(endpoint)
a、连接controller数据库,请将密码PASSWORD替换为你的密码
mysql -uroot -pPASSWORD
b、创建数据库glance,并给glance授予本地与远程登陆的所有权限,PASSWORD,请将密码PASSWORD替换为你的密码
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'PASSWORD';
2、配置全局变量,在这里我们使用我们在“安装keystone”时创建的admin.sh脚本
source admin-openrc.sh
3、创建服务证书
a、创建glance用户
openstack user create --password-prompt glance User Password: Repeat User Password: +----------+----------------------------------+ | Field | Value | +----------+----------------------------------+ | email | None | | enabled | True | | id | 1dc206e084334db2bee88363745da014 | | name | glance | | username | glance | +----------+----------------------------------+
b、将admin角色加入glance用户与service工程
openstack role add --project service --user glance admin +-------+----------------------------------+ | Field | Value | +-------+----------------------------------+ | id | cd2cb9a39e874ea69e5d4b896eb16128 | | name | admin | +-------+----------------------------------+
c、创建glance服务实体
openstack service create --name glance \ --description "OpenStack Image service" image +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Image service | | enabled | True | | id | 178124d6081c441b80d79972614149c6 | | name | glance | | type | image | +-------------+----------------------------------+
d、创建服务镜像api endpoint
$ openstack endpoint create \ --publicurl http://controller:9292 \ --internalurl http://controller:9292 \ --adminurl http://controller:9292 \ --region RegionOne \ image +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | adminurl | http://controller:9292 | | id | 805b1dbc90ab47479111102bc6423313 | | internalurl | http://controller:9292 | | publicurl | http://controller:9292 | | region | RegionOne | | service_id | 178124d6081c441b80d79972614149c6 | | service_name | glance | | service_type | image | +--------------+----------------------------------+
安装与配置镜像服务组件
安装软件依赖
yum -y install python2-devel python-setuptools python-distutils-extra python-webob python-eventlet python-virtualenv libpqxx-devel
安装python-glanceclient(若在安装keystone时已经安装,则跳过此步骤)
git clone git://git.openstack.org/openstack/python-glanceclient cd python-glanceclient pip install -r requirements.txt pip install -r test-requirements.txt python setup.py install && cd ..
安装 python-cinderclient(若在安装keystone时已经安装,则跳过此步骤)
git clone git://git.openstack.org/openstack/python-cinderclient cd python-cinderclient pip install -r requirements.txt pip install -r test-requirements.txt python setup.py install && cd ..
安装python-keystonemiddleware(若在安装keystone时已经安装,则跳过此步骤)
git clone git://git.openstack.org/openstack/keystonemiddleware cd keystonemiddleware pip install -r requirements.txt pip install -r test-requirements.txt python setup.py install && cd ..
安装python-keystoneclient(若在安装keystone时已经安装,则跳过此步骤)
git clone git://git.openstack.org/openstack/python-keystoneclient cd python-keystoneclient pip install -r requirements.txt pip install -r test-requirements.txt python setup.py install && cd ..
安装glance-store
git clone https://github.com/openstack/glance_store.git cd glance_store pip install -r requirements.txt pip install -r test-requirements.txt python setup.py install && cd ..
安装swift-client
git clone git://git.openstack.org/openstack/python-swiftclient cd python-swiftclient/ pip install -r requirements.txt pip install -r test-requirements.txt python setup.py install && cd ..
安装glance
git clone git://git.openstack.org/openstack/glance cd glance pip install -r requirements.txt python setup.py install
新建/etc/glance
mkdir -p /etc/glance
将本目录下etc文件夹中的所有内容拷贝到/etc/glance/中
cp -r ./etc/* /etc/glance/
编辑glance的配置文件
修改配置文件 /etc/glance/glance-api.conf 并完成以下操作:
在 [database] 段,配置数据库访问相关参数:
[database] ... connection = mysql://glance:GLANCE_DBPASS@controller/glance
将其中的 GLANCE_DBPASS 替换为您为镜像服务数据库所设置的密码。
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置身份认证服务的访问:
[keystone_authtoken] ... auth_uri = http://控制器:5000 auth_url = http://控制器: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 替换为您在身份认证服务中为 glance 用户所设置的密码。
[注意] 注意
注释掉或移除 [keystone_authtoken]段的任何其它选项.
在 [glance_store] 部分,设置本地文件系统的存储和镜像文件的位置:
[glance_store] ... default_store = file filesystem_store_datadir = /var/lib/glance/images/
在 [DEFAULT] 部分,配置 noop 消息驱动以禁用消息,因为它们只与可选的 Telemetry 服务有关:
若没有/var/lib/glance/images文件夹,则新建
mkdir -p /var/lib/glance/images
若没有glance用户,先添加glance用户
useradd glance
修改/var/lib/glance/images权限
chown -R glance:glance /var/lib/glance/images
[DEFAULT] ... notification_driver = noop
(可选配置)可以在 [DEFAULT] 段中开启详细日志配置,为后期的故障排除提供帮助:
[DEFAULT] ... verbose = True log_file = /var/log/glance/glance-api.log
若没有/var/log/glance
mkdir -p /var/log/glance
更改权限
chown -R glance:glance /var/log/glance
修改配置文件 /etc/glance/glance-registry.conf 并完成以下操作:
在 [database] 段,配置数据库访问相关参数:
[database] ... connection = mysql://glance:GLANCE_DBPASS@控制器/glance
将其中的 GLANCE_DBPASS 替换为您为镜像服务数据库所设置的密码。
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置身份认证服务的访问:
[keystone_authtoken] ... auth_uri = http://控制器:5000 auth_url = http://控制器: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 替换为您在身份认证服务中为 glance 用户所设置的密码。
[注意] 注意
注释掉或移除 [keystone_authtoken]段的任何其它选项.
在 [DEFAULT] 部分,配置 noop 消息驱动以禁用消息,因为它们只与可选的 Telemetry 服务有关:
[DEFAULT] ... notification_driver = noop
(可选配置)可以在 [DEFAULT] 段中开启详细日志配置,为后期的故障排除提供帮助:
[DEFAULT] ... verbose = True ... log_file = /var/log/glance/glance-registry.log
写入数据库
su -s /bin/sh -c "glance-manage db_sync" glance
创建开机脚本
新建/usr/lib/systemd/system/glance-api.service文件,写入如下内容
[Unit] Description=OpenStack Image Service (code-named Glance) API server After=syslog.target network.target [Service] Type=notify NotifyAccess=all Restart=always User=glance ExecStart=/usr/bin/glance-api PrivateTmp=true [Install] WantedBy=multi-user.target
新建/usr/lib/systemd/system/glance-registry.service文件,写入如下内容
[Unit] Description=OpenStack Image Service (code-named Glance) Registry server After=syslog.target network.target [Service] Type=notify NotifyAccess=all Restart=always User=glance ExecStart=/usr/bin/glance-registry PrivateTmp=true [Install] WantedBy=multi-user.target
完成安装
启动glance api registry服务
$systemctl enable glance-api.service glance-registry.service $systemctl start glance-api.service glance-registry.service