8.9 KiB
8.9 KiB
基于现有启动脚本的MinIO主从配置指南
📋 配置说明
本指南基于您现有的两个MinIO启动脚本:
- 67机器:
67 机器的minio-start.sh(主节点) - 68机器:
68 机器的minio-start.sh(从节点)
配置目标: 67为主节点,68为从节点,实现数据主从同步。
🎯 配置方案
方案选择
推荐使用: 实时同步模式(watch模式)
- ✅ 实时同步: 主节点数据变化立即同步到从节点
- ✅ 自动运行: systemd服务管理,自动重启
- ✅ 日志完整: 详细的同步日志记录
备选方案: 定时同步模式(cron模式)
- ⚠️ 延迟同步: 按固定时间间隔同步(如每5分钟)
- ✅ 资源占用低: 不需要常驻进程
- ⚠️ 数据延迟: 存在同步延迟
🚀 配置步骤
第一步:确保两台机器MinIO服务正常运行
在67机器(主节点)上:
# 1. 启动MinIO服务
chmod +x /path/to/67\ 机器的minio-start.sh
/path/to/67\ 机器的minio-start.sh
# 2. 检查服务状态
ps aux | grep minio
netstat -tlnp | grep 9000
# 3. 测试访问
curl http://127.0.0.1:9000/minio/health/live
在68机器(从节点)上:
# 1. 启动MinIO服务
chmod +x /path/to/68\ 机器的minio-start.sh
/path/to/68\ 机器的minio-start.sh
# 2. 检查服务状态
ps aux | grep minio
netstat -tlnp | grep 9000
# 3. 测试访问
curl http://127.0.0.1:9000/minio/health/live
第二步:在68机器上配置主从同步
⚠️ 重要: 同步脚本必须在**68机器(从节点)**上执行!
# 1. 进入部署脚本目录
cd /path/to/部署文档/生产环境双机部署方案/部署脚本/
# 2. 赋予执行权限
chmod +x setup-minio-replication.sh
# 3. 执行配置脚本
./setup-minio-replication.sh
配置脚本会自动完成:
- ✅ 安装MinIO客户端(mc)
- ✅ 测试网络连通性
- ✅ 配置MinIO别名(minio-master、minio-slave)
- ✅ 创建同步脚本(
/opt/minio-sync.sh) - ✅ 创建systemd服务(
minio-sync.service)
第三步:执行初始同步
初始同步:将主节点现有数据全部同步到从节点(一次性操作)
# 在68机器上执行
mc mirror --remove --overwrite minio-master/ minio-slave/
说明:
--remove: 删除从节点中不存在于主节点的文件--overwrite: 覆盖已存在的文件- 同步时间取决于数据量大小
查看同步进度:
# 实时查看同步日志
tail -f /var/log/minio-sync.log
第四步:启动实时同步服务
# 1. 启动同步服务
systemctl start minio-sync
# 2. 设置开机自启
systemctl enable minio-sync
# 3. 查看服务状态
systemctl status minio-sync
服务说明:
- 使用
watch模式,实时监控主节点变化 - 自动重启,确保服务持续运行
- 日志记录到
/var/log/minio-sync.log和journalctl
第五步:验证同步功能
测试1:在主节点上传文件
# 在67机器上
echo "test file" > test-sync.txt
mc cp test-sync.txt minio-master/ruoyi/
测试2:检查从节点是否有文件
# 在68机器上(等待几秒后)
mc ls minio-slave/ruoyi/ | grep test-sync.txt
测试3:查看同步日志
# 在68机器上
tail -f /var/log/minio-sync.log
# 或
journalctl -u minio-sync -f
预期结果:
- 主节点上传文件后,几秒内从节点可以看到文件
- 同步日志显示同步操作记录
🔧 服务管理命令
同步服务管理
# 启动服务
systemctl start minio-sync
# 停止服务
systemctl stop minio-sync
# 重启服务
systemctl restart minio-sync
# 查看状态
systemctl status minio-sync
# 查看日志
journalctl -u minio-sync -f
tail -f /var/log/minio-sync.log
# 禁用开机自启
systemctl disable minio-sync
# 启用开机自启
systemctl enable minio-sync
📊 定时同步模式(备选方案)
如果不想使用实时同步(watch模式),可以使用定时同步:
配置定时同步
# 1. 赋予执行权限
chmod +x /path/to/部署脚本/minio-sync-cron.sh
# 2. 添加到crontab(每5分钟同步一次)
(crontab -l 2>/dev/null; echo "*/5 * * * * /path/to/部署脚本/minio-sync-cron.sh >> /var/log/minio-sync-cron.log 2>&1") | crontab -
# 3. 查看crontab
crontab -l
定时同步说明:
- ⚠️ 数据延迟: 最多延迟5分钟(取决于cron间隔)
- ✅ 资源占用低: 不需要常驻进程
- ⚠️ 需要手动切换: 主节点故障时需要手动切换
🔍 验证和测试
完整测试流程
1. 检查服务状态
# 在67机器上(主节点)
ps aux | grep minio
curl http://127.0.0.1:9000/minio/health/live
# 在68机器上(从节点)
ps aux | grep minio
systemctl status minio-sync
2. 测试文件同步
# 在67机器上创建测试文件
echo "sync test $(date)" > /tmp/sync-test-$(date +%s).txt
mc cp /tmp/sync-test-*.txt minio-master/ruoyi/
# 在68机器上检查(等待5-10秒)
mc ls minio-slave/ruoyi/ | grep sync-test
3. 测试删除同步
# 在67机器上删除文件
mc rm minio-master/ruoyi/sync-test-*.txt
# 在68机器上检查(等待5-10秒)
mc ls minio-slave/ruoyi/ | grep sync-test # 应该找不到
4. 测试目录同步
# 在67机器上创建目录和文件
mc mb minio-master/ruoyi/test-dir
echo "test" > /tmp/test.txt
mc cp /tmp/test.txt minio-master/ruoyi/test-dir/
# 在68机器上检查
mc ls minio-slave/ruoyi/test-dir/
⚠️ 注意事项
1. 网络要求
- ✅ 网络互通: 67和68机器必须网络互通
- ✅ 端口开放: 确保9000端口可访问
- ✅ 防火墙配置: 开放必要端口
# 测试网络连通性
ping 172.16.0.67
ping 172.16.0.68
telnet 172.16.0.67 9000
telnet 172.16.0.68 9000
2. 认证信息
当前配置:
- 用户名:
minioadmin - 密码:
minioadmin@123456
⚠️ 生产环境建议:
- 修改为强密码
- 同步修改两个启动脚本中的密码
- 同步修改同步脚本中的密码
3. 数据一致性
- ⚠️ 实时同步: watch模式有秒级延迟
- ⚠️ 定时同步: cron模式有分钟级延迟
- ✅ 最终一致性: 数据最终会保持一致
4. 故障切换
主节点故障时:
- 从节点数据可能不完整(存在延迟)
- 需要手动切换应用连接到从节点
- 主节点恢复后,需要重新同步
建议:
- 使用Nginx负载均衡,自动故障转移
- 定期检查同步状态
- 配置监控告警
🔧 故障排查
问题1:同步服务无法启动
# 检查服务状态
systemctl status minio-sync
# 查看详细日志
journalctl -u minio-sync -n 100
# 检查脚本权限
ls -l /opt/minio-sync.sh
chmod +x /opt/minio-sync.sh
# 手动测试脚本
/opt/minio-sync.sh
问题2:无法连接到主节点
# 检查网络连通性
ping 172.16.0.67
telnet 172.16.0.67 9000
# 检查主节点服务
ssh 172.16.0.67 "ps aux | grep minio"
ssh 172.16.0.67 "curl http://127.0.0.1:9000/minio/health/live"
# 检查防火墙
firewall-cmd --list-all | grep 9000
问题3:同步延迟大
# 检查网络延迟
ping -c 10 172.16.0.67
# 检查同步服务状态
systemctl status minio-sync
# 查看同步日志
tail -f /var/log/minio-sync.log
# 检查主节点负载
ssh 172.16.0.67 "top -bn1 | head -20"
问题4:数据不一致
# 手动触发同步
mc mirror --remove --overwrite minio-master/ minio-slave/
# 检查bucket大小
mc du minio-master/
mc du minio-slave/
# 检查文件数量
mc ls minio-master/ruoyi/ | wc -l
mc ls minio-slave/ruoyi/ | wc -l
📚 相关文档
- MinIO高可用配置指南.md - MinIO高可用方案对比
- 生产环境双机部署方案.md - 完整部署方案
- 部署脚本/setup-minio-replication.sh - 自动配置脚本
- 部署脚本/minio-sync-cron.sh - 定时同步脚本
🎯 快速参考
配置命令汇总
# 1. 在68机器上执行配置脚本
cd 部署脚本/
chmod +x setup-minio-replication.sh
./setup-minio-replication.sh
# 2. 执行初始同步
mc mirror --remove --overwrite minio-master/ minio-slave/
# 3. 启动同步服务
systemctl start minio-sync
systemctl enable minio-sync
# 4. 查看服务状态
systemctl status minio-sync
tail -f /var/log/minio-sync.log
验证命令
# 测试同步
echo "test" > test.txt
mc cp test.txt minio-master/ruoyi/
sleep 5
mc ls minio-slave/ruoyi/ | grep test.txt
# 查看同步日志
journalctl -u minio-sync -f
📝 文档版本: v1.0
🔄 最后更新: 2025-01-27
✅ 适用场景: 基于现有启动脚本的MinIO主从配置(67为主,68为从)