wei/个人文档/minio部署文档.md
2026-06-04 13:57:41 +08:00

7.7 KiB
Raw Blame History

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. 环境规划
  2. 磁盘准备与挂载
  3. 主机名与网络配置
  4. MinIO 二进制安装
  5. MinIO 集群配置
  6. Systemd 服务配置
  7. 防火墙配置
  8. 启动与验证集群
  9. 常见故障排查
  10. 附录:命令速查

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 设置主机名

  • node1hostnamectl set-hostname node1
  • node2hostnamectl set-hostname node2
  • node3hostnamectl 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. 防火墙配置

在所有节点执行,开放 9000API和 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 官方文档