查看原文
其他

一键部署高可用 MinIO,开启对象存储之旅

许子毅 Sealos 2023-12-07

Sealos 公众号已接入了 GPT-4,完全免费!欢迎前来调戏👇


大家好!今天这篇文章主要向大家介绍如何通过 Sealos 一键部署高可用 MinIO 集群。

MinIO 对象存储是什么?

对象是二进制数据,例如图像、音频文件、电子表格甚至二进制可执行代码。对象的大小可以从几 B 到几 TB 不等。像 MinIO 这样的对象存储平台提供了专用工具和功能,使用标准的 S3 兼容 API 存储、列出和检索对象。

MinIO 对象存储使用存储桶来组织对象。存储桶类似于文件系统中的文件夹或目录,其中每个存储桶可以容纳任意数量的对象。MinIO 存储桶提供与 AWS S3 存储桶相同的功能。

MinIO 的纠删码

MinIO 支持分布式部署,支持服务和数据的高可用,核心就是 MinIO 的纠删码功能。

MinIO 实现了纠删码功能,将其作为提供数据冗余和可用性的核心组件。假设 MinIO 将一个对象分为 K 个数据分片,纠删码可根据 K 个数据分片生成 M 个校验分片,MinIO 需要最少 K 个任何类型的分片来恢复原对象。意味着总共 K+M 个分片中可以允许 M 个分片失效。

如下图举个栗子:我们将一个对象分为 12 个数据分片(Data shard),然后生成 4 个校验分片(Parity shard),总共有 16 个分片,分别存储在单个驱动中,此方式可以容忍 4 个驱动的失效,并且有 0.75(12/16)的存储效率。(此为 EC:4,EC 为 Erasure Coding,4 为校验分片的数量)

为了更好跟三副本方式进行比较,我们假设现有 2 个数据分片和 2 个校验分片,比较结果如下:

方式容忍失效分片(副本)数存储效率
纠删码(EC:2)21/2
三副本21/3

通过比较可以看出纠删码可以提高存储效率,减少存储资源的使用(补充:当数据分片数等于校验分片数时,MinIO 中为了避免出现脑裂问题,写入数据时需要大多数分片,即 3 个分片,详情可查看:MinIO 可用性和弹性[1])。

MinIO 中可以调整 校验分片/总分片 的比例,比例范围为为 0 - 1/2。比例越大,数据可用性越高(可容忍失效分片数),同时存储效率越低。

快速部署高可用 MinIO 的教程

模板部署的 MinIO 采用了 4 节点和 EC:2 的方式。能保证单节点宕机不影响读写服务,双节点挂机不影响读服务,且存储效率为 1/2。

  • 点击链接 https://cloud.sealos.top/?openapp=system-fastdeploy%3FtemplateName%3Dminio
  • 输入账号密码和存储大小。(注:账号密码至少需要8位,存储大小部署后无法修改)
  • 点击 Deploy Application,MinIO 启动!
  • 点击 Confirm,跳转查看详情。
  • 点击链接即可访问 MinIO Console 界面。
  • 输入账号密码,开始使用 MinIO。简单创建一个 bucket 存储桶,然后上传 install.sh 文件。

至此,我们已经成功部署一个强大的对象存储应用了。可以开始愉快的存储对象啦!

MinIO on Kubernetes

抽象的介绍一下 MinIO 在 K8S 中的架构:

  • Pod:作为 MinIO 实例运行的基础单元,每个 Pod 部署一个 MinIO 容器实例。
  • StatefulSet:用于管理 4 个 MinIO Pod 副本,保证副本数量和顺序,为每个 Pod 提供稳定的网络标识(如 DNS 名字)和存储标识(PV 卷)。
  • Service(Headless):为 StatefulSet 内的 MinIO Pod 提供内部服务发现,其他 Pod 可以通过固定的 DNS 名字访问每个 MinIO 实例。
  • Service(ClusterIP):对外提供 MinIO Console 服务的访问端口和目标端口映射。
  • Ingress:配置外网入口域名和路径映射规则,可以通过域名访问 Minio Console。

参考资料

  1. https://min.io/docs/minio/kubernetes/upstream/operations/concepts/erasure-coding.html
  2. https://min.io/docs/minio/kubernetes/upstream/operations/concepts/availability-and-resiliency.html#minio-availability-resiliency
  3. https://cloud.tencent.com/developer/article/1829995

引用链接

[1]

MinIO 可用性和弹性: https://min.io/docs/minio/kubernetes/upstream/operations/concepts/availability-and-resiliency.html#minio-availability-resiliency




Sealos 社区长期征稿,欢迎 Sealos 终端用户与开发者前来投稿,奖金💰丰厚!详情可查看文章👇

爱 Sealos?来投稿!有奖金,还没有截止日期...


加入 Sealos 开源社区体验像个人电脑一样简单的云操作系统



🏠官网链接

https://sealos.io


🐙GitHub 地址

https://github.com/labring/sealos


📑访问 Sealos 文档

https://sealos.io/zh-Hans/docs/Intro


🏘️逛逛论坛

https://forum.laf.run/

往期推荐

30 秒使用 VaultWarden 搭建个人密码管理器

2023-09-07

将 Llama2 中文模型接入 FastGPT,再将 FastGPT 接入任意 GPT 套壳应用,真刺激!

2023-08-29

一键部署 Umami 统计个人网站访问数据,跟 Google Analytics 说再见

2023-08-10

3 分钟将免费无限制的 Claude 2.0 接入任意 GPT 套壳应用,太香了!

2023-07-28


关于 Sealos

Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。它以云原生的方式,抛弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业能够像使用个人电脑一样简单地使用云。


关注 Sealos 公众号与我们一同成长👇👇👇

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存