前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenStack集群部署—glance集群

OpenStack集群部署—glance集群

作者头像
院长技术
发布于 2020-06-12 14:19:06
发布于 2020-06-12 14:19:06
1.2K00
代码可运行
举报
文章被收录于专栏:院长运维开发院长运维开发
运行总次数:0
代码可运行

Glance的概述 Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。

Glance的组件 Glance-API 主要用来响应各种REST请求然后通过其它模块(主要是glance-registry组件和后端存储接口)完成镜像的上传、删除、查询等操作。可以简单的再分为两部分:一层中间件,它主要是做一些对请求的解析工作(如分析出版本号), 另外一部分提供实际的服务(如与镜像上传下载的后端存储接口交互)。默认绑定端口是9292。

Glance-Registry 镜像注册服务用于提供镜像元数据的REST接口。主要工作是存储或者获取镜像的元数据,与MySQL数据库进行交互。也可以简单的再细分为两部分,API和具体的Server。元数据是指镜像相关的一些信息(如id,size, status,location,checksum,min_disk,min_ram,owner等)真正的镜像数据保存在实际所使用的后端存储里(如Swift,S3,Filesystem等)。默认绑定的端口是9191。

Image Store 严格来说Image Store不属于Glance的组件,这里把它单独分出来只是为了方便理解,它只是一个接口层,提供镜像存储和查询的接口。具体的实现则需要外部存储(Swift,S3)的支持。

部署glance 创建数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@controller01 ~]# mysql -u root -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 47
Server version: 10.2.29-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE glance;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]>  GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456';       
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456';       
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>  exit;
Bye

创建glance-api 创建service项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#创建service项目
#创建1个project,glance/nova/neutron等服务加入到此project;
# service项目在”Default” domain中
[root@controller01 ~]# openstack project create --domain Default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 327a7a4e418140108a8b4fed767e9ffe |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

创建glance用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@controller01 ~]# openstack user create --domain Default --password-prompt glance 
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 2d1a3f9658474db795a7f8834a83a16f |
| name                | glance                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

# 为glance用户赋予admin权限
[root@controller01 ~]# openstack role add --project service --user glance admin

# 服务实体类型”image”
[root@controller01 ~]# openstack service create --name glance --description "OpenStack Image" image
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Image                  |
| enabled     | True                             |
| id          | c28d6edb3ea04e11add10d410bfca9b9 |
| name        | glance                           |
| type        | image                            |
+-------------+----------------------------------+
# 注意--region与初始化admin用户时生成的region一致;
# api地址统一采用vip,如果public/internal/admin分别使用不同的vip,请注意区分;如果没vip,写单个控制节点的
# 服务类型为image;
# public api
[root@controller01 ~]# openstack endpoint create --region RegionOne image public http://controller01:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | f07aab17f01c4d3b8c82e229835fee7f |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | c28d6edb3ea04e11add10d410bfca9b9 |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller01:9292         |
+--------------+----------------------------------+

# internal api
[root@controller01 ~]# openstack endpoint create --region RegionOne image internal http://controller01:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 45fd0b57fda148bcbb112a7be056e73a |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | c28d6edb3ea04e11add10d410bfca9b9 |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller01:9292         |
+--------------+----------------------------------+

# admin api
[root@controller01 ~]# openstack endpoint create --region RegionOne image admin http://controller01:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 0278bf6855614b159ed7d7eeaecd0639 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | c28d6edb3ea04e11add10d410bfca9b9 |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller01:9292         |
+--------------+----------------------------------+

安装glance

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在全部控制节点安装glance,以controller01节点为例
[root@controller01 ~]# yum install openstack-glance python-glance python-glanceclient -y

配置glance-api.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在全部控制节点操作,以controller01节点为例;
# 注意”bind_host”参数,根据节点修改;
# 注意glance-api.conf文件的权限:root:glance
[root@controller01 ~]# cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
[root@controller01 ~]# egrep -v "^$|^#" /etc/glance/glance-api.conf
[DEFAULT]
ble_v1_api = false
bind_host = 192.168.182.131
[cors]
[database]
connection = mysql+pymysql://glance:123456@controller01/glance
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
[image_format]
[keystone_authtoken]
auth_url = http://controller01:5000
memcached_servers = controller01:11211,controller02:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123456
[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]

# 创建镜像存储目录并赋权限;
# /var/lib/glance/images是默认的存储目录
[root@controller01 ~]# mkdir -p /var/lib/glance/images
[root@controller01 ~]# chown glance:nobody /var/lib/glance/images
 #注意

Queens版本中已弃用Glance Registry Service及其API,并且将遵循OpenStack标准弃用策略在“ S”开发周期开始时将其删除。

有关更多信息,请参见Glance规范文档实际上不推荐使用Glance注册表。

同步glance数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 任意控制节点操作;
# 忽略输出的“deprecated”信息
[root@controller01 ~]# su -s /bin/sh -c "glance-manage db_sync" glance
[root@controller01 glance]# su -s /bin/sh -c "glance-manage db_sync" glance
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1352: 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] Running upgrade queens_expand01 -> rocky_expand01, add os_hidden column to images table
INFO  [alembic.runtime.migration] Running upgrade rocky_expand01 -> rocky_expand02, add os_hash_algo and os_hash_value columns to images table
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
Upgraded database to: rocky_expand02, current revision(s): rocky_expand02
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] Running upgrade queens_contract01 -> rocky_contract01
INFO  [alembic.runtime.migration] Running upgrade rocky_contract01 -> rocky_contract02
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
Upgraded database to: rocky_contract02, current revision(s): rocky_contract02
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
Database is synced successfully.
# 查看验证
[root@controller01 ~]# mysql -h controller01 -uglance -p123456 -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                            |
+----------------------------------+

启动服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在全部控制节点操作,以controller01节点为例;
# systemctl enable openstack-glance-api.service 
# systemctl start openstack-glance-api.service
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解[通俗易懂]
这里直接去python官网就可以了,网址是:https://www.python.org 打开后可以见到如图1:
全栈程序员站长
2022/09/06
29.6K0
python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解[通俗易懂]
史上最全最详细的Anaconda安装教程[通俗易懂]
Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等
全栈程序员站长
2022/07/01
39.7K0
史上最全最详细的Anaconda安装教程[通俗易懂]
1python安装
在path环境变量 添加下面三个目录 D:\mysoft\anaconda3\Scripts; D:\mysoft\anaconda3; D:\mysoft\anaconda3\Library\bin; 其中D:\mysoft\anaconda3 为安装目录
东营浪人
2022/06/26
1940
Python 之 Windows安装Anaconda的坑
Anaconda最常用的方式就是用Anaconda-Navigator打开,是一个GUI页面。
AntDream
2024/06/13
2140
Python 之 Windows安装Anaconda的坑
win10安装anaconda3、pycharm和pytorch教程
博主研究生生涯准备用大一的旧电脑在撑两年,于是乎在虚拟机centos环境中安装python环境和pycharm工作时特别卡。于是想尝试在windows下安装anaconda和PyCharm,这样软件运行或许能流畅些。本文基于2019年发行的anaconda3版本和PyCharm对安装过程中的问题进行记录。
全栈程序员站长
2022/09/27
1.5K0
win10安装anaconda3、pycharm和pytorch教程
pycharm+anaconda安装教程_anaconda配置pycharm
Anaconda最大的优势我认为在于可以做环境管理,可以通过创建不同的环境,安装不同的包。
全栈程序员站长
2022/09/27
1.4K0
pycharm+anaconda安装教程_anaconda配置pycharm
win11 安装 Anaconda(2022.10)+pycharm(2022.3/2023.1.4)+配置虚拟环境
https://www.anaconda.com/products/distribution
Qomolangma
2024/07/30
3050
win11 安装 Anaconda(2022.10)+pycharm(2022.3/2023.1.4)+配置虚拟环境
Tensorflow
##################################################################
Dean0731
2020/05/08
7460
Python环境配置保姆教程(Anaconda、Jupyter、GPU环境)!
1. 写在前面 搞算法的同学也都明白,一个比较完美的python环境是多么的重要。这篇文章打算把一些必备的python环境配置过程记录下来,这样不管是新到了公司实习或者就职,还是新换了电脑,都可以借鉴这篇快速把环境搭建起来啦 😉 由于我也是重装了系统,所以算是从0开始搭建python环境,这次从anaconda安装开始, 然后到cuda的相关安装配置,再到cudnn的安装配置,然后从anaconda中建立虚拟tensorflow和pytorch的虚拟环境,再各自的虚拟环境里面安装jupyter noteb
Datawhale
2021/10/13
3.8K0
Python环境配置保姆教程(Anaconda、Jupyter、GPU环境)!
Anaconda的安装与环境配置
这里有两个下载地址,分别是官网和清华镜像源,推荐清华镜像,下的快,官网下半天还可能失败;无论是哪个下载地址,找到对应你系统的安装程序下载即可;
MinChess
2023/07/24
3.8K0
Anaconda的安装与环境配置
使用Anaconda3配置多版本Python虚拟开发环境详细步骤
有时候,为了使用比较干净的开发环境,或者为了测试一些版本的扩展库,我们可能需要创建虚拟开发环境,在不同的虚拟开发环境中,只安装需要的扩展库,这样可以最大程度上减少不同扩展库之间的兼容性带来的冲突或其他问题。 Anaconda3目前已经成为Python社区人见人爱的一套软件,提供的Jupyter Notebook和Spyder更是让人无法拒绝的Python开发环境,尤其是数据分析和科学计算与可视化领域的科研人员和工程师,更是必备的IDE之一。 为了能够正常使用Anaconda3创建虚拟开发环境,首先最好保证在
Python小屋屋主
2018/04/16
1.2K0
使用Anaconda3配置多版本Python虚拟开发环境详细步骤
Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)
配置环境,研究了一整天,踩了很多坑,在网上找了很多资料,发现基本上都没非常明确的教程,所以今天想分享一下配置tensorflow GPU版本的经验,希望能让各位朋友少走些弯路。(PS:一切的前提,你需要有一张Nvidia显卡。我的显卡是 GT940MX)
10JQKA
2018/07/25
4.9K0
Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)
Anaconda使用
Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候。为了解决这些问题,有不少发行版的Python,比如WinPython、Anaconda等,这些发行版将python和许多常用的package打包,方便pythoners直接使用,此外,还有virtualenv、pyenv等工具管理虚拟环境。
LhWorld哥陪你聊算法
2018/09/13
2.3K0
Anaconda使用详解:从安装到高效管理Python环境
Anaconda是一款开源的Python和R语言的发行版本,其主要目的是为数据科学、机器学习、大数据处理和科学计算提供一个集成的开发环境。Anaconda集成了大量常用的数据科学库和工具,并附带了强大的环境管理和包管理功能,使得Python环境的配置和维护变得简单高效。本文将详细介绍Anaconda的安装、使用以及如何利用它来高效管理Python环境和包。
CoderJia
2024/10/18
9300
Anaconda使用详解:从安装到高效管理Python环境
AI 作画第二弹
上次一次尝试 AI 作画,还是在 6 月份,详情可见 《AI 作画初体验》。那个时候使用的是 Google 开发的 DD (Disco Diffusion) 系统,使用的版本为 V5.0。DD 作画的确令人惊艳,但没想到,不到两个月的时间,SD (Stable Diffusion) 斜里杀出,一下子抢了 DD 的风头。之前研究 DD 作画入魔的和菜头,也转头倒向了 SD。下面是他的作品:
云水木石
2022/12/01
1K0
AI 作画第二弹
Anaconda/miniconda安装
参考:https://www.jianshu.com/p/29ca12036f5d
Azur1
2023/04/21
5390
部署Anaconda
环境隔离:为不同项目分配独立环境(如开发 Web 应用 vs 训练深度学习模型)。
SDLearn
2025/02/07
2650
部署Anaconda
Anaconda简介、安装、环境设置
Anaconda 是一个包含数据科学常用包的发行版本。它基于 conda(一个包和环境管理器) 衍生而来。应用程序 conda 是包和环境管理器:
菲宇
2019/08/14
3.2K0
Anaconda 环境变量手动设置(详细)
输入conda,显示:‘conda’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
全栈程序员站长
2022/07/21
14K0
Anaconda 环境变量手动设置(详细)
【一文搞定最新版Anaconda】Win11 安装 Anaconda(2023.9)详解(不删除旧版情况下下载、安装、注册、登录、设置环境变量、迁移旧环境、配置修改换源等)+连接Pycharm
  关于我周末晚上写文章时手欠更新conda中途停止导致conda错乱了这件事……
Qomolangma
2024/07/30
1.1K0
【一文搞定最新版Anaconda】Win11 安装 Anaconda(2023.9)详解(不删除旧版情况下下载、安装、注册、登录、设置环境变量、迁移旧环境、配置修改换源等)+连接Pycharm
推荐阅读
相关推荐
python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档