MinIO 高可用的存储服务

  1. 如何部署 分布式集群
  2. 扩展现有 分布式集群

你可以用多块硬盘(甚至在不同的机器上)搭建一个高可用的对象存储服务,

你可以使用这些存储设备,而不用考虑其真实物理位置。

在大数据领域,通常的设计理念都是无中心和分布式,

由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障。

数据保护

分布式 Minio 采用 纠删码来防范多个节点宕机和位衰减bit rot。

分布式 Minio 至少需要4个硬盘,使用分布式 Minio 自动引入了纠删码功能。

高可用

单机 Minio 服务存在单点故障,相反,如果是一个有N块硬盘的分布式 Minio ,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。

例如,一个16节点的 Minio 集群,每个节点16块硬盘,就算8台服务器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。

注意,只要遵守分布式 Minio 的限制,你可以组合不同的节点和每个节点几块硬盘。比如,你可以使用2个节点,每个节点4块硬盘,也可以使用4个节点,每个节点两块硬盘,诸如此类。

一致性

Minio 在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。

如何部署 分布式集群

在部署前需要注意的是:

  • 所有的节点需要有同样的 access 和 secret
  • 使用的磁盘里必须是干净的,里面没有数据
  • 节点时间差不能超过3秒,可以使用 NTP 来保证时间一致
  • 在 Windows 下运行分布式 Minio 处于实验阶段,悠着点使用

示例一:8 个节点,每个节点 1 块盘

需要在 8 个节点上都运行下面的命令(ip 要根据实际情况改下)

mkdir -p /data/minio/data && \
mkdir -p /data/minio/config && \
docker run -d --name minio \
  --net=host \
  --restart=always \
  --privileged=true \
  -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
  -e "MINIO_SECRET_KEY=wJa1lrXUt3nF2EEXAM1PLE1K1EY" \
  -v /data/minio/data:/data \
  -v /data/minio/config:/root/.minio \
  minio/minio server \
  http://172.25.0.11:9000/data \
  http://172.25.0.12:9000/data \
  http://172.25.0.13:9000/data \
  http://172.25.0.14:9000/data \
  http://172.25.0.15:9000/data \
  http://172.25.0.16:9000/data \
  http://172.25.0.17:9000/data \
  http://172.25.0.18:9000/data; 

注意,9000 端口要开放,开放命令参考 liunx 防火墙

运行后,等待一小会,内部需要初始化…

备注,目前都是采用 host 模式,bridge 模式没成功过,报错提示找不到其他节点
附彻底卸载程序与数据的代码

docker stop minio && \
docker rm minio && \
rm -rf /data/minio

示例二:4 个节点,每个节点 2 块盘

需要在 4 个节点上都运行下面的命令(ip 要根据实际情况改下)

mkdir -p /data/minio/data1 && \
mkdir -p /data/minio/data2 && \
mkdir -p /data/minio/config && \
docker run -d --name minio \
  --net=host \
  --restart=always \
  --privileged=true \
  -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
  -e "MINIO_SECRET_KEY=wJa1lrXUt3nF2EEXAM1PLE1K1EY" \
  -v /data/minio/data:/data \
  -v /data/minio/config:/root/.minio \
  minio/minio server \
  http://172.25.0.11:9000/data1 \
  http://172.25.0.11:9000/data2 \
  http://172.25.0.12:9000/data1 \
  http://172.25.0.12:9000/data2 \
  http://172.25.0.13:9000/data1 \
  http://172.25.0.13:9000/data2 \
  http://172.25.0.14:9000/data1 \
  http://172.25.0.14:9000/data2;

注意,9000 端口要开放,开放命令参考 liunx 防火墙

运行后,等待一小会,内部需要初始化…

备注,目前都是采用 host 模式,bridge 模式没成功过,报错提示找不到其他节点
附彻底卸载程序与数据的代码

docker stop minio && \
docker rm minio && \
rm -rf /data/minio

扩展现有 分布式集群


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:MinIO 高可用的存储服务

字数:962

本文作者:夏来风

发布时间:2020-12-07, 23:41:36

原始链接:http://www.demo1024.com/blog/minio-ha/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。