一、分布式集群介绍
分布式 MinIO 将在不同的机器上的多块硬盘组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式 MinIO 有更好的性能,同时避免了单点故障。

1. 分布式 MinIO 优势
- 数据保护:分布式 MinIO 采用纠删码来防范多个节点宕机和位衰减 (bit rot)。分布式 MinIO 至少需要 4 个硬盘,使用分布式 MinIO 会自动引入纠删码功能。
- 高可用:单机 MinIO 服务存在单点故障,相反,如果是一个有 N 块硬盘的分布式 MinIO,只要有 N/2 硬盘在线,数据就是安全的。不过你需要至少有 N/2+1 个硬盘来创建新的对象。例如,一个 16 节点 MinIO 集群,每个节点 16 块硬盘,就算 8 台服务器宕机,这个集群仍然可读的,不过需要 9 台服务器才能写数据。
- 性能:多个节点负载均衡,提升性能。
- 一致性:MinIO 在分布式和单机模式下,所有读写操作都严格遵守 read-after-write 一致性模型。
2. 分布式 MinIO 实现条件
- 在所有节点运行同样的命令启动一个分布式 MinIO 实例,只需要把硬盘位置作为参数传给 minio server 命令即可。
- 分布式 MinIO 中的所有节点需要有同样的环境变量 MINIO_ACCESS_KEY 和 MINIO_SECRET_KEY,才能建立分布式集群。注意:新版本使用环境变量 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD。
- 分布式 MinIO 使用的磁盘里必须是干净的,里面没有数据。
- 分布式 MinIO 里的节点时间差不能超过 3 秒,可以使用 NTP 来保证时间一致。
3. 分布式 MinIO 注意事项
- MinIO 服务器多块数据磁盘需要使用独立的磁盘,在物理底层要相互独立避免遇到磁盘 IO 竞争,导致 MinIO 性能直线下降,如果性能下降严重,数据量大时甚至会导致集群不可用。
- MinIO 数据磁盘最大不超过 2T,如果使用 LVM 逻辑卷,逻辑卷大小也不要超过 2T,过大的磁盘或文件系统会导致后期 IO 延迟较高导致 MinIO 性能降低。
- MinIO 集群共 M 节点每个节点 N 块数据磁盘,磁盘只要存活 M*N/2,MinIO 集群数据就是安全的,在节点数剩余 M/2+1 时节点可以正常读写。
- 如果使用 LVM 方式扩展集群容量,请在部署阶段 MinIO 数据目录就使用 LVM。
- 如果需要备份 MinIO 集群数据,请准备存放 MinIO 集群所有对象数据的空间容量。比如:一个 2T/盘4 块/节点8 节点=64T 的集群所有容量的一半存储空间即 32T 服务器,配置内存 CPU 配置不需要太高。
- 如果网络环境允许请把 MinIO 集群节点配置双网卡,节点通信网络与客户端访问网络分开避免网络瓶颈。
- 配置反向代理实现 MinIO 的负载均衡,可以使用云服务 SLB 或者 2 台 haproxy/nginx 结合 keepalived 实现高可用。
- MinIO 系统中不要安装消耗 IO 较高的应用,比如:updatedb 程序,如安装请排除扫描 MinIO 数据目录,否则可以会导致磁盘 IO 延迟过高,会导致 CPU 负载过高,从而降低 MinIO 性能。
二、基于 LVM 部署二进制分布式高可用集群
1. 架构图





