前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Docker Compose部署分布式MinIO集群

基于Docker Compose部署分布式MinIO集群

作者头像
py3study
发布2020-08-05 14:59:00
3.8K0
发布2020-08-05 14:59:00
举报
文章被收录于专栏:python3python3

一、概述

Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。区别于分布式存储系统,minio的特色在于简单、轻量级,对开发者友好,认为存储应该是一个开发问题而不是一个运维问题。

1.png
1.png

存储架构

Minio针对不同应用场景也设置了对应的存储架构:

1、单主机,单硬盘模式

1.png
1.png

该模式下,Minio只在一台服务器上搭建服务,且数据都存在单块磁盘上,该模式存在单点风险,主要用作开发、测试等使用

minio --config-dir ~/tenant1 server --address :9001 /disk1/data/tenant1

2、单主机,多硬盘模式

1.png
1.png

该模式下,Minio在一台服务器上搭建服务,但数据分散在多块(大于4块)磁盘上,提供了数据上的安全保障

minio --config-dir ~/tenant1 server --address :9001 /disk1/data/tenant1 /disk2/data/tenant1 /disk3/data/tenant1 /disk4/data/enant1

3、多主机、多硬盘模式(分布式)

1.png
1.png

该模式是Minio服务最常用的架构,通过共享一个accesskey和secretkey,在多台(2-32)服务器上搭建服务,且数据分散在多块(大于4块,无上限)磁盘上,提供了较为强大的数据冗余机制(Reed-Solomon纠删码)。

export MINIO_ACCESS_KEY=<TENANT1_ACCESS_KEY>
export MINIO_SECRET_KEY=<TENANT1_SECRET_KEY>
minio --config-dir ~/tenant1 server --address :9001 http://192.168.10.11/data/tenant1 http://192.168.10.12/data/tenant1 http://192.168.10.13/data/tenant1 http://192.168.10.14/data/tenant1

数据安全

Minio使用了Reed-Solomon纠删码和校验和来保护数据免受硬件故障和无声数据损坏。

1、Reed-Solomon纠删码

纠删码是一种恢复丢失和损坏数据的数学算法, Minio默认采用Reed-Solomon code将数据拆分成N/2个数据块和N/2个奇偶校验块。这就意味着如果是16块盘,一个对象会被分成8个数据块、8个奇偶校验块,你可以丢失任意8块盘(不管其是存放的数据块还是校验块),你仍可以从剩下的盘中的数据进行恢复。 

1.png
1.png

纠删码的工作原理和RAID或者副本不同,像RAID6可以在损失两块盘的情况下不丢数据,而Minio纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且Minio纠删码是作用在对象级别,可以一次恢复一个对象,而RAID是作用在卷级别,数据恢复时间很长。 Minio对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复。

此外,针对不同应用所需的数据安全级别不同,Minio还提供了存储级别(Storage Class)的配置,调整数据块和校验块的比例,做到对空间的最佳使用。

1.png
1.png

比如在将比例调整为14:2后,存储100M的数据占用的空间仅为114M。

2、位衰减保护

位衰减又被称为数据腐化Data Rot、无声数据损坏Silent Data Corruption,是目前硬盘数据的一种严重数据丢失问题。硬盘上的数据可能会神不知鬼不觉就损坏了,也没有什么错误日志。针对这一问题,最新的Minio采用了HighwayHash算法计算校验和来防范位衰减,根据测试结果,其可以实现10GB/s的处理速度。

3、文件的修复

得益于Reed-Solomon纠删码,Minio可以更加灵活的对文件进行修复。目前,Minio提供了全量、bucket、文件夹、文件等各个粒度的修复操作: 

1.png
1.png
1.png
1.png
1.png
1.png
1.png
1.png

相比一般的RAID方式,Minio可以在非常小的粒度下对文件进行修复操作,灵活性有了很大提高。

二、Docker Compose部署

中文文档:https://docs.min.io/cn/deploy-minio-on-docker-compose.html

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

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

环境说明

操作系统

ip地址

docker版本

Docker Compose版本

centos 7.6

192.168.31.34

19.03.8

1.24.1

运行分布式MinIO

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

docker-compose pull
docker-compose up -d

现在每个实例都可以访问,端口从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,这允许多个服务在主机上运行。

访问MinIO

http://192.168.31.34:9001/minio/

用户名:minio,密码:minio123

1.png
1.png

登录之后,效果如下:

1.png
1.png

三、MinIO操作

修改密码

点击右上角

1.png
1.png

提示:无法通过浏览器更新此用户的凭据

1.png
1.png

注意:如果需要修改密码,修改docker-compose.yaml中的MINIO_ACCESS_KEY和MINIO_SECRET_KEY变量即可。

创建bucket(文件夹)

先来创建一个bucket

1.png
1.png

 创建data

1.png
1.png

 上传文件

选中data,点击右下角的上传文件

1.png
1.png

 选择一张图片,上传成功之后,效果如下:

1.png
1.png

查看bucket文件信息

点击data,查看与设置该Object的基本信息: 查看共享地址Shareable Link

1.png
1.png

设置到期时间,最大可保存时间为7天

对话框上方弹出该Object现剩余到期时间

1.png
1.png

本文参考链接:

http://tech.dianwoda.com/2018/12/04/fen-bu-shi-cun-chu-xi-tong-miniojian-jie/

https://www.jianshu.com/p/68ac0477291d

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
    • 存储架构
      • 1、单主机,单硬盘模式
      • 2、单主机,多硬盘模式
      • 3、多主机、多硬盘模式(分布式)
    • 数据安全
      • 1、Reed-Solomon纠删码
      • 2、位衰减保护
      • 3、文件的修复
  • 二、Docker Compose部署
    • 环境说明
      • 运行分布式MinIO
        • 注意事项
      • 访问MinIO
        • 三、MinIO操作
          • 修改密码
            • 创建bucket(文件夹)
              •  上传文件
                • 查看bucket文件信息
                相关产品与服务
                对象存储
                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档