当前位置: 首页 > news >正文

MinIO 4 节点集群部署实战:RPM 安装 + mc 工具攻略(网站托管、自动备份)

一、MinIO 是什么?能解决什么问题?

MinIO 是一个高性能、开源的 S3 兼容对象存储系统,适用于私有云和混合云环境。

它能帮你解决这些实际问题:

场景MinIO 的用途
🖼️ 托管图片/视频替代 Nginx 静态服务,支持海量文件
🌐 部署前端项目托管 Vue/React 打包后的 dist/ 文件
💾 数据备份归档备份数据库、日志、虚拟机镜像
🔐 安全共享文件生成临时下载链接,避免暴露服务器
📊 大数据/ML 存储作为数据湖(Data Lake)底层存储

✅ 一句话:MinIO = 私有版的 AWS S3


二、架构设计:4 节点分布式集群(生产推荐)

+-------------+     +-------------+     +-------------+     +-------------+
| minio-01    |<--->| minio-02    |<--->| minio-03    |<--->| minio-04    |
| 192.168.130.61 |   | 192.168.130.62 |   | 192.168.130.65 |   | 192.168.130.66 |
| /data/minio |     | /data/minio |     | /data/minio |     | /data/minio |
+-------------+     +-------------+     +-------------+     +-------------+\               |               |               /\              |               |              /\             |               |             /\            |               |            /+---------------------------------------+|        MinIO 分布式集群(4节点)        ||   纠删码:4+4 → 可容忍 4 节点故障       |+---------------------------------------+↓[S3 API / Web Console]

📌 纠删码原理:每份数据切为 4 个数据块 + 4 个校验块,任意 4 个块可恢复原始数据。


三、实战 1:部署 MinIO 分布式集群(4 节点)

✅ 环境准备

主机IP 地址角色
minio-01192.168.130.61MinIO 节点
minio-02192.168.130.62MinIO 节点
minio-03192.168.130.65MinIO 节点
minio-04192.168.130.66MinIO 节点

步骤 1:安装 MinIO(所有节点)

#创建目录
mkdir /opt/minio
# 下载 MinIO 服务端rpm包
https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20250207232109.0.0-1.x86_64.rpm#安装
rpm -ivh  minio-20250207232109.0.0-1.x86_64.rpm# 验证安装
minio --version
  • 也可使用 二进制包,二进制更灵活。
# 下载 MinIO 服务端
wget https://dl.min.io/server/minio/release/linux-amd64/minio# 添加执行权限并移动到系统路径
chmod +x minio
mv minio /usr/local/bin/# 验证安装
minio --version

本次使用的rpm安装方式

步骤 2:创建独立挂载点(关键!)

# 创建存储目录
sudo mkdir -p /data/minio# 推荐:挂载独立磁盘(示例)
# sudo mkfs.xfs /dev/sdb
# sudo mount /dev/sdb /data/minio
# echo "/dev/sdb /data/minio xfs defaults 0 0" >> /etc/fstab

⚠️ MinIO 要求存储路径必须是独立挂载点,否则拒绝启动。

步骤 3:设置访问凭证(所有节点)

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=StrongPass123!

建议写入 /etc/environment 或 systemd 环境文件。

步骤 4:启动集群(所有节点执行相同命令)

minio server \http://192.168.130.61/data/minio \http://192.168.130.62/data/minio \http://192.168.130.65/data/minio \http://192.168.130.66/data/minio \--console-address :9001
  • 9000:S3 API 端口
  • 9001:Web 控制台端口

步骤 5:访问 Web 控制台

浏览器打开:

http://192.168.130.61:9001

登录:admin / StrongPass123!


四、实战 2:配置 systemd 开机自启(生产必备)

创建服务文件

sudo tee /etc/systemd/system/minio.service << 'EOF'
[Unit]
Description=MinIO Object Storage Server
After=network.target[Service]
User=root
Group=root
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_OPTS
Restart=always
RestartSec=3
LimitNOFILE=1048576
LimitNPROC=1048576
TimeoutStopSec=20s[Install]
WantedBy=multi-user.target
EOF

创建环境变量文件

sudo mkdir -p /etc/default
sudo tee /etc/default/minio << 'EOF'
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=StrongPass123!MINIO_OPTS="http://192.168.130.61/data/minio \http://192.168.130.62/data/minio \http://192.168.130.65/data/minio \http://192.168.130.66/data/minio \--console-address :9001"
EOF# 保护密码文件
sudo chmod 600 /etc/default/minio

启用服务

sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio
sudo systemctl status minio  # 应显示 active (running)

五、实战 3:使用 mc 管理 MinIO(核心工具)

1.安装 MinIO Client

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

2.配置别名

mc alias set myminio http://192.168.130.61:9000 admin StrongPass123!

3.查看集群状态

mc admin info myminio

4.创建桶并上传文件目录

# 创建桶
mc mb myminio/uploads# 上传文件
mc cp ./test.txt myminio/uploads/# 上传目录
#上传目录必须加--recursive或者-r
mc cp -r ./data/ myminio/uploads/# 列出对象
mc ls myminio/uploads/

5. 桶管理

# 创建桶
mc mb myminio/my-bucket# 列出所有桶
mc ls myminio# 删除空桶
mc rb myminio/my-bucket# 强制删除非空桶
mc rb --force myminio/my-bucket

6. 对象操作

# 上传文件
mc cp local-file.txt myminio/my-bucket/# 下载文件
mc cp myminio/my-bucket/local-file.txt ./# 列出对象
mc ls myminio/my-bucket# 删除对象
mc rm myminio/my-bucket/local-file.txt

7. 目录操作

# 递归上传目录
mc cp --recursive ./my-folder/ myminio/my-bucket/my-folder/# 递归下载目录
mc cp --recursive myminio/my-bucket/my-folder/ ./downloads/# 递归删除目录
mc rm --recursive --force myminio/my-bucket/my-folder/

六、实战 4:托管静态网站

场景:部署一个前端项目

# 1. 创建桶
mc mb myminio/website# 2. 上传文件
echo "hello" >html/index.html
mc cp --recursive ./html/  myminio/website/# 3. 设置公开可读
mc anonymous set public myminio/website# 4. 启用网站模式
mc website set myminio/website --index index.html --error index.html# 5. 访问网站
[root@minio-01 minio]# curl http://192.168.130.61:9000/website/index.html
hello

支持 HTML、CSS、JS、图片自动加载


七、实战 5:自动化备份数据库(如 MySQL)

场景:每天凌晨备份 MySQL 并上传到 MinIO

#!/bin/bash
# backup-mysql.shDATE=$(date +%Y-%m-%d)
DB_NAME="myapp"
BACKUP_DIR="/backup/mysql"
BUCKET="backup-db"# 1. 创建备份目录
mkdir -p $BACKUP_DIR# 2. 导出数据库
mysqldump -u root -p'mysqlpass' $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_$DATE.sql.gz# 3. 上传到 MinIO
mc cp $BACKUP_DIR/${DB_NAME}_$DATE.sql.gz myminio/$BUCKET/# 4. 清理 7 天前的本地备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -deleteecho "MySQL 已备份至 MinIO: myminio/$BUCKET/${DB_NAME}_$DATE.sql.gz"

添加到定时任务

# 每天凌晨1点执行
echo "0 1 * * * /path/to/backup-mysql.sh >> /var/log/backup.log 2>&1" | sudo tee -a /etc/crontab

八、实战 6:用户权限管理(多租户)

场景:为开发团队创建只读账号

# 1. 创建用户
mc admin user add myminio devuser DevPass123!# 2. 绑定只读策略
mc admin policy attach myminio readonly --user devuser# 3. 验证权限
mc admin user info myminio devuser

开发人员只能查看,不能删除数据。


九、生产最佳实践(必看!)

项目建议
节点数量至少 4 节点(4+4 纠删码)
磁盘SSD + XFS + 独立挂载
HTTPS用 Nginx 反向代理 + Let’s Encrypt
备份mc mirror 到异地 MinIO 或 AWS S3
监控Prometheus + Grafana 接入 /minio/v2/metrics/cluster
升级mc admin update myminio 在线升级

总结:MinIO 的 5 大核心能力

能力如何实现
对象存储mc cp, mc ls, mc rm
静态网站托管mc website set + anonymous set public
权限控制admin user add, policy attach
数据备份mc mirror, mc sync, crontab
安全访问share download, STS, TLS

附:命令速查表(打印可用)

功能命令
上传目录mc cp -r ./dir myminio/bucket/
下载文件mc cp myminio/file ./local/
创建用户mc admin user add myminio user pass
临时链接mc share download myminio/file --expire=1h
镜像备份mc mirror /data myminio/backup
查看状态mc admin info myminio

💡 MinIO 不只是存储,更是云原生基础设施的基石

http://www.dtcms.com/a/390167.html

相关文章:

  • 支持向量机 SVM 预测人脸数据集时数据是否标准化的对比差异
  • 学习笔记:Vue 透传
  • 【记录59】携带token加载图片、图片过大自行压缩、转base64、
  • CentOS 7下FTP配置全攻略
  • 利用Debezium和PostgreSQL逻辑复制实现实时数据同步架构设计与优化实践
  • Part05 数学与其他
  • 链接脚本总结
  • 模电基础:基本放大电路及其优化
  • Curl、Wget 等命令 Uses proxy env variable https_proxy 如何解决
  • 自注意力机制Self-Attention (一)
  • (论文速读)DeNVeR(可变形神经血管表示)-X射线血管造影视频的无监督血管分割
  • css实现3D变化之两面翻转的盒子效果
  • 多项式回归原理与实战:从线性扩展到非线性建模
  • 【层面二】.NET 运行时与内存管理-01(CLR/内存管理)
  • 【51单片机】【protues仿真】基于51单片机温度检测数码管系统
  • Sketch安装图文教程:从下载到账号注册完整流程
  • Day07_STM32 单片机 - 中断
  • 花瓶测试用例10条(基于质量模型)
  • C++ 之 【智能指针的简介】
  • Vue3 + xgplayer 实现多功能视频播放器:支持播放列表、自动连播与弹幕
  • 牛客算法基础noob46 约瑟夫环
  • TCP协议的详解
  • 【LeetCode】大厂面试算法真题回忆(136)——环中最长子串
  • Hystrix:熔断器
  • SQLark 实战 | 数据筛选与排序
  • 达梦Qt接口源码Qt6编译错误处理记录
  • 知识付费创作者:如何避免陷入跟风做内容的陷阱?
  • @once_differentiable 自定义算子的用处
  • 分子动力学--蛋白配体模拟
  • python第二节 基础语法及使用规范详解