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

使用 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.

相关推荐
热点推荐
五一全国挤成“一锅粥”,唯独武汉让人沉默:它凭啥成顶流?

五一全国挤成“一锅粥”,唯独武汉让人沉默:它凭啥成顶流?

奇葩游戏酱
2026-05-14 00:01:04
菲律宾参议院大楼传出枪声 菲律宾总统称未下达逮捕德拉罗萨的指令

菲律宾参议院大楼传出枪声 菲律宾总统称未下达逮捕德拉罗萨的指令

新华社
2026-05-14 00:10:45
6000亿杭州联合银行,空降48岁女行长

6000亿杭州联合银行,空降48岁女行长

财经众议院
2026-05-13 17:16:18
21岁拍三级片,30岁被出轨,38岁嫁大佬,如今51岁没孩子被宠为宝

21岁拍三级片,30岁被出轨,38岁嫁大佬,如今51岁没孩子被宠为宝

傲傲讲历史
2026-05-13 02:40:45
俄军会不会发生突然间崩盘?

俄军会不会发生突然间崩盘?

霹雳炮
2026-05-13 22:31:33
房子是用来“炒”的,不是用来住的

房子是用来“炒”的,不是用来住的

圆方你怎么看啊
2026-05-13 18:28:55
男女之间,有这五个“动作”早就是情人关系了,尤其是有家室的人

男女之间,有这五个“动作”早就是情人关系了,尤其是有家室的人

王二哥老搞笑
2026-05-14 06:30:12
6月入户调查启动!不查房产不查存款,看完这些彻底不慌了

6月入户调查启动!不查房产不查存款,看完这些彻底不慌了

老特有话说
2026-05-11 13:39:00
8胜1负,女单仅剩独苗,国羽多场险胜,附泰国公开赛14日赛程

8胜1负,女单仅剩独苗,国羽多场险胜,附泰国公开赛14日赛程

佑铭羽球
2026-05-14 02:25:19
林振强神级填词!1995年经典冷门金曲,是所有游子藏在心底的牵挂…

林振强神级填词!1995年经典冷门金曲,是所有游子藏在心底的牵挂…

陈意小可爱
2026-05-14 07:10:37
伊朗传奇卡里米公开批评伊朗政府后,六处房产被查封

伊朗传奇卡里米公开批评伊朗政府后,六处房产被查封

懂球帝
2026-05-13 10:23:07
戈登与拜仁达成个人协议,身价7500万镑,纽卡或现离队潮

戈登与拜仁达成个人协议,身价7500万镑,纽卡或现离队潮

星耀国际足坛
2026-05-14 00:54:48
英伟达股价续创记录新高 总市值达到5.5万亿美元

英伟达股价续创记录新高 总市值达到5.5万亿美元

财联社
2026-05-13 21:38:14
“中国男子藏军火”案最新披露:嫌犯与柬埔寨电诈园区有关

“中国男子藏军火”案最新披露:嫌犯与柬埔寨电诈园区有关

超喜欢我
2026-05-12 23:19:58
大陆不同意台湾参加世卫大会,绿营急了,绿营官员还想到大陆参会

大陆不同意台湾参加世卫大会,绿营急了,绿营官员还想到大陆参会

DS北风
2026-05-12 17:10:07
经纬度:“订单排到2028年”的底气何来

经纬度:“订单排到2028年”的底气何来

澎湃新闻
2026-05-13 15:48:26
中央巡视组已亮剑!这5类问题是重点 , 老百姓福音来了!

中央巡视组已亮剑!这5类问题是重点 , 老百姓福音来了!

细说职场
2026-05-13 13:42:26
央视主持大调整:三人告别,杨帆遇冷,撒贝宁朱迅情况最意外

央视主持大调整:三人告别,杨帆遇冷,撒贝宁朱迅情况最意外

吕彏极限手工
2026-05-12 19:04:49
长城汽车大敌再临 比亚迪鲨鱼皮卡官宣国内销售:挂方程豹logo

长城汽车大敌再临 比亚迪鲨鱼皮卡官宣国内销售:挂方程豹logo

快科技
2026-05-14 00:55:07
一个冰冷现实:中印冲突正全方位升级,中国越避让,印度越对抗

一个冰冷现实:中印冲突正全方位升级,中国越避让,印度越对抗

云舟史策
2026-05-14 07:16:41
2026-05-14 07:48:49
新钛云服
新钛云服
云管理服务专家
471文章数 30关注度
往期回顾 全部

科技要闻

阿里年营收首破万亿,AI终于不再是画大饼

头条要闻

中东战火烧痛印度 莫迪六天访五国要外交“救国”

头条要闻

中东战火烧痛印度 莫迪六天访五国要外交“救国”

体育要闻

14年半,74万,何冰娇没选那条更安稳的路

娱乐要闻

白鹿掉20万粉,网友为李晨鸣不平

财经要闻

美国总统特朗普抵达北京

汽车要闻

C级纯电轿跑 吉利银河"TT"申报图来了

态度原创

本地
时尚
教育
公开课
军事航空

本地新闻

用苏绣的方式,打开江西婺源

专栏 | 进入心流后,不被洪流裹挟

教育要闻

家长就读,孩子免费修大学学分的社区大学?

公开课

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

军事要闻

美以伊战争期间以总理密访阿联酋

无障碍浏览 进入关怀版