Linux 上搭建 MinIO 分布式集群的实操步骤
一 架构与前置条件
- 架构要点:MinIO 分布式模式通过把多个节点的本地磁盘聚合成一个“共享”命名空间对外提供 S3 兼容 的对象存储服务;各节点需提供各自的数据目录,MinIO 负责在集群内做数据分布与冗余。
- 节点与磁盘:建议至少准备 4 台 Linux 服务器(生产更稳妥),每台至少 2 块磁盘(系统盘 + 数据盘),单盘容量建议 ≥1TB,服务器间网络往返时延 < 10ms 更佳。
- 系统与账号:操作系统可选 CentOS 7.x/Ubuntu 16.04+;为安全起见创建专用系统用户(如 minio)运行进程;所有节点启用 NTP 时间同步。
- 网络与端口:开放对象 API 端口 9000/TCP(S3)和管理控制台端口 9001/TCP;如经负载均衡对外,还需开放对应 LB 端口。
二 安装与目录准备
- 下载二进制(以 x86_64 为例,其他架构替换为对应链接):
- wget https://dl.min.io/server/minio/release/linux-amd64/minio
- chmod +x minio && mv minio /usr/local/bin/
- 创建系统用户与目录(所有节点一致):
- groupadd --system minio && useradd -r -g minio -s /sbin/nologin minio
- mkdir -p /data/minio /var/log/minio
- chown -R minio:minio /data/minio /var/log/minio
- 说明:数据目录请使用本地磁盘路径,避免使用 NFS 等共享存储参与数据盘(共享盘会破坏数据放置与冗余假设)。
三 配置并启动集群
- 方式 A 环境变量方式(推荐,便于 systemd 管理)
- 在所有节点设置统一凭证(示例):
- export MINIO_ROOT_USER=admin
- export MINIO_ROOT_PASSWORD=StrongPassw0rd!
- 在“每个节点”的启动环境中声明集群拓扑(示例为 4 节点,每节点 2 盘):
- 节点1:export MINIO_VOLUMES=“http://10.0.0.11/data/minio http://10.0.0.11/data/minio2 http://10.0.0.12/data/minio http://10.0.0.12/data/minio2 http://10.0.0.13/data/minio http://10.0.0.13/data/minio2 http://10.0.0.14/data/minio http://10.0.0.14/data/minio2”
- 节点2:export MINIO_VOLUMES=“http://10.0.0.11/data/minio http://10.0.0.11/data/minio2 http://10.0.0.12/data/minio http://10.0.0.12/data/minio2 http://10.0.0.13/data/minio http://10.0.0.13/data/minio2 http://10.0.0.14/data/minio http://10.0.0.14/data/minio2”
- 节点3、节点4:与上面相同(所有节点给出一致的卷列表)
- 启动命令(示例,控制台端口 9001):
- minio server $MINIO_VOLUMES --console-address “:9001”
- 方式 B 命令行直传卷列表(等价)
- 节点1:minio server http://10.0.0.{11…14}/data/minio http://10.0.0.{11…14}/data/minio2 --console-address “:9001”
- 节点2/3/4:与节点1相同(所有节点给出一致的卷列表)
- 说明:上述两种方式等价;关键是“每个节点都使用相同的卷 URL 列表”,MinIO 会自动组成集群并进行数据分布与纠删码/副本放置。
四 以 systemd 托管与开机自启
- 创建服务文件 /etc/systemd/system/minio.service(示例):
- [Unit]
- Description=MinIO
- After=network.target
- [Service]
- User=minio
- Group=minio
- Environment=“MINIO_ROOT_USER=admin”
- Environment=“MINIO_ROOT_PASSWORD=StrongPassw0rd!”
- ExecStart=/usr/local/bin/minio server $MINIO_VOLUMES --console-address “:9001”
- Restart=on-failure
- RestartSec=5
- StandardOutput=/var/log/minio/minio.log
- StandardError=/var/log/minio/minio-error.log
- [Install]
- WantedBy=multi-user.target
- 启用与启动:
- systemctl daemon-reload
- systemctl enable --now minio
- systemctl status minio
- 提示:如需自定义 API 端口,可在 ExecStart 中增加 –address “:9029” 等参数。
五 验证与对外访问
- 控制台与 API:
- 浏览器访问任一节点 http://<节点IP>:9001 登录控制台;对象 API 使用 http://<节点IP>:9000。
- 健康检查与集群信息:
- mc alias set myminio http://<任一节点IP>:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
- mc admin info myminio(查看节点、磁盘与健康状态)
- 负载均衡(可选,生产推荐):
- 使用 Nginx/HAProxy 对 9000/9001 做四层/七层转发,对外暴露统一域名或 VIP;示例 Nginx upstream 可均衡后端多个节点的 9000 端口。
- 防火墙与云安全组:
- 开放 9000/TCP、9001/TCP(以及 LB 端口);云上需配置安全组入站规则。