centOS7在Docker Compose上运行分布式MinIO

1、 前言

1.1 Minio 简介

  • 1、MinIO 是在 Apache License v2.0 下发布的对象存储服务器。 它与 Amazon S3 云存储服务兼容。 它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/ VM 映像。 对象的大小可以从几 KB 到最大 5TB。
  • 2、MinIO 服务器足够轻,可以与应用程序堆栈捆绑在一起,类似于 NodeJS,Redis 和 MySQL
  • 3 一种高性能的分布式对象存储服务器,用于大型数据基础设施。它是机器学习和其他大数据工作负载下Hadoop HDFS 的理想 s3 兼容替代品

2 、 为什么要用 Minio

2.1 选择它的理由

  • 1、Minio 有良好的存储机制
  • 2、Minio 有很好纠删码的算法与擦除编码算法
  • 3、拥有RS code 编码数据恢复原理
  • 4、公司做强做大时,数据的拥有重要性,对数据治理与大数据分析做准备。
  • 5、搭建自己的一套文件系统服务,对文件数据进行安全保护。
  • 6、拥有自己的平台,不限于其他方限制。

2.2 存储机制

  • Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据。

2.3 纠删码

  • 纠删码是一种恢复丢失和损坏数据的数学算法,目前,纠删码技术在分布式存储系统中的应用主要有三类,阵列纠删码(Array Code: RAID5、RAID6 等)、RS(Reed-Solomon)里德-所罗门类纠删码和 LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码。Erasure Code 是一种编码技术,它可以将 n 份原始数据,增加 m 份数据,并能通过 n+m 份中的任意 n 份数据,还原为原始数据。即如果有任意小于等于 m 份的数据失效,仍然能通过剩下的数据还原出来

2.4 RS code 编码数据恢复原理

  • RS 编码以 word 为编码和解码单位,大的数据块拆分到字长为 w(取值一般为 8 或者 16位)的 word,然后对 word 进行编解码。 数据块的编码原理与 word 编码原理相同,后文中以 word 为例说明,变量 Di, Ci 将代表一个 word。把输入数据视为向量 D=(D1,D2,..., Dn), 编码后数据视为向量(D1, D2,..., Dn, C1, C2,.., m),RS 编码可视为如下(图 1)所示矩阵运算。图 1 最左边是编码矩阵(或称为生成矩阵、分布矩阵,Distribution Matrix),编码矩阵需要满足任意 n*n 子矩阵可逆。为方便数据存储,编码矩阵上部是单位阵(n 行 n 列),下部是m 行 n 列矩阵。下部矩阵可以选择范德蒙德矩阵或柯西矩阵。

     

     

                                                                                            RS code

RS 最多能容忍 m 个数据块被删除。 数据恢复的过程如下:
(1)假设 D1、D4、C2 丢失,从编码矩阵中删掉丢失的数据块/编码块对应的行。(图 2、3)
(2)由于 B' 是可逆的,记 B'的逆矩阵为 (B'^-1),则 B' * (B'^-1) = I 单位矩阵。两边左乘 B'
逆矩阵。 (图 4、5)
(3)得到如下原始数据 D 的计算公式 。

                                                                                    RS

2.5 擦除代码

  • MinIO 使用每个对象的内联擦除编码来保护数据,这种编码是用汇编代码编写的,可以提供尽可能高的性能。MinIO 使用 Reed-Solomon 代码将对象条带化为 n/2 数据和 n/2 奇偶校验块——尽管这些可以配置为任何所需的冗余级别。这意味着在 12 个驱动器设置中,一个对象被分割为 6 个数据和 6 个奇偶校验块。即使您丢失了 5 个(n/2) -1 个驱动器,无论是奇偶校验还是数据,您仍然可以从剩余驱动器可靠地重构数据。MinIO 的实现确保即使多个设备丢失或不可用,也可以读取对象或写入新对象。最后,MinIO 的擦除代码在对象级别,可以一次治愈一个对象。

 

                                                                                  擦除代码

2.6 体系结构

  • 1、MinIO 支持从机器学习到备份的一系列现代工作负载
  • 2、使用云本地技术并分解计算和存储层
  • 3、创建高效和可伸缩的对象存储解决方案。

     

                                                                                       体系结构

3 、Linux 安装准备工作

一、基本信息

官网  https://min.io/

下载  https://min.io/download#/linux

文档  https://docs.min.io/

二、环境、工具说明

1、操作系统  Centos7.4 x64  Minimal 1708    

内存 2G

CPU 1核

2、工具:xshell5

3、VMware 版本:VMware Workstation Pro15

三、安装部署

1、虚拟机安装

参考 https://hunter.blog.csdn.net/article/details/89328381

2、创建目录

[root@localhost ~]# mkdir /mnt/minio
[root@localhost ~]# mkdir /mnt/minio/data
4、进入目录

[root@localhost ~]# cd /mnt/minio

5、防火墙开启 9001 端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=9001/tcp --permanent
重启防火墙

[root@localhost ~]# systemctl restart firewalld
————————————————
版权声明:本文为CSDN博主「一花一世界~」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/llwy1428/article/details/99618252

使用Docker Compose部署MinIO  

Docker Compose允许定义和运行单主机,多容器Docker应用程序。

使用Compose,您可以使用Compose文件来配置MinIO服务。 然后,使用单个命令,您可以通过你的配置创建并启动所有分布式MinIO实例。 分布式MinIO实例将部署在同一主机上的多个容器中。 这是建立基于分布式MinIO的开发,测试和分期环境的好方法。

1. 前提条件

2. 在Docker Compose上运行分布式MinIO

在Docker Compose上部署分布式MinIO,请下载docker-compose.yaml到你的当前工作目录。Docker Compose会pull MinIO Docker Image,所以你不需要手动去下载MinIO binary。然后运行下面的命令

GNU/Linux and macOS

Copydocker-compose pull
docker-compose up

 

现在每个实例都可以访问,端口从9001到9004,请在浏览器中访问http://127.0.0.1:9001/

注意事项

  • 默认情况下Docker Compose file使用的是最新版的MinIO server的Docker镜像,你可以修改image tag来拉取指定版本的MinIO Docker image.

  • 默认情况下会创建4个minio实例,你可以添加更多的MinIO服务(最多总共16个)到你的MinIO Comose deployment。添加一个服务

    • 复制服务定义并适当地更改新服务的名称。
    • 更新每个服务中的命令部分。
    • 更新要为新服务公开的端口号。 另外,请确保分配给新服务的端口尚未使用。

    关于分布式MinIO的更多资料,请访问这里.

  • Docker compose file中的MinIO服务使用的端口是9001到9004,这允许多个服务在主机上运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值