7.7 KiB
MinIO 生产级集群部署文档(EC:8+4)
文档信息
| 项目 | 内容 |
|---|---|
| 集群规模 | 3 节点 |
| 每节点磁盘 | 8 块独立数据盘(共 24 块盘) |
| 纠删码配置 | EC:8+4(每纠删集合 12 盘,8 数据 + 4 校验) |
| 操作系统 | CentOS 9 Stream |
| MinIO 版本 | RELEASE.2025-09-07T16-13-09Z |
| 部署方式 | 二进制 + Systemd 服务 |
目录
1. 环境规划
1.1 硬件要求
| 组件 | 最低配置 | 推荐配置(本次测试) |
|---|---|---|
| CPU | 4 核 | 8 核 |
| 内存 | 8 GB | 16 GB |
| 系统盘 | 100 GB | 100 GB |
| 数据盘 | 每节点 8 × 100 GB | 每节点 8 × 100 GB |
| 网络 | 千兆 | 千兆或更高 |
1.2 节点信息
| 主机名 | IP 地址 | 数据盘挂载点 |
|---|---|---|
| node1 | 192.168.1.42 | /mnt/disk1 ~ /mnt/disk8 |
| node2 | 192.168.1.43 | /mnt/disk1 ~ /mnt/disk8 |
| node3 | 192.168.1.44 | /mnt/disk1 ~ /mnt/disk8 |
注意:请根据你的实际 IP 地址替换。
2. 磁盘准备与挂载
此步骤在所有三个节点上分别执行。
2.1 查看磁盘列表
lsblk
预期输出应包含系统盘(sda)和 8 块数据盘(sdb ~ sdi)。
2.2 格式化数据盘为 XFS
for disk in sdb sdc sdd sde sdf sdg sdh sdi; do
mkfs.xfs -f /dev/$disk
done
2.3 创建挂载点
for i in {1..8}; do
mkdir -p /mnt/disk$i
done
2.4 临时挂载并设置优化参数
mount /dev/sdb /mnt/disk1
mount /dev/sdc /mnt/disk2
mount /dev/sdd /mnt/disk3
mount /dev/sde /mnt/disk4
mount /dev/sdf /mnt/disk5
mount /dev/sdg /mnt/disk6
mount /dev/sdh /mnt/disk7
mount /dev/sdi /mnt/disk8
for i in {1..8}; do
mount -o remount,noatime,nodiratime /mnt/disk$i
done
2.5 获取 UUID 并写入 fstab
blkid | grep -E 'sdb|sdc|sdd|sde|sdf|sdg|sdh|sdi'
编辑 /etc/fstab,为每个磁盘添加一行(使用你自己的 UUID):
UUID=8ac8649a-... /mnt/disk1 xfs defaults,noatime,nodiratime 0 0
UUID=95a4dee5-... /mnt/disk2 xfs defaults,noatime,nodiratime 0 0
...
2.6 验证挂载
mount -a
df -h | grep /mnt/disk
应看到 8 行输出,每行对应一个磁盘。
3. 主机名与网络配置
3.1 设置主机名
- node1:
hostnamectl set-hostname node1 - node2:
hostnamectl set-hostname node2 - node3:
hostnamectl set-hostname node3
3.2 配置 /etc/hosts(所有节点相同)
cat >> /etc/hosts <<EOF
192.168.1.42 node1
192.168.1.43 node2
192.168.1.44 node3
EOF
3.3 验证解析
ping -c 2 node1
ping -c 2 node2
ping -c 2 node3
4. MinIO 二进制安装
在所有三个节点执行。
4.1 下载 MinIO 服务器和客户端
curl -O https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
4.2 验证版本
minio --version
mc --version
5. MinIO 集群配置
5.1 创建专用用户
groupadd -r minio-user
useradd -r -g minio-user -s /sbin/nologin minio-user
chown -R minio-user:minio-user /mnt/disk*
5.2 创建环境变量文件
cat > /etc/default/minio <<EOF
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin123
MINIO_VOLUMES="http://node{1...3}/mnt/disk{1...8}"
MINIO_OPTS="--address :9000 --console-address :9001"
MINIO_STORAGE_CLASS_STANDARD="EC:4"
EOF
MINIO_STORAGE_CLASS_STANDARD="EC:4" 为8+4 如需 4+2 可改为 EC:2
注意:三个节点的
MINIO_VOLUMES必须完全相同。
6. Systemd 服务配置
6.1 创建服务文件
cat > /etc/systemd/system/minio.service <<EOF
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
EnvironmentFile=-/etc/default/minio
User=minio-user
Group=minio-user
LimitNOFILE=65536
ExecStart=/usr/local/bin/minio server \$MINIO_OPTS \$MINIO_VOLUMES
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
6.2 重新加载 systemd 并启用服务
systemctl daemon-reload
systemctl enable minio
7. 防火墙配置
在所有节点执行,开放 9000(API)和 9001(控制台)端口。
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=9001/tcp
firewall-cmd --reload
8. 启动与验证集群
8.1 启动 MinIO 服务
在三个节点上几乎同时执行:
systemctl start minio
8.2 检查服务状态
systemctl status minio
journalctl -u minio -f --no-pager -n 50
8.3 使用 mc 验证集群
在任意节点(如 node1)上:
mc alias set myminio http://node1:9000 minioadmin minioadmin123
mc admin info myminio
预期输出:
● node1:9000
Uptime: 1 minute
Version: 2025-09-07T16:13:09Z
Network: 3/3 OK
Drives: 8/8 OK
Pool: 1
● node2:9000
... (类似)
● node3:9000
... (类似)
24 drives online, 0 drives offline, EC:4
关键:
EC:4表示纠删码配置为 8+4(因为每个纠删集 12 盘,4 校验盘)。
8.4 访问 Web 控制台
浏览器打开 http://node1:9001(或任意节点 IP),使用 minioadmin / minioadmin123 登录。
9. 常见故障排查
9.1 启动失败:lookup node1: no such host
原因:主机名解析失败。
解决:检查 /etc/hosts 是否包含所有节点映射,并验证 ping node1 能通。
9.2 集群无法形成:节点间网络不通
原因:防火墙未放行 9000/9001 端口。
解决:执行第 7 节的防火墙配置,或用 telnet node1 9000 测试连通性。配置 setenforce 0
9.3 权限错误:Permission denied 写入磁盘
原因:MinIO 进程(用户 minio-user)无权写入挂载点。
解决:chown -R minio-user:minio-user /mnt/disk*
9.4 纠删码不是 EC:4(显示 EC:0 或 EC:2)
原因:磁盘数量或分布不符合自动纠删集要求。
解决:确保每个节点的磁盘路径正确,且 MINIO_VOLUMES 使用通配符形式 http://node{1...3}/mnt/disk{1...8}。
9.5 查看详细日志
journalctl -u minio -n 100 --no-pager
10. 附录:命令速查
| 操作 | 命令 |
|---|---|
| 启动 MinIO | systemctl start minio |
| 停止 MinIO | systemctl stop minio |
| 重启 MinIO | systemctl restart minio |
| 查看状态 | systemctl status minio |
| 查看实时日志 | journalctl -u minio -f |
| 查看集群信息 | mc admin info myminio |
| 列出所有桶 | mc ls myminio |
| 创建桶 | mc mb myminio/new-bucket |
| 上传文件 | mc cp localfile myminio/bucket/ |
| 下载文件 | mc cp myminio/bucket/file ./ |
| 删除桶 | mc rb myminio/bucket |
| 压力测试 | warp mixed --host=... --analyze.v |
文档结束
你现在拥有一个完全可用的 MinIO 生产级集群,具备 EC:8+4 数据保护能力。如需进一步调优或扩展,请参考 MinIO 官方文档。