Image Service 的功能是管理 Image,让用户能够发现、获取和保存 Image。在 OpenStack 中,提供 Image Service 的是 Glance,其具体功能如下:
架构图
glance-api 是系统后台运行的服务进程。 对外提供 REST API,响应 image 查询、获取和存储的调用。
glance-api 不会真正处理请求。 如果操作是与 image metadata(元数据)相关,glance-api 会把请求转发给 glance-registry; 如果操作是与 image 自身存取相关,glance-api 会把请求转发给该 image 的 store backend。
在控制节点上可以查看 glance-api 进程
ps aux | grep glance-api
glance-registry 是系统后台运行的服务进程。 负责处理和存取 image 的 metadata,例如 image 的大小和类型。
在控制节点上可以查看 glance-registry 进程,
ps aux | grep glance-registry
Glance 自己并不存储 image。 真正的 image 是存放在 backend 中的。 Glance 支持多种 backend,包括:
具体使用哪种 backend,是在 /etc/glance/glance-api.conf 中配置的
查看目前存在的image
openstack image list
ls /var/lib/glance/images
执行image上传镜像命令:
openstack image create “cirros” --file cirros-0.3.3-x86_64-disk.img.img --disk-format qcow2 --container-format bare --public
mysql -uroot -p123
创建glance数据库
CREATE DATABASE glance;
创建glance数据库
设置可以本地登录
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@‘localhost’
IDENTIFIED BY ‘123’;
设置可以远程登录
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’%’
IDENTIFIED BY ‘123’;
创建glance用户
openstack user create --domain default --password=glance glance
[[email protected] ~]# openstack user create --domain default --password=admin glance +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | be520627818844429e73dfc84132e4a3 | | name | glance | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+
将glance用户设置为service的管理员
openstack role add --project service --user glance admin
建立glance的服务
openstack service create --name glance
–description “OpenStack Image” image
[[email protected] ~]# openstack service create --name glance \ > --description "OpenStack Image" image +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Image | | enabled | True | | id | 1bab5039ff5a4c7d9cb2887845e41535 | | name | glance | | type | image | +-------------+----------------------------------+
建立服务端口
openstack endpoint create --region RegionOne
image public http://chen1:9292
[[email protected] ~]# openstack endpoint create --region RegionOne \ > image public http://chen1:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 69d7a7c6f96442d6ba4e5e5d8e8a383c | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 1bab5039ff5a4c7d9cb2887845e41535 | | service_name | glance | | service_type | image | | url | http://chen1:9292 | +--------------+----------------------------------+
openstack endpoint create --region RegionOne
image internal http://chen1:9292
[[email protected] ~]# openstack endpoint create --region RegionOne \ > image internal http://chen1:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 2deab16e4dee47718a834d0841de1c89 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 1bab5039ff5a4c7d9cb2887845e41535 | | service_name | glance | | service_type | image | | url | http://chen1:9292 | +--------------+----------------------------------+
openstack endpoint create --region RegionOne
image admin http://chen1:9292
[[email protected] ~]# openstack endpoint create --region RegionOne \ > image admin http://chen1:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 77d87ebe3d2246d88f8e3264730e4c73 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 1bab5039ff5a4c7d9cb2887845e41535 | | service_name | glance | | service_type | image | | url | http://chen1:9292 | +--------------+----------------------------------+
如果添加错误:
openstack endpoint delete id号
yum -y install openstack-glance
如果失败,检查下sr0是否挂载,以及全局dns配置文件是否更改/etc/resolve.conf
编辑glance配置文件
先备份
cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
cp /etc/glance/glance-registry.conf /etc/glance/glance-registry.conf.bak
vim /etc/glance/glance-api.conf
[DEFAULT] [cors] [cors.subdomain] [database] connection = mysql+pymysql://glance:[email protected]/glance [glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/ [image_format] [keystone_authtoken] auth_uri = http://chen1:5000 auth_url = http://chen1:35357 memcached_servers = chen1:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [matchmaker_redis] [oslo_concurrency] [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_middleware] [oslo_policy] [paste_deploy] flavor = keystone [profiler] [store_type_location_strategy] [task] [taskflow_executor]
给予权限
chmod 640 glance-api.conf
chown root.glance glance-api.conf
vim /etc/glance/glance-registry.conf
[DEFAULT] [database] connection = mysql+pymysql://glance:[email protected]/glance [keystone_authtoken] auth_uri = http://chen1:5000 auth_url = http://chen1:35357 memcached_servers = chen1:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [matchmaker_redis] [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_policy] [paste_deploy] flavor = keystone [profiler]
同步数据库
su -s /bin/sh -c “glance-manage db_sync” glance
启动glance相关服务
systemctl enable openstack-glance-api.service
openstack-glance-registry.service
systemctl start openstack-glance-api.service
openstack-glance-registry.service
进入目录进行验证
cd /var/lib/glance/images
ls
如果什么没有
则需要下载镜像
wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
创建cirros镜像
openstack image create "cirros" \ --file cirros-0.3.5-x86_64-disk.img \ #文件来源于刚刚下载的 --disk-format qcow2 --container-format bare \ #格式为qcow2 --public #类型为public类型
显示如下
+------------------+------------------------------------------------------+ | Field | Value | +------------------+------------------------------------------------------+ | checksum | f8ab98ff5e73ebab884d80c9dc9c7290 | | container_format | bare | | created_at | 2019-04-09T11:30:55Z | | disk_format | qcow2 | | file | /v2/images/d34fd470-b2aa-44a8-b1c9-eb9af3eb4184/file | | id | d34fd470-b2aa-44a8-b1c9-eb9af3eb4184 | | min_disk | 0 | | min_ram | 0 | | name | cirros | | owner | bd5cc336450942d8817b10845ef20605 | | protected | False | | schema | /v2/schemas/image | | size | 13267968 | | status | active | | tags | | | updated_at | 2019-04-09T11:30:55Z | | virtual_size | None | | visibility | public | +------------------+------------------------------------------------------+
如果失败,则检查下之前创建glance用户时密码与 /etc/glance/glance-registry.conf、/etc/glance/glance-api.conf里面设置的密码是否相同,如果不同,可以更改配置文件或者删除用户重新创建用户,但是密码必须相同
查看
openstack image list
+--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | d34fd470-b2aa-44a8-b1c9-eb9af3eb4184 | cirros | active | +--------------------------------------+--------+--------+