首页 > 其他分享 >使用 Sealos 一键部署高可用 MinIO,开启对象存储之旅

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

时间:2023-09-15 11:57:21浏览次数:49  
标签:存储 删码 MinIO 对象 Sealos 一键 分片 Pod

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

MinIO 对象存储是什么?

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

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

原文链接:https://forum.laf.run/d/1029

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) 2 1/2
三副本 2 1/3

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

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

快速部署高可用 MinIO 的教程

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

  • 点击 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

标签:存储,删码,MinIO,对象,Sealos,一键,分片,Pod
From: https://www.cnblogs.com/ryanyangcs/p/17704662.html

相关文章

  • docker快速安装-docker一键安装脚本
    1.下载/配置安装脚本touchinstall-docker.sh#!/bin/bash#mail:[email protected]#system:centos7#integration:docker-latestclearecho"######################################################"echo"#AutoInstallDocker......
  • 如何像 Sealos 一样在浏览器中打造一款 K8s 终端?
    在Kubernetes的世界中,命令行工具(如kubectl和helm)是我们与集群交互的主要方式。然而,有时候,我们可能希望能够在Web页面中直接打开一个终端,执行这些命令,而不需要在本地环境中安装和配置这些工具。本文将深入探讨如何通过Kubernetes自定义资源定义(CRD)实现这个功能,并通过一个真......
  • 123.jpg 蓝牛相片摄影时间更改助手是一款绿色免费的照片批量修改摄影日期时间,让您的相
     蓝牛相片摄影时间更改助手是一款绿色免费的照片批量修改摄影日期时间,让您的相片一目发然相片摄影时间 软件全自动一键操作,再也不必一个一个手动修改了更新日志:2023年9月12日V2.00 支持自定义图片类型 升级核心代码2023.04.25V1.50优化代码提高速度修复BUG 本地......
  • Jenkins+Docker 一键自动化部署项目
    本文章实现最简单全面的Jenkins+docker+springboot一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。安装dockerdocker安装社区版本CE确保yum包更新到最新......
  • 如何像 Sealos 一样在浏览器中打造一个 Kubernetes 终端?
    作者:槐佳辉。Sealosmaintainer在Kubernetes的世界中,命令行工具(如kubectl和helm)是我们与集群交互的主要方式。然而,有时候,我们可能希望能够在Web页面中直接打开一个终端,执行这些命令,而不需要在本地环境中安装和配置这些工具。本文将深入探讨如何通过Kubernetes自定义资......
  • python一键过杀软
    python过杀软新利用python加载shellcode过360、火绒等杀软先上代码将以下代码保存到mt.pyimportbase64importosimportshutilbuf=b"这里替换shellcode"b64buf=base64.b64encode(buf)lzsds="""importctypesimportbase64shellcode=base64.b64decode(\"......
  • MinIO对象存储
    MinIO简介MinIO基于ApacheLicensev2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux,OSX和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。MinIO兼容亚马逊S3云存储服务接......
  • 一键发布多平台方案
    序​ 一直都有做笔记的习惯,以前都是将记录在印象笔记,但只能给自己看,不利于技术的分享,希望在平台上记录下自己的点点滴滴,方便自己,也是方便他人。​ 首先要想到的一个问题,就是现在技术平台那么多,总不能登录每个网站,一个一个登录、复制、黏贴发布吧,我们可是程序员!!这种低效率的手动......
  • 微信的通讯录一键导出的方法在这里
    6-2有过一段时间,有一些做网销的朋友经常问我,怎么导出微信通讯录里的联系人,他们在网上找了一些工具,使用非常复杂,并且很慢。我了解到是他们有些业务员或者销售离职,经常带走客户,得在他们走人之前当面整理和交接客户资料,以避免客户流失。经过一些探索,做出来了这么一个软件工具,可以一键......
  • 部署Minio服务
    ##第一步:创建目录```mkdir-p/minio/configmkdir-p/minio/data````##第二步:下载minio```dockerpullminio/minio```##第三步:启动minio容器```dockerrun-d-p9000:9000-p50000:50000--restart=always--nameim-minio\-e"MINIO_ROOT_USER=admin"\-e"MI......