百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

使用 Minio 作为 OpenStack Glance 以及 Cinder Backup 的 S3 后端

bigegpt 2024-08-11 14:15 12 浏览

云和安全管理服务专家新钛云服 祝祥原创


OpenStack Glance是一种提供发现、注册、和下载的镜像服务,也可以理解成是一个提供虚拟机镜像的集中式仓库。通过Glance的RESTful API,可以查询镜像元数据下载镜像

虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(如OpenStack Swift项目)。在Glane里镜像被当做模板来存储,用于启动新实例。

Glance是一个可以组织和管理大量虚拟磁盘镜像的独立服务。Glance为云磁盘镜像提供了一个端到端的解决方案。它还可以从正在运行的实例建立快照用于备份虚拟机的状态。

通常情况下,我们会使用 NFS,Ceph,File 等作 为 Glance 映像和 Cinder 卷提供共享存储,有时候我们甚至会利用 iSCSI 的 Cinder 驱动程序。总而言之,这是一个普遍的配置方式,可以用来测试 OpenStack 功能。

我们最近发现了 Minio,Minio 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

Minio 可与 Docker 一起安装,因此我们决定在 Glance 中测试 OpenStack重新引入的对 S3 后端的支持。甚至,我们也会使用它来作为 Cinder 的卷备份。

配置 Minio

为了在我们的环境中通过 Docker 安装 Minio。

安装后,只需最少的配置即可与 Glance 以及 Cinder 一起使用。你需要如下配置:

· 具有 r/w 权限的用户

· 定义的区域

Docker 安装 Minio 仅需要一个命令:

docker run -p 9000:9000 -p 8800:8000--name minio --restart=always \
 -e "MINIO_ACCESS_KEY=admin" \
 -e "MINIO_SECRET_KEY=admin12345" \
 -v /mydata/minio/data:/data \
 -v /mydata/minio/config:/root/.minio \
minio/minio server /data

要创建用户,请导航到用户->创建用户并提供访问密钥和秘密密钥以及适当的权限:

ACCESS_KEY: admin
SECRET_KEY: admin123456
POLICY: readwrite

要定义区域,请导航至设置->区域并在服务器位置字段中设置区域名称。

MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)。

ls       列出文件和文件夹。
mb       创建一个存储桶或一个文件夹。
cat      显示文件和对象内容。
pipe     将一个STDIN重定向到一个对象或者文件或者STDOUT。
share    生成用于共享的URL。
cp       拷贝文件和对象。
mirror   给存储桶和文件夹做镜像。
find     基于参数查找文件。
diff     对两个文件夹或者存储桶比较差异。
rm       删除文件和对象。
events   管理对象通知。
watch    监听文件和对象的事件。
policy   管理访问策略。
session  为cp命令管理保存的会话。
config   管理mc配置文件。
update   检查软件更新。
version  输出版本信息。

下载安装

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
./mc --help

配置 Glance 使用 Minio

如果通过 OpenStack-Ansible 进行安装的话,那么有些配置需要变更,修改 playbook 配置 Glance 的后端。使用glance_additional_stores变量,注意必须确保同时还指定了其他默认值(因为是附加变量,而不是完全覆盖)。

下面的name可以是任意的,本处使用minio,用来指定 Minio 存储,同时type是指定后端存储的类型,本处使用 s3 。

glance_additional_stores:
  - http
  - cinder
  - name: minio
    type: s3

除了glance_additional_stores,您还必须定义一个映射到新后端定义的新配置块。对于 OpenStack-Ansible,这可以作为配置覆盖来完成:

glance_glance_api_conf_overrides:
  minio:
    s3_store_host: http://10.100.100.110:9000
    s3_store_access_key: admin
    s3_store_secret_key: admin123456
    s3_store_bucket: glance
    s3_store_create_bucket_on_put: True
    s3_store_bucket_url_format: auto

glance-api.conf中,完整的配置信息如下:

[minio]
s3_store_host = http://10.100.100.110:9000
s3_store_access_key = admin
s3_store_secret_key = admin123456
s3_store_bucket = glance110
s3_store_create_bucket_on_put = True
s3_store_bucket_url_format = auto

如果使用的是 Kolla 进行 Openstack 的安装,则创建如下/etc/kolla/config/glance/glance-api.conf配置文件,进行覆盖:

[DEFAULT]
enabled_backends = file:file, http:http, cinder:cinder, minio:s3

[glance_store]
default_backend = minio

[minio]
s3_store_host = http://10.100.100.110:9000
s3_store_access_key = admin
s3_store_secret_key = admin123456
s3_store_bucket = glance110
s3_store_create_bucket_on_put = True
s3_store_bucket_url_format = auto

配置 Cinder-backup 使用 Minio

如果使用的是 Kolla 进行 Openstack 的安装,则创建如下/etc/kolla/config/cinder/cinder-backup.conf配置文件,进行覆盖:

[DEFAULT]
backup_driver = cinder.backup.drivers.s3.S3BackupDriver
backup_s3_endpoint_url = http://10.100.100.110:9000
backup_s3_store_access_key = admin
backup_s3_store_secret_key = admin123456
backup_s3_store_bucket = cinderbackup110

如果使用 OpenStack-Ansible 安装的话,修改方式同 Glance。

测试后端

如果默认 Glance 后端(文件)没有更改,仍然可以使用glance客户端将单个镜像上传到新的 S3 后端。

在此示例中,将上传 Cirros 镜像像到minio后端:

[root@node110 ~(keystone_admin)]#~/images# glance image-create --file cirros-0.5.1-x86_64-disk.img --disk-format raw --container-format bare --name cirros3 --store minio --progress
[=============================>] 100%
+------------------+----------------------------------------------------------------------------------+
| Property | Value |
+------------------+----------------------------------------------------------------------------------+
| checksum | b874c39491a2377b8490f5f1e89761a4 |
| container_format | bare |
| created_at | 2022-09-13T08:53:50Z |
| disk_format | qcow2 |
| id | bfe5579e-96ce-4acb-8c36-871935beda33 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros3 |
| os_hash_algo | sha512 |
| os_hash_value | 6b813aa46bb90b4da216a4d19376593fa3f4fc7e617f03a92b7fe11e9a3981cbe8f0959dbebe3622 |
| | 5e5f53dc4492341a4863cac4ed1ee0909f3fc78ef9c3e869 |
| os_hidden | False |
| owner | 71a836dac0b044a4b47f6a9ecd4533c6 |
| protected | False |
| size | 16300544 |
| status | active |
| stores | minio |
| tags | [] |
| updated_at | 2022-09-13T08:53:51Z |
| virtual_size | 117440512 |
| visibility | shared |
+------------------+----------------------------------------------------------------------------------+

上传后,可以通过指定镜像名称或 UUID 来创建实例。

在如下的案例中,将会创建卷vol1以及对应的备份。

[root@node110 ~(keystone_admin)]# openstack volume create --size 1 vol1
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2022-09-13T08:56:19.058924           |
| description         | None                                 |
| encrypted           | False                                |
| id                  | 683c20ed-debb-4531-b176-f623826a9197 |
| migration_status    | None                                 |
| multiattach         | False                                |
| name                | vol1                                 |
| properties          |                                      |
| replication_status  | None                                 |
| size                | 1                                    |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | __DEFAULT__                          |
| updated_at          | None                                 |
| user_id             | b80333df70ad4856a7fb7a490ade7063     |
+---------------------+--------------------------------------+

[root@node110 ~(keystone_admin)]# openstack volume backup create --name vol1-back1 683c20ed-debb-4531-b176-f623826a9197
+-------+--------------------------------------+
| Field | Value                               |
+-------+--------------------------------------+
| id   | 231d4985-ef9e-43b1-bb50-ec653556c711 |
| name | vol1-back1                           |
+-------+--------------------------------------+
[root@node110 ~(keystone_admin)]# openstack volume backup show 231d4985-ef9e-43b1-bb50-ec653556c711
+-----------------------+--------------------------------------+
| Field                 | Value                               |
+-----------------------+--------------------------------------+
| availability_zone     | None                                 |
| container             | cinderbackup110                     |
| created_at           | 2022-09-13T08:59:19.000000           |
| data_timestamp       | 2022-09-13T08:59:19.000000           |
| description           | None                                 |
| fail_reason           | None                                 |
| has_dependent_backups | False                               |
| id                   | 231d4985-ef9e-43b1-bb50-ec653556c711 |
| is_incremental       | False                               |
| name                 | vol1-back1                           |
| object_count         | 21                                   |
| size                 | 1                                   |
| snapshot_id           | None                                 |
| status               | available                           |
| updated_at           | 2022-09-13T08:59:43.000000           |
| volume_id             | 683c20ed-debb-4531-b176-f623826a9197 |
+-----------------------+--------------------------------------+

通过 Minio 提供的客户端命令 mc 查看 Minio 中的数据:

[root@node110 ~(keystone_admin)]# mc ls minio/glance110/
[2022-09-11 17:49:43 CST] 243MiB STANDARD 0f56bb90-8c40-44dd-8ad8-650a0c2afd64
[2022-09-13 16:53:51 CST]  16MiB STANDARD bfe5579e-96ce-4acb-8c36-871935beda33
[root@node110 ~(keystone_admin)]# mc ls minio/cinderbackup110/
[2022-09-13 17:09:13 CST]     0B volume_683c20ed-debb-4531-b176-f623826a9197/


基准测试 Minio

Minio 团队提供了一个名为 Warp 的基准测试实用程序,它可以在Github(https://github.com/minio/warp) 上作为预编译二进制文件的源代码获得。

要进行测试,您需要 Minio 端点以及访问密钥和密钥:

# warp mixed --host=10.100.100.110:9000 --access-key=admin --secret-key=admin123456 --autoterm

Throughput 7.3 objects/s within 7.500000% for 25.802s. Assuming stability. Terminating benchmark.
warp: Benchmark data written to "warp-mixed-2021-12-24[050521]-hCzP.csv.zst"
Mixed operations.
Operation: DELETE, 10%, Concurrency: 20, Ran 1m33s.
 * Throughput: 2.39 obj/s

Operation: GET, 44%, Concurrency: 20, Ran 1m33s.
 * Throughput: 104.80 MiB/s, 10.48 obj/s

Operation: PUT, 15%, Concurrency: 20, Ran 1m32s.
 * Throughput: 36.17 MiB/s, 3.62 obj/s

Operation: STAT, 30%, Concurrency: 20, Ran 1m33s.
 * Throughput: 7.00 obj/s

Cluster Total: 139.94 MiB/s, 23.35 obj/s over 1m34s.

概括

在本文中,我们很轻松的实现通过 Minio 的 S3 接口来存储 Glance 镜像以及 Cinder 卷的备份数据。同时我们也上传了镜像以及创建卷备份来验证 Minio 是否正常存储了数据。

对于我们的用例来说,使用像 Ceph,Swift(用于对象)这样的分布式存储有点过重,在很多中小环境以及实验环境中,我们仅仅需要一个快速,高效,简单的对象存储。另外,我们也可能会尝试实现一个 Swift 代理来将 Swift 后端指向 Minio, 这样就实现了 Minio 与 Openstack 的完整对接。

相关推荐

5分钟调色大片的方法(5分钟调色大片的方法有哪些)

哈喽大家好。在大家印象中一定觉得ps非常难学非常难。大家不要着急,小编的教学都是针对ps零基础的同学的,而且非常实用哦。只要大家跟着图文练习一两遍,保证大家立马学会~!好了,废话少说,下面开始我们今天...

闪白特效原来是这么用的(闪白特效怎么使用)

作者|高艳侠订阅|010-86092062闪白特效是影视作品中应用比较多的效果之一,那么具体该在哪些场景使用闪白特效?具体该如何操作?下面就以AdobePremiere(以下简称PR)为例,...

ppt常用小图标去哪里找?3个矢量素材网站推荐!

ppt是一个注重可视化表达的演示载体,除了高清图片,ppt中另一类常用的素材是各种小图标,也叫矢量图标,巧妙运用小图标能提升整体美观度和表现力,那么ppt常用小图标去哪里找呢?为方便各位快速找到合适的...

有什么好用的截图录屏工具?试试这9款

经常有朋友反馈苦于缺乏截屏和录屏的趁手工具,本期我们分享几个相当好用的截屏和录屏工具,希望能帮到大家。ScreenToGifScreenToGif是一款免费且开源的录屏工具。此款工具最大的特点是可以...

配色苦手福音!专业快速色环配色PS插件

今天橘子老师给的大家介绍的是一款快速配色的插件,非常强大配色苦手福音来啦!(获取方式见文末)【插件介绍】配色在后期设计中占有主导地位,好的配色能让作品更加抢眼Coolorus这款专业的配色插件,能够...

如何用PS抠主体?(ps怎么抠主体)

1.主体法抠图-抠花苞和花梗导入一张荷花苞的照片,点击上图中顶部“选择”菜单栏,下拉单击“主体”。可以看到,只有花苞被选中,但是花梗并没有被选中。接下来单击上图中左侧工具栏的“快速选择工具”,上图中顶...

2799元的4K电视,有保障吗?(买4k电视机哪个品牌好)

在上一期《电脑报》的3·15专题报道中,我们揭露了一款不靠谱的42英寸4K智能电视——TCLD42A561U。这款售价2699元的4K智能电视不仅4K画质方面存在严重问题,而且各种功能和应用体验也不理...

苹果电脑的Touch Bar推出一段时间了 这款工具可以帮你开发适用于它的APP

距离苹果推出带有TouchBar的MacBookPro已经有一段时间了,除了那些像Adobe、Google和Microsoft大公司在开发适用于TouchBar的应用之外,其实还有很多独立的开...

如魔法般吸取颜色的桌灯(如魔法般吸取颜色的桌灯叫什么)

色彩为生活带来的感官刺激,逐渐被视为理所当然。一盏桌灯运用它的神奇力量,将隐藏于物件中的颜色逐一释放,成为装点环境的空间魔法师。ColorUp是一款可以改变颜色的吸色台灯,沿用传统灯泡的造型,融入了拾...

一篇文章带你用jquery mobile设计颜色拾取器

【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...

ps拾色器快捷键是什么?(ps2019拾色器快捷键)

ps拾色器快捷键是什么?文章末尾有获取方式,按照以下步骤就能自动获得!学会制作PS特效需要一定程度的耐心和毅力。初学者可以从基本的工具和技术开始学习,逐渐提高他们的技能水平。同时,观看更多优秀的特效作...

免费开源的 Windows 截图录屏工具,支持 OCR 识别和滚动截图等

功能很强大、安装很小巧的免费截图、录屏工具,提供很多使用的工具来帮我么能解决问题,推荐给大家。关于ShareXShareX是一款免费的windows工具,起初是一个小巧的截图工具,经过多年的迭...

入门到精通系列PS教程:第13篇 · 拾色器、颜色问题说明及补充

入门到精通系列PS教程:第13篇·拾色器、颜色问题说明及补充作者|侯潇问题说明我的第12篇教程里,有个小问题没有说清楚。要说是错误,又不算是错误,只是没有说准确。写完那篇教程后,因为已经到了深...

PS冷知识:用吸管工具吸取屏幕上的任意颜色

今天,我们给大家介绍PS中的一个冷知识:用吸管工具可以吸取屏幕上的任意颜色。其实,操作起来是非常简单的。大多数情况下,我们认为,PS的吸管工具只能吸取PS软件作图区域范围内的颜色,最多加上画布四周的...

Windows 11 将提供内置颜色选择器工具

Windows11内置了颜色选择器,可以扫描并识别屏幕上的颜色并生成颜色代码。此外,微软还利用人工智能技术,让屏幕上的文本扫描和选择变得更加便捷。这两项功能均已在SnippingToolv1...