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

aa719a2ec092f9353d8e1edfd9d27168.gif

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

5d6cecf1c89a6fbb24b710e24bd9264f.gif

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

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

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

1f1b38552e6bf2d87596cbe328dc4a14.png

通常情况下,我们会使用 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/m
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我理解了你的问题。如果你想在 SpringBoot 应用中使用 Minio 作为云存储服务,可以按照以下步骤进行操作: 1. 添加 Minio 客户端依赖 在 `pom.xml` 文件中添加 Minio 客户端依赖: ```xml <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.1</version> </dependency> ``` 2. 配置 Minio 客户端 在 `application.properties` 文件中添加以下配置: ```properties minio.url=http://localhost:9000 minio.access-key=minio minio.secret-key=minio123 minio.bucket-name=my-bucket ``` 其中,`minio.url` 是 Minio 服务的访问地址,`minio.access-key` 和 `minio.secret-key` 是访问 Minio 服务的凭证,`minio.bucket-name` 是存储对象的桶名称。 3. 实现上传文件接口 ```java @RestController public class FileController { @Autowired private MinioClient minioClient; @PostMapping("/files") public String uploadFile(@RequestParam("file") MultipartFile file) throws Exception { String fileName = file.getOriginalFilename(); InputStream inputStream = file.getInputStream(); long size = file.getSize(); String contentType = file.getContentType(); minioClient.putObject(PutObjectArgs.builder() .bucket("my-bucket") .object(fileName) .stream(inputStream, size, -1) .contentType(contentType) .build()); return "File uploaded successfully: " + fileName; } } ``` 4. 实现展示图片接口 ```java @RestController public class ImageController { @Autowired private MinioClient minioClient; @GetMapping("/images/{fileName}") public ResponseEntity<byte[]> getImage(@PathVariable String fileName) throws Exception { InputStream inputStream = minioClient.getObject(GetObjectArgs.builder() .bucket("my-bucket") .object(fileName) .build()); byte[] bytes = IOUtils.toByteArray(inputStream); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.IMAGE_JPEG); headers.setContentLength(bytes.length); return new ResponseEntity<>(bytes, headers, HttpStatus.OK); } } ``` 在这个示例中,我们定义了一个 `FileController` 和一个 `ImageController`,分别用于上传文件和展示图片。其中,`ImageController` 中的 `getImage` 方法根据文件名从 Minio 服务中获取图片,并返回 `ResponseEntity<byte[]>` 对象,该对象包含图片的二进制数据和响应头信息,用于在浏览器中展示图片。 以上就是在 SpringBoot 应用中使用 Minio 作为云存储服务的步骤。希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值