接下来继续安装镜像服务:
1.镜像服务glance介绍
openstack image service(glance)是虚拟机镜像的存储,查询,检索系统。Glance是opensatck image service的项目名称,它会注册,列出并检索虚拟机镜像。
2.镜像服务组件介绍
glance-api:接收镜像API的调用,诸如镜像发现、恢复、存储。
glance-registry:存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。(主要和数据库交互,获取或者存储镜像元数据)
数据库(glance):存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
镜像文件存储仓库:Various repository types are supported including normal file systems.
注意:glance管理在opensatck集群中的镜像,但不负责实际的存储。目前glance的镜像存储,支持本地存储,nfs,swift,sheepdog,ceph等存储方式。
结构图如下:
3.先决条件
1.创建数据库并授权:
CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \ IDENTIFIED BY 'GLANCE_DBPASS'; mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \ IDENTIFIED BY 'GLANCE_DBPASS';2.获得admin账号权限
source openrc
openrc内容如下:
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
3.创建glance用户,并添加admin角色到glance用户
$ openstack user create --domain default --password-prompt glance User Password: Repeat User Password: +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 3f4e777c4062483ab8d9edd7dff829df | | name | glance | | password_expires_at | None | +---------------------+----------------------------------+
$ openstack role add --project service --user glance admin
4.创建服务实体和endpoint
$ openstack service create --name glance \ --description "OpenStack Image" image +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Image | | enabled | True | | id | 8c2c7f1b9b5049ea9e63757b5533e6d2 | | name | glance | | type | image | +-------------+----------------------------------+
$ openstack endpoint create --region RegionOne \ image public http://controller:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 340be3625e9b4239a6415d034e98aace | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 8c2c7f1b9b5049ea9e63757b5533e6d2 | | service_name | glance | | service_type | image | | url | http://controller:9292 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne \ image internal http://controller:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | a6e4b153c2ae4c919eccfdbb7dceb5d2 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 8c2c7f1b9b5049ea9e63757b5533e6d2 | | service_name | glance | | service_type | image | | url | http://controller:9292 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne \ image admin http://controller:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 0c37ed58103f4300a84ff125a539032d | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 8c2c7f1b9b5049ea9e63757b5533e6d2 | | service_name | glance | | service_type | image | | url | http://controller:9292 | +--------------+----------------------------------+4.安装并配置组件
1.安装软件包:
# yum install openstack-glance
2.配置文件
/etc/glance/glance-api.conf:
【database】
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance在
[keystone_authtoken]
和
[paste_deploy]
部分,配置认证服务访问:
[keystone_authtoken] ... 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注意 :将glance_dbpass修改为自己的密码。最好controller改为ip。在
[keystone_authtoken]
中注释或者删除其他选项。
3.修改配置文件/etc/glance/glance-registry.conf:
【database】
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance在
[keystone_authtoken]
和
[paste_deploy]
部分,配置认证服务访问:
[keystone_authtoken] ... 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注意 :将glance_dbpass修改为自己的密码。最好controller改为ip。在
[keystone_authtoken]
中注释或者删除其他选项。
查看文件内容:
[root@controller ~]# grep "^[a-z]" /etc/glance/glance-api.conf
connection = mysql+pymysql://glance:123456@192.168.141.170/glance
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
auth_uri = http://192.168.141.170:5000
auth_url = http://192.168.141.170:35357
memcached_servers = 192.168.141.170:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123456
flavor = keystone
[root@controller ~]# grep "^[a-z]" /etc/glance/glance-api.conf |wc -l
14
[root@controller ~]# vi /etc/glance/glance-registry.conf
[root@controller ~]# grep "^[a-z]" /etc/glance/glance-registry.conf
connection = mysql+pymysql://glance:123456@192.168.141.170/glance
auth_uri = http://192.168.141.170:5000
auth_url = http://192.168.141.170:35357
memcached_servers = 192.168.141.170:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123456
flavor = keystone
4.写入数据库
# su -s /bin/sh -c "glance-manage db_sync" glance注意:忽略输出内容。
输出内容如下:
[root@controller ~]# 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)
5.安装完成后启动服务并添加开机自启动
# systemctl enable openstack-glance-api.service \ openstack-glance-registry.service # systemctl start openstack-glance-api.service \ openstack-glance-registry.service6.验证操作
1.获得admin账号权限
source openrc
2.下载镜像
wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img3. 使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:
$ openstack image create "cirros" \ --file cirros-0.3.4-x86_64-disk.img \ --disk-format qcow2 --container-format bare \ --public +------------------+------------------------------------------------------+ | Field | Value | +------------------+------------------------------------------------------+ | checksum | 133eae9fb1c98f45894a4e60d8736619 | | container_format | bare | | created_at | 2015-03-26T16:52:10Z | | disk_format | qcow2 | | file | /v2/images/cc5c6982-4910-471e-b864-1098015901b5/file | | id | cc5c6982-4910-471e-b864-1098015901b5 | | min_disk | 0 | | min_ram | 0 | | name | cirros | | owner | ae7a98326b9c455588edd2656d723b9d | | protected | False | | schema | /v2/schemas/image | | size | 13200896 | | status | active | | tags | | | updated_at | 2015-03-26T16:52:10Z | | virtual_size | None | | visibility | public | +------------------+------------------------------------------------------+4.查看镜像
$ openstack image list +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 38047887-61a7-41ea-9b49-27987d5e8bb9 | cirros | active | +--------------------------------------+--------+--------+