温馨提示×

minio在centos上的集群配置指南

小樊
42
2025-12-23 09:15:02
栏目: 智能运维

MinIO 在 CentOS 上的集群配置指南

一 规划与准备

  • 节点与目录规划:准备至少4 台 CentOS 7/8 服务器,每台挂载至少 2 块磁盘用于数据目录,便于构建 Erasure Code 的分布式存储;示例目录:/data/minio/data。所有节点需可互通,建议配置 /etc/hosts 或使用内网 DNS。
  • 时间同步:安装并启用 NTP/chrony,保证节点间时间误差在毫秒级,避免签名与一致性异常。
  • 资源与内核参数:为运行用户(如 minio)设置文件句柄上限,建议 nofile ≥ 65535;检查并优化 ulimit。
  • 防火墙与端口:开放对象服务端口 9000/TCP 与管理控制台端口 9001/TCP(或自定义端口),或在内网使用安全组放行。
  • 数据目录要求:数据目录必须是空挂载卷,不要使用 //root 的挂载点,避免元数据与权限风险。

二 安装与目录准备

  • 创建系统用户与目录(所有节点执行):
    • 创建用户:sudo useradd -r -s /sbin/nologin minio
    • 创建目录:sudo mkdir -p /data/minio/data /opt/minio/bin /etc/minio
    • 授权:sudo chown -R minio:minio /data/minio /opt/minio /etc/minio
  • 下载 MinIO 二进制(所有节点执行):
    • sudo -u minio wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /opt/minio/bin/minio
    • sudo -u minio chmod +x /opt/minio/bin/minio
  • 建议将二进制放入 PATH:sudo ln -s /opt/minio/bin/minio /usr/local/bin/minio(可选)。

三 集群部署与 systemd 服务

  • 方式 A 环境变量文件(推荐,便于集中管理)

    1. 创建环境文件(所有节点一致或按节点定制):sudo vim /etc/default/minio
      内容示例:
    MINIO_ROOT_USER=minioadmin
    MINIO_ROOT_PASSWORD=StrongPassw0rd!
    minio_volumes="http://192.168.1.101/data/minio/data http://192.168.1.102/data/minio/data \
                  http://192.168.1.103/data/minio/data http://192.168.1.104/data/minio/data"
    minio_opts="--console-address :9001"
    
    1. 创建 systemd 服务:sudo vim /usr/lib/systemd/system/minio.service
    [Unit]
    Description=MinIO
    Documentation=https://min.io/docs/minio/linux/index.html
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    Type=notify
    User=minio
    Group=minio
    EnvironmentFile=-/etc/default/minio
    ExecStart=/usr/local/bin/minio server $minio_opts $minio_volumes
    Restart=always
    LimitNOFILE=65536
    TasksMax=infinity
    TimeoutStopSec=infinity
    SendSIGKILL=no
    
    [Install]
    WantedBy=multi-user.target
    
    1. 启动与开机自启:
      sudo systemctl daemon-reload && sudo systemctl enable --now minio && sudo systemctl status minio -l
  • 方式 B 启动脚本(适合快速验证)

    1. 创建脚本:sudo -u minio vim /opt/minio/bin/run.sh
    #!/usr/bin/env bash
    export MINIO_ROOT_USER=minioadmin
    export MINIO_ROOT_PASSWORD=StrongPassw0rd!
    /opt/minio/bin/minio server \
      --config-dir /etc/minio \
      --console-address ":9001" \
      http://192.168.1.101/data/minio/data \
      http://192.168.1.102/data/minio/data \
      http://192.168.1.103/data/minio/data \
      http://192.168.1.104/data/minio/data
    
    1. 赋权:sudo chmod +x /opt/minio/bin/run.sh
    2. 创建服务:sudo vim /usr/lib/systemd/system/minio.service
    [Unit]
    Description=MinIO
    After=network.target
    
    [Service]
    Type=simple
    User=minio
    Group=minio
    WorkingDirectory=/opt/minio/bin
    ExecStart=/opt/minio/bin/run.sh
    Restart=on-failure
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    
    1. 启动:sudo systemctl daemon-reload && sudo systemctl enable --now minio
      说明:集群启动命令需在每个节点上列出全部节点的数据目录 URL;控制台端口建议使用 9001,对象端口 9000

四 负载均衡与网络配置

  • 使用 Nginx 做四层/七层负载均衡(示例为四节点,端口 9000):
    upstream minio_servers {
        server 192.168.1.101:9000 max_fails=2 fail_timeout=30s;
        server 192.168.1.102:9000 max_fails=2 fail_timeout=30s;
        server 192.168.1.103:9000 max_fails=2 fail_timeout=30s;
        server 192.168.1.104:9000 max_fails=2 fail_timeout=30s;
    }
    server {
        listen 80;
        server_name minio.example.com;
        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            client_max_body_size 10G;
            proxy_buffers 1024 4k;
            proxy_read_timeout 300s;
            proxy_next_upstream error timeout http_404;
            proxy_pass http://minio_servers;
        }
    }
    
  • 建议为控制台(9001)单独配置虚拟主机或监听,避免与 S3 API 混用。
  • 生产环境建议开启 TLS/HTTPS(可使用 certbot 或企业 CA),并在客户端使用 https:// 访问。

五 验证与运维要点

  • 控制台与连通性:浏览器访问任一节点的 http://:9001,使用 MINIO_ROOT_USER/PASSWORD 登录;创建 bucket 并上传小文件验证。
  • 客户端验证(mc):
    • 安装 mc:wget https://dl.min.io/client/mc/release/linux-amd64/mc && chmod +x mc && sudo mv mc /usr/local/bin/
    • 添加服务别名:mc config host add minio http://<LB_IP>:9000 minioadmin 'StrongPassw0rd!'
    • 查看与测试:mc ls miniomc mb minio/testmc cp /etc/hosts minio/test/hosts
  • 日志与排错:
    • 服务日志:journalctl -u minio -f
    • 控制台/启动日志:如使用脚本输出重定向,查看脚本日志文件(如 minio_server.log
  • 常见问题:
    • 目录非空或挂载点不合规会导致启动失败;
    • 密码复杂度不足会被拒绝;
    • 时间不同步会引起认证/校验错误;
    • 防火墙未放行 9000/9001 会导致访问异常。

0