# MinIO集群配置指南(基于启动脚本) ## 📋 概述 本文档基于67和68机器的MinIO启动脚本,配置MinIO分布式集群模式。 ### 集群架构 - **67机器**: 提供2个数据目录(节点1和节点2) - **68机器**: 提供2个数据目录(节点3和节点4) - **集群规模**: 4节点集群(满足MinIO最小集群要求) - **高可用性**: 支持1个节点故障(4节点集群可容忍1个节点故障) --- ## 🎯 前置条件 ### 1. 网络要求 ✅ **两台机器网络互通** ✅ **防火墙开放9000和9001端口** ✅ **确保两台机器可以互相访问** ```bash # 在67机器上测试 ping 172.16.0.68 telnet 172.16.0.68 9000 # 在68机器上测试 ping 172.16.0.67 telnet 172.16.0.67 9000 ``` ### 2. 数据目录准备 **67机器**需要创建2个数据目录: ```bash mkdir -p /iflytek/soft/minio/data1 mkdir -p /iflytek/soft/minio/data2 ``` **68机器**需要创建2个数据目录: ```bash mkdir -p /iflytek/soft/minio/data1 mkdir -p /iflytek/soft/minio/data2 ``` ### 3. 停止现有单机MinIO服务 ```bash # 在67机器上 ps aux | grep minio kill $(cat /iflytek/soft/minio/minio.pid) # 如果存在PID文件 # 在68机器上 ps aux | grep minio kill $(cat /iflytek/soft/minio/minio.pid) # 如果存在PID文件 ``` --- ## 🚀 配置步骤 ### 第一步:准备集群启动脚本 #### 1.1 在67机器上配置 ```bash # 复制集群启动脚本 cp "67 机器的minio-cluster-start.sh" /iflytek/soft/minio/minio-cluster-start.sh chmod +x /iflytek/soft/minio/minio-cluster-start.sh ``` #### 1.2 在68机器上配置 ```bash # 复制集群启动脚本 cp "68 机器的minio-cluster-start.sh" /iflytek/soft/minio/minio-cluster-start.sh chmod +x /iflytek/soft/minio/minio-cluster-start.sh ``` --- ### 第二步:启动集群(重要:必须同时启动) **⚠️ 重要提示**:MinIO集群模式要求所有节点**同时启动**或**几乎同时启动**(时间差不超过几秒)。 #### 2.1 在67机器上启动 ```bash # 进入MinIO目录 cd /iflytek/soft/minio # 启动集群节点 ./minio-cluster-start.sh ``` #### 2.2 在68机器上启动(几乎同时) ```bash # 进入MinIO目录 cd /iflytek/soft/minio # 启动集群节点 ./minio-cluster-start.sh ``` **建议**:使用SSH同时连接到两台机器,或者使用脚本同时启动。 --- ### 第三步:验证集群状态 #### 3.1 安装MinIO客户端(mc) ```bash # 在任意一台机器上安装 wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x mc sudo mv mc /usr/local/bin/ ``` #### 3.2 配置集群别名 ```bash # 连接到集群(可以连接到任意节点) mc alias set minio-cluster http://172.16.0.67:9000 minioadmin minioadmin@123456 ``` #### 3.3 查看集群信息 ```bash # 查看集群详细信息 mc admin info minio-cluster # 查看集群状态 mc admin heal minio-cluster --dry-run # 查看集群节点 mc admin service status minio-cluster ``` **正常输出示例**: ``` ● minio1:9000 Uptime: 1h Version: RELEASE.2025-04-22T22-12-26Z Drives: 2/2 OK ... ● minio2:9000 Uptime: 1h Version: RELEASE.2025-04-22T22-12-26Z Drives: 2/2 OK ... ``` --- ### 第四步:测试集群功能 #### 4.1 创建存储桶 ```bash # 创建测试存储桶 mc mb minio-cluster/test-bucket # 列出存储桶 mc ls minio-cluster/ ``` #### 4.2 上传测试文件 ```bash # 上传测试文件 echo "test cluster" > test.txt mc cp test.txt minio-cluster/test-bucket/ # 列出文件 mc ls minio-cluster/test-bucket/ ``` #### 4.3 测试故障转移 ```bash # 停止67机器的MinIO服务 kill $(cat /iflytek/soft/minio/minio.pid) # 等待几秒后,测试集群是否仍可用 mc ls minio-cluster/test-bucket/ # 应该仍然可以访问 # 重启67机器 ./minio-cluster-start.sh # 验证数据一致性 mc admin heal minio-cluster ``` --- ## 📊 集群配置说明 ### 端点配置 **67机器端点**: - 本地节点1: `/iflytek/soft/minio/data1` - 本地节点2: `/iflytek/soft/minio/data2` - 远程节点3: `http://172.16.0.68:9000/iflytek/soft/minio/data1` - 远程节点4: `http://172.16.0.68:9000/iflytek/soft/minio/data2` **68机器端点**(与67机器完全一致): - 远程节点1: `http://172.16.0.67:9000/iflytek/soft/minio/data1` - 远程节点2: `http://172.16.0.67:9000/iflytek/soft/minio/data2` - 本地节点3: `/iflytek/soft/minio/data1` - 本地节点4: `/iflytek/soft/minio/data2` ### 性能参数 - **内存限制**: 最大32GB - **API请求限制**: 10000 - **请求超时**: 300秒 - **GC线程数**: 4 - **缓冲区大小**: 64MiB --- ## 🔧 常用管理命令 ### 服务管理 ```bash # 启动集群(两台机器同时执行) ./minio-cluster-start.sh # 停止集群 kill $(cat /iflytek/soft/minio/minio.pid) # 查看日志 tail -f /iflytek/soft/minio/logs/minio.log ``` ### 集群管理 ```bash # 查看集群信息 mc admin info minio-cluster # 查看集群健康状态 mc admin heal minio-cluster --dry-run # 修复集群数据 mc admin heal minio-cluster # 查看集群节点状态 mc admin service status minio-cluster ``` ### 数据管理 ```bash # 创建存储桶 mc mb minio-cluster/bucket-name # 上传文件 mc cp file.txt minio-cluster/bucket-name/ # 下载文件 mc cp minio-cluster/bucket-name/file.txt ./ # 列出文件 mc ls minio-cluster/bucket-name/ # 删除文件 mc rm minio-cluster/bucket-name/file.txt ``` --- ## ⚠️ 注意事项 ### 1. 启动顺序 - **必须同时启动**:所有节点必须在几秒内启动,否则集群无法形成 - **建议使用脚本**:创建启动脚本确保同时启动 ### 2. 端点一致性 - **所有节点必须使用相同的端点列表**:67和68机器的端点列表必须完全一致 - **路径必须正确**:确保数据目录路径在两台机器上完全一致 ### 3. 网络要求 - **端口开放**:确保9000和9001端口在两台机器上都可以访问 - **防火墙配置**:如果使用防火墙,需要开放相应端口 ### 4. 数据目录 - **权限设置**:确保MinIO进程有读写权限 - **磁盘空间**:确保有足够的磁盘空间 --- ## 🔍 故障排查 ### 问题1:集群无法启动 **症状**:启动后节点无法加入集群 **解决方法**: ```bash # 1. 检查网络连通性 ping 172.16.0.67 ping 172.16.0.68 telnet 172.16.0.67 9000 telnet 172.16.0.68 9000 # 2. 检查防火墙 firewall-cmd --list-all | grep 9000 # 3. 检查日志 tail -f /iflytek/soft/minio/logs/minio.log # 4. 确保所有节点同时启动 ``` ### 问题2:节点状态异常 **症状**:`mc admin info` 显示节点状态异常 **解决方法**: ```bash # 1. 检查节点日志 tail -f /iflytek/soft/minio/logs/minio.log # 2. 检查数据目录权限 ls -la /iflytek/soft/minio/data1 ls -la /iflytek/soft/minio/data2 # 3. 执行集群修复 mc admin heal minio-cluster # 4. 重启异常节点 kill $(cat /iflytek/soft/minio/minio.pid) ./minio-cluster-start.sh ``` ### 问题3:数据不一致 **症状**:两个节点文件数量不一致 **解决方法**: ```bash # 1. 检查集群健康状态 mc admin heal minio-cluster --dry-run # 2. 执行修复 mc admin heal minio-cluster # 3. 检查节点状态 mc admin info minio-cluster ``` --- ## 📚 相关文档 - [MinIO集群文件同步机制说明.md](./MinIO集群文件同步机制说明.md) - **MinIO集群自动同步机制详解(重要!)** - [MinIO高可用配置指南.md](./MinIO高可用配置指南.md) - MinIO高可用方案对比 - [MinIO集群Nginx配置指南.md](./MinIO集群Nginx配置指南.md) - **MinIO集群nginx负载均衡配置(推荐)** - [基于现有启动脚本的MinIO主从配置.md](./基于现有启动脚本的MinIO主从配置.md) - 主从同步方案 - [67 机器的minio-cluster-start.sh](./配置文件/67%20机器的minio-cluster-start.sh) - 67机器集群启动脚本 - [68 机器的minio-cluster-start.sh](./配置文件/68%20机器的minio-cluster-start.sh) - 68机器集群启动脚本 --- ## 🎯 配置总结 ### 集群架构 - **节点数量**: 4节点(67机器2个 + 68机器2个) - **高可用性**: 支持1个节点故障 - **数据冗余**: 使用纠删码技术,自动数据冗余 ### 配置要点 1. ✅ **同时启动**:所有节点必须同时启动 2. ✅ **端点一致**:所有节点使用相同的端点列表 3. ✅ **网络互通**:确保两台机器网络互通 4. ✅ **端口开放**:确保9000和9001端口可访问 --- **📝 文档版本**: v1.0 **🔄 最后更新**: 2025-01-27 **✅ 适用场景**: 67/68双机MinIO集群配置