一、基础环境准备
创建minio系统用户
useradd -s /sbin/nologin -M minio
创建数据存储与日志目录
mkdir -p /data/app/minio/{bin,data,logs,conf}
chown -R minio:minio /data/app/minio
chmod -R 755 /data/app/minio
二、MinIO服务部署(所有节点执行)
1. 下载并安装二进制文件
下载最新稳定版(以v8为例)
wget https://dl.min.io/server/minio/release/linux-amd64/minio -P /data/app/minio/bin/
2. 调整属组
chown -R minio:minio /data/app/minio
3. 设置执行权限
chmod +x /data/app/minio/bin/minio
4. 验证版本
/data/app/minio/bin/minio --version
5. 生成加密密钥(推荐)
生成随机ROOT凭证(保存至安全位置)
注意:每个节点的凭证需保持一致
echo "MINIO_ROOT_USER=$(openssl rand -base64 12)" | sudo tee /data/app/minio/conf/credentials
echo "MINIO_ROOT_PASSWORD=$(openssl rand -base64 12)" | sudo tee -a /data/app/minio/conf/credentials
chmod 600 /data/app/minio/conf/credentials
chown minio:minio /data/app/minio/conf/credentials
6. 启动脚本
tee /data/app/minio/bin/start.sh <<'EOF'
#!/bin/bash
source /data/app/minio/conf/credentials
# 环境变量优化(需同步配置到systemd服务)
export MINIO_ROOT_USER="$MINIO_ROOT_USER"
export MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD"
# 集群路径修正(需符合分布式存储规范)
export MINIO_VOLUMES="http://node1/data/app/minio/data \
http://node2/data/app/minio/data \
http://node3/data/app/minio/data"
# 启动参数优化(增加重要参数)
export MINIO_OPTS="--address :9000 --console-address :9001 --config-dir /data/app/minio/conf"
# 启动命令改进(增加守护进程和日志管理)
nohup /data/app/minio/bin/minio server $MINIO_OPTS $MINIO_VOLUMES \
> /data/app/minio/logs/minio.log 2>&1
EOF
6. 设置权限
chmod +x /data/app/minio/bin/start.sh
chown minio:minio /data/app/minio/bin/start.sh
三、服务管理
1. 配置systemd服务
tee /etc/systemd/system/minio.service <<'EOF'
[Unit]
Description=MinIO Cluster Service
After=network.target
[Service]
User=minio
Group=minio
EnvironmentFile=-/data/app/minio/conf/credentials
ExecStart=/data/app/minio/bin/start.sh
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
2. 重载服务配置
systemctl daemon-reload
systemctl enable minio
systemctl start minio
四、集群验证与客户端配置
1. 安装MinIO客户端(mc)
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
2. 配置集群别名
mc alias set minio-node-01 http://node1:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
mc alias set minio-node-02 http://node2:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
mc alias set minio-node-03 http://node3:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
3. 验证集群状态
查看节点拓扑
mc admin info minio-node-01
创建测试桶
mc mb minio-node-01/foreign-games-update
上传文件测试
mc cp /path/to/large-file fsfn-minio-cluster-01/foreign-games-update/
五、高级配置
1. 配置负载均衡
upstream minio_servers {
server node1:9000;
}
server {
listen 80;
server_name minio.example.com;
access_log /data/logs/nginx/games_access.log main;
error_log /data/logs/nginx/games_error.log;
client_max_body_size 0;
location / {
proxy_pass http://minio_servers;
proxy_set_header Host $host;
}
}
2. 数据分布不均, 触发数据均衡
mc admin rebalance start mycluster
3. 创建同步任务(单向同步)
mc mirror --watch node1/mybucket node2/mybucket node3/mybucket
4. 常规文件上传
mc alias set minio-node-01 http://node01:9000 user password
mc cp /path/to/file minio-node-01/foreign-games-update/