网易首页 > 网易号 > 正文 申请入驻

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

0
分享至

新钛云服已累计为您分享687篇技术干货

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 的完整对接。

了解新钛云服

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
1974年我国参加亚运会,邓小平说:要让给伊朗一块金牌,还人情债

1974年我国参加亚运会,邓小平说:要让给伊朗一块金牌,还人情债

帝哥说史
2026-01-06 06:35:03
具俊晔公布大S雕像3大巧思,新纹身太催泪,汪小菲带一双儿女旅游

具俊晔公布大S雕像3大巧思,新纹身太催泪,汪小菲带一双儿女旅游

古希腊掌管月桂的神
2026-02-02 16:31:07
保姆想让雇主嫁给儿子这是啥心理?网友:这算盘打得好 想身份互换

保姆想让雇主嫁给儿子这是啥心理?网友:这算盘打得好 想身份互换

另子维爱读史
2026-01-30 18:18:16
拉波尔塔:只要我是巴萨主席弗里克就能一直执教;皇马点是跳水

拉波尔塔:只要我是巴萨主席弗里克就能一直执教;皇马点是跳水

懂球帝
2026-02-03 06:34:28
13岁女生确诊胃癌晚期,医生:她吸了13年爸爸的二手烟,肚子里布满了大大小小的肿瘤,没有任何治愈机会

13岁女生确诊胃癌晚期,医生:她吸了13年爸爸的二手烟,肚子里布满了大大小小的肿瘤,没有任何治愈机会

观威海
2026-01-31 10:06:12
刘虎涉诬告罪非法经营罪法律分析:结果掌握在“解释权”里!

刘虎涉诬告罪非法经营罪法律分析:结果掌握在“解释权”里!

兵叔评说
2026-02-03 01:23:07
我在芬兰见雇主家暖气不热,顺手修了,第5天小镇的人都赶过来了

我在芬兰见雇主家暖气不热,顺手修了,第5天小镇的人都赶过来了

三农老历
2026-01-30 11:25:43
高一女生被人造黄谣,妈妈24小时硬核维权:你的清白,无需自证

高一女生被人造黄谣,妈妈24小时硬核维权:你的清白,无需自证

右右细毛和爸妈
2026-01-31 21:17:02
特朗普:世界“很快会看到”哈梅内伊的警告是否正确;内塔尼亚胡与高级官员讨论伊朗紧张局势,美国海军一驱逐舰离开以色列

特朗普:世界“很快会看到”哈梅内伊的警告是否正确;内塔尼亚胡与高级官员讨论伊朗紧张局势,美国海军一驱逐舰离开以色列

每日经济新闻
2026-02-02 22:26:50
赵匡胤“杯酒释兵权”时,唯独漏掉了一人,结果被他抢走宋朝江山

赵匡胤“杯酒释兵权”时,唯独漏掉了一人,结果被他抢走宋朝江山

老谢谈史
2026-02-02 21:46:40
国共智库论坛,探索“一国两制”中的“一国一制”

国共智库论坛,探索“一国两制”中的“一国一制”

观察者网
2026-02-02 11:39:05
31省GDP出炉,谁逆袭?谁掉队?

31省GDP出炉,谁逆袭?谁掉队?

深水财经社
2026-02-02 21:51:10
杜月笙临终吐露真言:混好江湖靠的根本不是利益互换,而是这三点

杜月笙临终吐露真言:混好江湖靠的根本不是利益互换,而是这三点

小港哎历史
2026-01-31 17:00:03
厚黑:一种温暖的防御美学

厚黑:一种温暖的防御美学

疾跑的小蜗牛
2026-02-02 21:53:24
我娶了县长痴呆25年的女儿,晚上我准备打地铺,她说:不许睡地上

我娶了县长痴呆25年的女儿,晚上我准备打地铺,她说:不许睡地上

千秋文化
2026-01-05 22:15:53
1958年陈毅带头批判粟裕,有三位将军坚决抵制,他们结局如何?

1958年陈毅带头批判粟裕,有三位将军坚决抵制,他们结局如何?

历史甄有趣
2026-02-02 12:25:11
中国共产党中央军事委员会副主席张升民简历

中国共产党中央军事委员会副主席张升民简历

上观新闻
2025-10-23 18:17:07
狠打脸!中国造不出光刻机?2026年实锤曝光,突围真相是什么?

狠打脸!中国造不出光刻机?2026年实锤曝光,突围真相是什么?

琉璃聊科学
2026-02-02 23:21:20
最高法:对于利用麻精药品实施强奸、抢劫等犯罪的,坚决依法从严惩处

最高法:对于利用麻精药品实施强奸、抢劫等犯罪的,坚决依法从严惩处

红星新闻
2026-02-02 10:47:16
国家下狠手了!体制内大地震,少爷、公主们的“天”,要塌了

国家下狠手了!体制内大地震,少爷、公主们的“天”,要塌了

霹雳炮
2026-01-19 22:24:13
2026-02-03 07:36:49
新钛云服
新钛云服
云管理服务专家
458文章数 30关注度
往期回顾 全部

科技要闻

阿里筑墙,腾讯寄生,字节偷家

头条要闻

周生生足金挂坠戴1天被刮花 检测后发现含铁、银、钯

头条要闻

周生生足金挂坠戴1天被刮花 检测后发现含铁、银、钯

体育要闻

澳网男单决赛,属于阿尔卡拉斯的加冕仪式

娱乐要闻

57岁音乐人袁惟仁去世,家属发文悼念

财经要闻

金银暴跌 全球股市遭遇“黑色星期一”

汽车要闻

雷克萨斯LC500将于今年底停产 "最美雷克萨斯"谢幕

态度原创

本地
家居
房产
公开课
军事航空

本地新闻

云游中国|拨开云雾,巫山每帧都是航拍大片

家居要闻

现代几何彩拼 智焕童梦居

房产要闻

狂卖1548亿后,海南又上演疯狂抢地!

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

委内瑞拉外长会见美外交使团团长

无障碍浏览 进入关怀版