什么是 MinIO 分布式模式?
分布式 MinIO 是 MinIO 的高可用部署方式,它将多个独立的 MinIO 服务器组成一个集群,对外提供统一的 S3 接口,具备:
特性 | 说明 |
✅ 高可用(HA) | 节点宕机不影响服务 |
✅ 数据冗余 | 基于纠删码,自动保护数据 |
✅ 无限扩展 | 支持水平扩展(Scale-out) |
✅ 统一命名空间 | 所有节点共享一个 bucket 空间 |
✅ 原生 S3 兼容 | 与 AWS S3 完全兼容 |
实战:部署 4 节点分布式 MinIO 集群
环境准备
- 4 台 Linux 服务器(或 4 个 Docker 容器)
- 每台服务器挂载一个独立磁盘(如
/data1
) - 开放端口:
9000
(API)、9001
(控制台)
方法一:使用命令行部署(推荐)
在 每台服务器上执行相同命令:
export MINIO_ROOT_USER="admin"
export MINIO_ROOT_PASSWORD="password123"
minio server \
http://node1/data1 \
http://node2/data1 \
http://node3/data1 \
http://node4/data1
📌 关键点:
- 所有节点执行相同命令
- 使用
http://<hostname>
指定各节点地址 - MinIO 自动协商形成集群
方法二:使用 Docker 部署(开发测试)
# docker-compose.yml
version: '3.7'
services:
minio1:
image: minio/minio
volumes:
- ./data1:/data1
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=password123
command: server http://minio{1...4}/data1
ports:
- "9000:9000"
- "9001:9001"
minio2:
image: minio/minio
volumes:
- ./data2:/data1
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=password123
command: server http://minio{1...4}/data1
minio3:
image: minio/minio
volumes:
- ./data3:/data1
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=password123
command: server http://minio{1...4}/data1
minio4:
image: minio/minio
volumes:
- ./data4:/data1
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=password123
command: server http://minio{1...4}/data1
启动:
docker-compose up -d
🧪 验证与测试
1. 访问控制台
http://<任意节点IP>:9000
登录后可见:
- 集群总容量 = 所有磁盘之和
- 所有节点状态(绿色为正常)
2. 创建 Bucket 并上传文件
- 任意节点上传,其他节点自动同步
- 文件被自动分片存储
3. 模拟节点宕机
关闭 minio3
容器或服务器:
docker stop minio3
观察控制台:
minio3
显示为离线- 服务依然可用(读写正常)
- 上传新文件仍成功(纠删码重新分布)
恢复节点后,MinIO 自动同步数据并恢复集群状态。