温馨提示×

MinIO在CentOS上的集群搭建指南

小樊
38
2025-12-17 11:47:05
栏目: 智能运维

MinIO在CentOS上的集群搭建指南

一 环境规划与准备

  • 节点与磁盘
    • 建议至少准备4台服务器,生产上更推荐4+节点以兼顾性能与容错;每台服务器挂载多块数据盘(OS与数据盘分离)。示例:每台挂载4块数据盘到**/minio-data1 ~ /minio-data4**。
  • 系统与网络
    • 操作系统:CentOS 7/8(64位)。
    • 时间同步:所有节点启用NTP,保证时间一致性。
    • 主机名与解析:建议配置**/etc/hosts**或使用DNS,便于用主机名编排卷列表。
  • 端口与防火墙
    • 对象API端口:9000/TCP;控制台端口:9001/TCP
    • 防火墙放行:firewall-cmd --add-port=9000/tcp --permanent && firewall-cmd --add-port=9001/tcp --permanent && firewall-cmd --reload。
  • 目录与权限
    • 创建MinIO安装与数据目录,例如:/opt/server/minio、/data/logs/minio、/minio-data1~4;数据目录属主统一为运行用户(如minio)。
  • 负载均衡(可选)
    • 生产建议前置Nginx/HAProxy做四层/七层负载均衡,对外暴露9000/9001,后端指向所有节点,提高可用性与吞吐。

二 安装与目录权限

  • 创建系统用户(推荐最小权限运行)
    • useradd -M -s /sbin/nologin minio
  • 安装MinIO二进制
    • wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio
    • chmod +x /usr/local/bin/minio
  • 创建目录并授权
    • mkdir -p /opt/server/minio /data/logs/minio /minio-data{1…4}
    • chown -R minio:minio /opt/server/minio /data/logs/minio /minio-data{1…4}
  • 说明
    • 以上为各节点通用操作;后续通过systemd以minio用户启动服务。

三 集群部署步骤

  • 方式A 使用启动脚本编排所有卷(所有节点使用相同脚本)

    1. 在所有节点创建启动脚本/opt/server/minio/run.sh:
    #!/bin/bash
    export MINIO_ROOT_USER=**Admin**
    export MINIO_ROOT_PASSWORD='**StrongPassw0rd!**'
    
    /usr/local/bin/minio server \
      --config-dir /opt/server/minio/conf \
      --console-address ":9001" \
      http://172.16.10.226/minio-data1 http://172.16.10.226/minio-data2 \
      http://172.16.10.226/minio-data3 http://172.16.10.226/minio-data4 \
      http://172.16.10.227/minio-data1 http://172.16.10.227/minio-data2 \
      http://172.16.10.227/minio-data3 http://172.16.10.227/minio-data4 \
      http://172.16.10.228/minio-data1 http://172.16.10.228/minio-data2 \
      http://172.16.10.228/minio-data3 http://172.16.10.228/minio-data4 \
      http://172.16.10.229/minio-data1 http://172.16.10.229/minio-data2 \
      http://172.16.10.229/minio-data3 http://172.16.10.229/minio-data4 \
      >> /data/logs/minio/minio.out 2>&1
    

    赋予执行权限:chmod +x /opt/server/minio/run.sh
    2) 创建systemd服务/usr/lib/systemd/system/minio.service:

    [Unit]
    Description=MinIO
    After=network.target
    
    [Service]
    Type=simple
    User=minio
    Group=minio
    ExecStart=/opt/server/minio/run.sh
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
    1. 启动与开机自启:
    • systemctl daemon-reload && systemctl start minio && systemctl enable minio
    1. 日志与就绪判断:
    • tail -f /data/logs/minio/minio.out,出现“Status: 16 Online, 0 Offline”表示集群卷已就绪(示例为4节点×4盘=16卷)。
  • 方式B 使用环境变量或配置文件编排卷(适合统一配置管理)

    • 环境变量方式(示例为两节点各1盘,实际请列出所有卷):
      • 在/etc/default/minio或环境文件中设置:
        MINIO_ROOT_USER=Admin
        MINIO_ROOT_PASSWORD=‘StrongPassw0rd!
        MINIO_VOLUMES=“http://192.168.1.11/data http://192.168.1.12/data”
        MINIO_OPTS=“–address :9000 --console-address :9001”
      • systemd服务示例:
        ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
    • 配置文件方式:
      • 在/etc/minio/config.env或自定义配置中设置MINIO_VOLUMES与MINIO_OPTS,启动命令中通过–config-dir指定配置目录。

四 访问验证与运维管理

  • 控制台与API访问
    • 控制台:浏览器访问任一节点IP的9001端口,使用设置的MINIO_ROOT_USER/PASSWORD登录。
    • 对象API:使用9000端口(S3兼容)。
  • 健康检查与客户端验证
    • mc快速校验:
      • mc config host add myminio http://<任一节点或VIP>:9000 AdminStrongPassw0rd!
      • mc ls myminio
  • 日志与常见问题
    • 查看服务日志:journalctl -u minio -f 或 tail -f /data/logs/minio/minio.out
    • 常见症状与处理:
      • 卷未就绪/长时间等待:确认所有卷URL可达、目录权限正确、防火墙放行、时间同步;日志出现“Waiting for the first server to format the disks”属初始化阶段,待多数节点就绪后自动继续。
      • 节点无法加入:核对主机名/IP、卷路径一致性、SELinux/防火墙策略。

五 生产建议与扩展

  • 高可用与容量规划
    • 建议4+节点;对象写入采用纠删码(EC),可容忍多盘/多节点故障;容量规划时考虑重建预留扩容策略(横向加节点/加盘)。
  • 安全加固
    • 使用强密码最小权限;开启TLS/证书(–certs-dir);限制管理端口访问;必要时启用反向代理鉴权
  • 监控与告警
    • 暴露**/minio/v2/metricsPrometheus**抓取;结合Grafana做容量与性能告警。
  • 负载均衡与域名
    • 前置Nginx/HAProxy或云LB,对外暴露9000/9001;为S3客户端配置虚拟主机或路径风格访问域名。
  • 备份与合规
    • 定期做桶/对象生命周期跨区域复制(MC replicate);关键数据做离线/异地备份
  • 容器与编排
    • 大规模与自动化场景建议使用Kubernetes + MinIO Operator进行部署、升级与运维。

0