第三张-镜像服务Glance
镜像服务 (glance) 允许用户发现、注册和获取虚拟机镜像。它提供了一个 REST API,允许您查询虚拟机镜像的 metadata 并获取一个现存的镜像。您可以将虚拟机镜像存储到各种位置,从简单的文件系统到对象存储系统—-例如 OpenStack 对象存储, 并通过镜像服务使用。
Glance-api:接受云系统镜像的创建,删除,读取请求(监听端口9292)
Glance-Registry:云系统的镜像注册服务(主要用于mysql交互监听端口:9191)
镜像默存储目录:/var/lib/glance/images/
第一步创建数据库,第一章有写
第二步创建用户:第二章有写
创建``glance``服务实体:
[root@openstack-1 ~]# source admin-openstack [root@openstack-1 ~]# openstack service create --name glance \ > --description "OpenStack Image" image +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Image | | enabled | True | | id | a4d3bef656fb48ea886932f091222b34 | | name | glance | | type | image | +-------------+----------------------------------+
创建镜像服务的 API 端点:
[root@openstack-1 ~]# openstack endpoint create --region RegionOne \ > image public http://192.168.10.131:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | ba565a550f4b43548328ef11bbdfcabc | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | a4d3bef656fb48ea886932f091222b34 | | service_name | glance | | service_type | image | | url | http://192.168.10.131:9292 | +--------------+----------------------------------+ [root@openstack-1 ~]# openstack endpoint create --region RegionOne \ > image internal http://192.168.10.131:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 4eb1d2877789495e9bf2cf35b0b0a7b3 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | a4d3bef656fb48ea886932f091222b34 | | service_name | glance | | service_type | image | | url | http://192.168.10.131:9292 | +--------------+----------------------------------+ [root@openstack-1 ~]# openstack endpoint create --region RegionOne \ > image admin http://192.168.10.131:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | f33fc9f9c0054c8388f0bb959114cb5a | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | a4d3bef656fb48ea886932f091222b34 | | service_name | glance | | service_type | image | | url | http://192.168.10.131:9292 | +--------------+----------------------------------+
安装并配置组件
安装软件包:
[root@openstack-1 ~]# yum install openstack-glance
编辑文件 /etc/glance/glance-api.conf 并完成如下动作:
-
在 [database] 部分,配置数据库访问:
connection = mysql+pymysql://glance:glance@192.168.10.172/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken] auth_uri = http://192.168.10.131:5000 auth_url = http://192.168.10.131:35357 memcached_servers = 192.168.10.131:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [paste_deploy] flavor = keystone
在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置:
stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/
编辑文件 ``/etc/glance/glance-registry.conf``并完成如下动作:
-
在 [database] 部分,配置数据库访问:
connection = mysql+pymysql://glance:glance@192.168.10.172/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken] auth_uri = http://192.168.10.131:5000 auth_url = http://192.168.10.131:35357 memcached_servers = 192.168.10.131:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [paste_deploy] flavor = keystone
写入镜像服务数据库:
[root@openstack-1 ~]# su -s /bin/sh -c "glance-manage db_sync" glance /usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1336: OsloDBDeprecationWarning: EngineFacade is deprecated; please use oslo_db.sqlalchemy.enginefacade expire_on_commit=expire_on_commit, _conf=conf) INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade -> liberty, liberty initial INFO [alembic.runtime.migration] Running upgrade liberty -> mitaka01, add index on created_at and updated_at columns of 'images' table INFO [alembic.runtime.migration] Running upgrade mitaka01 -> mitaka02, update metadef os_nova_server INFO [alembic.runtime.migration] Running upgrade mitaka02 -> ocata_expand01, add visibility to images INFO [alembic.runtime.migration] Running upgrade ocata_expand01 -> pike_expand01, empty expand for symmetry with pike_contract01 INFO [alembic.runtime.migration] Running upgrade pike_expand01 -> queens_expand01 INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Upgraded database to: queens_expand01, current revision(s): queens_expand01 INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Database migration is up to date. No migration needed. INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade mitaka02 -> ocata_contract01, remove is_public from images INFO [alembic.runtime.migration] Running upgrade ocata_contract01 -> pike_contract01, drop glare artifacts tables INFO [alembic.runtime.migration] Running upgrade pike_contract01 -> queens_contract01 INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Upgraded database to: queens_contract01, current revision(s): queens_contract01 INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Database is synced successfully.
验证操作:
[root@openstack-1 ~]# mysql -h 192.168.10.172 -uglance -pglance -e "use glance;show tables" +----------------------------------+ | Tables_in_glance | +----------------------------------+ | alembic_version | | image_locations | | image_members | | image_properties | | image_tags | | images | | metadef_namespace_resource_types | | metadef_namespaces | | metadef_objects | | metadef_properties | | metadef_resource_types | | metadef_tags | | migrate_version | | task_info | | tasks | +----------------------------------+
启动镜像服务、配置他们随机启动:
[root@openstack-1 ~]# systemctl enable openstack-glance-api.service openstack-glance-registry.service [root@openstack-1 ~]# systemctl start openstack-glance-api.service openstack-glance-registry.service [root@openstack-1 ~]# systemctl status openstack-glance-api.service openstack-glance-registry.service
配置文件对比:
[root@openstack-1 ~]# grep ^[a-z] /etc/glance/glance-api.conf connection = mysql+pymysql://glance:glance@192.168.10.172/glance stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images auth_uri = http://192.168.10.131:5000 auth_url = http://192.168.10.131:35357 memcached_servers = 192.168.10.131:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance flavor = keystone [root@openstack-1 ~]# grep ^[a-z] /etc/glance/glance-registry.conf connection = mysql+pymysql://glance:glance@192.168.10.172/glance auth_uri = http://192.168.10.131:5000 auth_url = http://192.168.10.131:35357 memcached_servers = 192.168.10.131:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance flavor = keystone
验证操作
获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
[root@openstack-1 ~]# source admin-openstack
下载源镜像:
[root@openstack-1 ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:
[root@openstack-1 ~]# openstack image create "cirros" \ > --file cirros-0.3.4-x86_64-disk.img \ > --disk-format qcow2 --container-format bare \ > --public +------------------+------------------------------------------------------+ | Field | Value | +------------------+------------------------------------------------------+ | checksum | ee1eca47dc88f4879d8a229cc70a07c6 | | container_format | bare | | created_at | 2018-09-11T03:00:43Z | | disk_format | qcow2 | | file | /v2/images/15885367-e9a0-470d-a94c-881244594a80/file | | id | 15885367-e9a0-470d-a94c-881244594a80 | | min_disk | 0 | | min_ram | 0 | | name | cirros | | owner | 7cdfaafe2cc1430e952da1fbabbe5d44 | | protected | False | | schema | /v2/schemas/image | | size | 13287936 | | status | active | | tags | | | updated_at | 2018-09-11T03:00:43Z | | virtual_size | None | | visibility | public | +------------------+------------------------------------------------------+
确认镜像的上传并验证属性:
[root@openstack-1 ~]# openstack image list +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 15885367-e9a0-470d-a94c-881244594a80 | cirros | active | +--------------------------------------+--------+--------+
作者:闫世成
出处:http://cnblogs.com/yanshicheng

浙公网安备 33010602011771号