五、OpenStack服务-Glance

本章目录

1、概述
2、Glance架构
3、安装配置Glance

一、概述

理解image Service
Image Service的功能是管理Image,让用户能够发现、获取和保存Image。
在OpenStack中,提供Image Service的是Glance,其具体功能如下:

  • 提供REST API,让用户能够查询和获取image的元数据和image本身。
  • 支持多种方式存储image,包括普通的文件系统、Swift、Amazon S3等。
  • 对Instance执行Snapshot创建新的image。

二、Glance架构

glance架构.jpg

OpenStack镜像服务包括以下组件:

  • glance-api

    接收镜像API的调用,诸如镜像发现、恢复、存储。

  • glance-registry

    存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。

  • 有两个配置文件,一个api.conf和registry.conf

    需要keystone认证

三、安装配置Glance

1、创建数据库并授权

1、登录数据库
mysql mysql -u root -p

2、创建数据库
MariaDB [(none)]> CREATE DATABASE glance;

3、授权
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  IDENTIFIED BY 'glance';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  IDENTIFIED BY 'glance';
  
4、查看验证
[root@controller ~]# mysql -uglance -pglance -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| glance             |
| information_schema |
+--------------------+
[root@controller ~]# 

2、创建glance用户、关联角色、在keystone上创建服务和注册api

1、创建用户
[root@controller ~]# . admin-openrc 
[root@controller ~]# openstack user create --domain default --password-prompt glance
User Password:glance
Repeat User Password:glance
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 31be40e20245472da1e5a6da135777f6 |
| name                | glance                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

帮助小技巧:(例如查看openstack的user如何使用)
#扩展非交互式创建用户方法(可以将上述创建用户的步骤改为此方法)
#[root@controller ~]# openstack user create --domain default --password glance(密码) glance(用户)

2、关联角色
Add the admin role to the glance user and service project:
添加 admin 角色到 glance 用户和 service 项目上:
[root@controller ~]# openstack role add --project service --user glance admin

#查看命令小技巧,执行错误命令
[root@controller ~]# openstack user (错误执行可以查看相关命令)
openstack: 'user' is not an openstack command. See 'openstack --help'.
Did you mean one of these?
  user create
  user delete
  user list
  user password set
  ..........
[root@controller ~]# openstack user list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| 31be40e20245472da1e5a6da135777f6 | glance |
| e1011877fc5d4275b7e4394463883ee0 | myuser |
| ef761eff8f434c558b42ed37406dd217 | admin  |
+----------------------------------+--------+

可以看到这些表都在keystone库中:
[root@controller ~]# mysql keystone -e "show tables"|grep user
federated_user
local_user
nonlocal_user
user
user_group_membership
user_option

3、在keystone上创建服务和注册api(都存在于keystone的表里)

3.1 Create the glance service entity:
[root@controller ~]# openstack service create --name glance \
  --description "OpenStack Image" image

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Image                  |
| enabled     | True                             |
| id          | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
| name        | glance                           |
| type        | image                            |
+-------------+----------------------------------+

3.2 Create the Image service API endpoints:
注意:理论上是需要三个不同的IP创建,三块网卡,例如公网内网,但是这里也可以使用一块网卡
创建注册api:
[root@controller ~]# 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           |
+--------------+----------------------------------+

[root@controller ~]# 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           |
+--------------+----------------------------------+

[root@controller ~]# 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           |
+--------------+----------------------------------+


注意:如果上边创建错误,可以使用如下方法删除
[root@controller ~]# openstack endpoint
openstack: 'endpoint' is not an openstack command. See 'openstack --help'.
Did you mean one of these?
  endpoint add project
  endpoint create
  endpoint delete
  ....
[root@controller ~]# openstack endpoint list
+----------------------------------+-----------+--------------+--------------+---------+-----------+---------------------------------+
| ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                             |
+----------------------------------+-----------+--------------+--------------+---------+-----------+---------------------------------+
| 316aea3c70c644a3a7f730f09a0d13bd | RegionOne | keystone     | identity     | True    | internal  | http://192.168.223.157:5000/v3/ |
| 388088f25766420b8e4a5e0dac81c3aa | RegionOne | glance       | image        | True    | public    | http://192.168.223.157:9292     |
| 4449ed76319d47ab94f1755b370b0089 | RegionOne | keystone     | identity     | True    | admin     | http://192.168.223.157:5000/v3/ |
| 5728a92401f54d03891daa85ee8e0409 | RegionOne | glance       | image        | True    | internal  | http://192.168.223.157:9292     |
| 82003a6672cb4f38a8bf2300c8cf5b91 | RegionOne | keystone     | identity     | True    | public    | http://192.168.223.157:5000/v3/ |
| e14725b9f6ae4c1ab442ceffd59c2232 | RegionOne | glance       | image        | True    | admin     | http://192.168.223.157:9292     |
+----------------------------------+-----------+--------------+--------------+---------+-----------+---------------------------------+
[root@controller ~]# openstack endpoint delete ID号

3、安装、配置glance

安装软件包

[root@controller ~]# yum -y install openstack-glance

修改配置文件
(1) 修改配置文件:/etc/glance/glance-api.conf

修改配置文件(两个配置文件需要修改)
配置文件:/etc/glance/glance-api.conf 
三处:数据库连接信息、keystone认证信息、paste_deploy、glance_store
[root@controller ~]# vim /etc/glance/glance-api.conf 
第一处:
[database]
connection = mysql+pymysql://glance:glance@controller/glance
第二处:
[keystone_authtoken]
www_authenticate_uri  = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller: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/

自动化配置工具:yum -y install openstack-utils.noarch
——————————————————————————————————————————————————————————————————————————————————————
cp -a /etc/glance/glance-api.conf{,.bak}
grep -Ev '^$|#' /etc/glance/glance-api.conf.bak > /etc/glance/glance-api.conf

openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:glance@controller/glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri  http://controller:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password glance
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/ 

(2) 修改配置文件/etc/glance/glance-registry.conf

配置文件/etc/glance/glance-registry.conf 
修改三处:
[root@host157_node1 ~]# vim /etc/glance/glance-registry.conf 
1、数据库
[database]
#connection = <None>修改此行配置
connection = mysql+pymysql://glance:glance@controller/glance

2、keystone认证
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance

3、启用keystone认证
[paste_deploy]
flavor = keystone

-------------------------------------------------------------------------------------
cp -a /etc/glance/glance-registry.conf{,.bak}
grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf

openstack-config --set /etc/glance/glance-registry.conf  database connection mysql+pymysql://glance:glance@controller/glance
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken auth_url http://controller:5000
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken username glance
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken password glance
openstack-config --set /etc/glance/glance-registry.conf  paste_deploy flavor keystone

4、同步数据库

1、同步数据库
[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance
Database is synced successfully.

2、查看同步的表结构
[root@controller ~]# mysql -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                            |
+----------------------------------+

5、启动glance

1、设置开机自启:
[root@controller ~]# systemctl enable openstack-glance-api.service \
openstack-glance-registry.service

2、启动
[root@controller ~]#systemctl start openstack-glance-api.service \
openstack-glance-registry.service
[root@controller ~]# ps -ef|grep glance
glance    14942      1 20 18:33 ?        00:00:01 /usr/bin/python2 /usr/bin/glance-api
glance    14943      1 15 18:33 ?        00:00:01 /usr/bin/python2 /usr/bin/glance-registry
glance    14966  14943  0 18:33 ?        00:00:00 /usr/bin/python2 /usr/bin/glance-registry
glance    14967  14942  0 18:33 ?        00:00:00 /usr/bin/python2 /usr/bin/glance-api
root      14969  14366  0 18:33 pts/1    00:00:00 grep --color=auto glance

3、查看监听的端口(两个端口9191和9292,重点查看9292注册api的时候使用的9292)
[root@controller ~]# netstat -tunlp | egrep "9191|9292"
tcp        0      0 0.0.0.0:9191            0.0.0.0:*               LISTEN      20343/python2       
tcp        0      0 0.0.0.0:9292            0.0.0.0:*               LISTEN      20342/python2     
.....      
[root@controller ~]# ps -ef|grep 20342
glance    20342      1  1 17:02 ?        00:00:05 /usr/bin/python2 /usr/bin/glance-api
glance    20367  20342  0 17:02 ?        00:00:00 /usr/bin/python2 /usr/bin/glance-api
root      20611  14875  0 17:08 pts/1    00:00:00 grep --color=auto 20342
[root@controller ~]# ps -ef|grep 20343
glance    20343      1  1 17:02 ?        00:00:05 /usr/bin/python2 /usr/bin/glance-registry
glance    20366  20343  0 17:02 ?        00:00:00 /usr/bin/python2 /usr/bin/glance-registry
root      20615  14875  0 17:08 pts/1    00:00:00 grep --color=auto 20343

6、创建认证

[root@controller ~]# . admin-openrc  #需要source环境变量,要无法执行openstack短命令
[root@controller ~]# openstack service create --name glance \
 --description "OpenStack Image" image
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Image                  |
| enabled     | True                             |
| id          | c3eb02a214464a5e9dbf45b2f4854356 |
| name        | glance                           |
| type        | image                            |
+-------------+----------------------------------+

7、验证

验证步骤:下载个镜像--->上传镜像---->查看镜像

1、查看是否报错
[root@controller ~]# openstack image list
显示为空

2、下载比较慢(软件已经提前下载了)
[root@controller ~]# . admin-openrc 
[root@controller ~]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img

3、上传
[root@controller ~]# openstack image create "cirros" \
  --file cirros-0.4.0-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --public

解释:
 放哪:  --file cirros-0.4.0-x86_64-disk.img 
 镜像格式:--disk-format qcow2
 容器的格式:--container-format bare (bare证明是普通的虚拟机的镜像,不是容器的镜像)
 所以人可以看到:  --public
 
#验证是否上传成功:
 [root@controller ~]# ll -h /var/lib/glance/images/       #上边配置文件中指定存储镜像的路径
总用量 13M
-rw-r-----. 1 glance glance 13M 2月  21 23:57 bd4a8b1e-93e6-4cac-bd07-1926e0c015b0

[root@controller ~]# md5sum /var/lib/glance/images/bd4a8b1e-93e6-4cac-bd07-1926e0c015b0 
443b7623e27ecf03dc9e01ee93f67afe  /var/lib/glance/images/bd4a8b1e-93e6-4cac-bd07-1926e0c015b0
[root@controller ~]# md5sum cirros-0.4.0-x86_64-disk.img 
443b7623e27ecf03dc9e01ee93f67afe  cirros-0.4.0-x86_64-disk.img
 
4 、查看
[root@controller ~]# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 39aa0651-08fb-4c17-bb9a-c03f1d41b740 | cirros | active |
+--------------------------------------+--------+--------+
[root@controller ~]# mysql glance -e "show tables;"|grep image
image_locations
image_members
image_properties
image_tags
images

删除注意事项:
删除的时候要删除镜像,也要删除数据库中记录

8、日志查看

[root@controller ~]# grep 'ERROR' /var/log/glance/api.log 
[root@controller ~]# grep 'ERROR' /var/log/glance/registry.log 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容