一、生产环境部署 MinIO 集群(2节点4驱动器)

生产环境部署 MinIO 集群(2节点4驱动器)

前提条件

  • 准备两台服务器:192.168.175.184192.168.175.185

  • 确保目录已挂载独立存储/data1/data2必须是两个独立的物理磁盘、RAID卷或云盘,以提高性能和可靠性。

  • 网络互通:两台服务器间所有端口(默认90009001)可互相访问。

  • 系统时间同步(使用 ntpdchronyd

  • 确保目录已挂载独立存储/data1和 /data2必须是两个独立的物理磁盘、RAID卷或云盘,以提高性能和可靠性。这里如果不是独立的磁盘,会报错,在虚拟机上面要单独的挂载两个磁盘

使用 192.168.175.184192.168.175.185两台机器搭建一个高可用的 MinIO 集群是完全可行的,但需要遵循一个关键原则:集群的总驱动器(磁盘或目录)数量必须是 4 的倍数(如 4, 8, 12…),并且这些驱动器应尽可能均匀分布在两台服务器上。

以下是为您量身定制的两种部署方案和详细步骤。

核心前提:驱动器规划

MinIO 通过纠删码实现高可用,它要求至少 4 个驱动器。您需要在两台机器上规划出这些驱动器。

  • 方案一(生产推荐):每台机器挂载 2 块物理硬盘或云盘(例如 /data1, /data2)。这样两台机器共提供 4 个驱动器,是最小高可用配置。

  • 方案二(开发测试):每台机器使用 2 个独立目录​ 来模拟驱动器(例如 /data/minio{1,2})。注意:此方案所有数据仍位于同一块物理磁盘上,无冗余保障,仅用于功能验证。

问题二:驱动器配置错误(根本原因)

错误信息(关键)

Error: Drive .../data2/minio returned an unexpected error: ... drive is part of root

原因分析

MinIO 出于数据安全和性能的严格要求,禁止使用操作系统根分区(/)上的目录作为存储驱动器。您的 /data2/minio目录(可能连同 /data2没有作为独立的文件系统挂载,它只是根分区下的一个普通文件夹。日志中的 major: 253 minor: 0是根分区设备号,证实了这一点。

解决方案

必须为 MinIO 配置独立的存储设备或挂载点。

  1. 检查当前挂载情况

  2. df -h /data1 /data2
    lsblk
    • 如果 /data2对应的行显示的文件系统是根分区(例如 /dev/mapper/centos-root,则证实了问题。

    • 配置独立存储(两种方案)

      • 方案A(推荐 - 添加独立磁盘)

        1. 为两台服务器各添加一块新硬盘(例如 /dev/sdb)。

          # 假设新磁盘为 /dev/sdb
          sudo mkfs.xfs /dev/sdb
          sudo mkdir -p /data2
          # 将挂载信息写入 /etc/fstab 实现开机自动挂载
          echo '/dev/sdb /data2 xfs defaults 0 0' | sudo tee -a /etc/fstab
          sudo mount -a

           

重新创建目录并设置权限:

sudo mkdir -p /data2/minio
sudo chown -R minio:minio /data2/minio
sudo chmod 750 /data2/minio

image

 

image

 

2. 检查防火墙/安全组规则

确保服务器的防火墙允许端口 9000(API)和 9001(控制台)。

# 如果使用 firewalld
sudo firewall-cmd --list-ports | grep 9000
# 若无输出,需要添加规则
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --permanent --add-port=9001/tcp
sudo firewall-cmd --reload

上面的前面的步骤完成之后就可以开始安装了

第一步:系统准备与目录初始化(在两台机器上执行)

 

# 1.1 创建专用的系统用户和组(最小权限原则)
sudo groupadd --system minio
sudo useradd -s /sbin/nologin --system -g minio minio

# 1.2 创建最终的存储目录(在您指定的路径下创建minio子目录)
# 注意:我们使用 /data1/minio 和 /data2/minio,这样便于管理和区分
sudo mkdir -p /data1/minio /data2/minio

# 1.3 将目录所有权授予 minio 用户
sudo chown -R minio:minio /data1/minio /data2/minio
sudo chmod 750 /data1/minio /data2/minio

# 1.4 检查磁盘挂载点(确认/data1和/data2是独立的挂载点)
df -h /data1 /data2

 

第二步:安装 MinIO 二进制文件(在两台机器上执行)

# 2.1 下载最新的稳定版 MinIO 二进制文件(建议从官方或国内镜像站)
# 官方源(如果网络通畅):
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /tmp/minio

# 2.2 安装到系统路径
sudo mv /tmp/minio /usr/local/bin/
sudo chmod +x /usr/local/bin/minio

# 2.3 验证安装
minio --version

 

第三步:创建配置文件(在两台机器上执行相同配置)

# 3.1 创建配置目录
sudo mkdir -p /etc/minio

# 3.2 创建环境变量配置文件
sudo tee /etc/minio/minio.conf << EOF
# ===== 核心身份认证(务必在生产环境修改!)=====
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=YourStrong@AdminPassword123!

# ===== 集群存储驱动器定义(关键!)=====
# 格式:协议://IP_或_主机名/路径
# 必须列出所有节点的所有路径
MINIO_VOLUMES="http://192.168.175.184/data1/minio http://192.168.175.184/data2/minio http://192.168.175.185/data1/minio http://192.168.175.185/data2/minio"

# ===== 网络绑定设置 =====
MINIO_OPTS="--address :9000 --console-address :9001"
# 如果想绑定到特定IP,例如:
# MINIO_OPTS="--address 192.168.175.184:9000 --console-address 192.168.175.184:9001"

# ===== 集群设置(可选但建议)=====
MINIO_REGION=us-east-1
# MINIO_DOMAIN=minio.yourdomain.com  # 如果有自定义域名

# ===== 高级性能/调优(根据硬件调整)=====
# MINIO_CACHE_DRIVES="/data1/minio-cache"  # 缓存盘路径(如果有SSD)
# MINIO_CACHE_AFTER=80                     # 缓存使用率阈值
# MINIO_CACHE_MAX=90
EOF

# 3.3 保护配置文件权限(仅minio用户可读)
sudo chown minio:minio /etc/minio/minio.conf
sudo chmod 600 /etc/minio/minio.conf

 

第四步:配置 Systemd 服务(实现服务管理)(在两台机器上执行)4

# 4.1 创建 Systemd 服务单元文件
sudo tee /etc/systemd/system/minio.service << 'EOF'
[Unit]
Description=MinIO Object Storage Server
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
Type=notify

# 以专用用户运行
User=minio
Group=minio

# 加载环境变量配置文件
EnvironmentFile=/etc/minio/minio.conf

# 启动命令
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# 资源限制(根据实际情况调整)
LimitNOFILE=65536
LimitNPROC=65536

# 安全设置
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
NoNewPrivileges=true

# 重启策略
Restart=on-failure
RestartSec=10

# 标准输出重定向到journal
StandardOutput=journal
StandardError=journal

# 指定工作目录
WorkingDirectory=/var/lib/minio

# 创建进程信号文件(用于优雅关闭)
ExecStop=/bin/kill -s SIGTERM $MAINPID

[Install]
WantedBy=multi-user.target
EOF

# 4.2 创建工作目录(用于存放临时文件等)
sudo mkdir -p /var/lib/minio
sudo chown -R minio:minio /var/lib/minio

# 4.3 重载 systemd 配置
sudo systemctl daemon-reload

 

第五步:启动集群并验证(依次执行)

# 5.1 启动服务(建议先启动184,再启动185)
# 在 192.168.175.184 上执行:
sudo systemctl start minio
sudo systemctl enable minio  # 设置开机自启

# 在 192.168.175.185 上执行:
sudo systemctl start minio
sudo systemctl enable minio

# 5.2 检查服务状态(两台机器都检查)
sudo systemctl status minio
# 应该看到状态为 active (running)

# 5.3 实时查看日志(观察启动过程)
sudo journalctl -u minio -f
# 正常启动后,日志会显示类似信息:
# "All MinIO sub-systems initialized successfully"
# "MinIO Object Storage Server is successfully started"

 

第六步:访问与验证

  1. 访问 Web 控制台

    • 浏览器打开:http://192.168.175.184:9001http://192.168.175.185:9001

    • 使用 /etc/minio/minio.conf中设置的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD登录

    • 关键验证点:登录后,在 Dashboard 的 “Cluster” → “Servers”​ 标签页,应看到 2 个节点,每个节点下有 2 个驱动器,且状态均为绿色(Online)。

  2. 命令行验证

 

# 使用 MinIO 客户端 mc(需先安装)
# 配置集群别名
mc alias set mycluster http://192.168.175.184:9000 admin YourStrong@AdminPassword123!

# 查看集群状态
mc admin info mycluster

# 创建测试桶并上传文件
mc mb mycluster/test-bucket
echo "Hello MinIO Cluster" > test.txt
mc cp test.txt mycluster/test-bucket/
mc ls mycluster/test-bucket/

 

第七步:生产环境加固(重要!)

# 7.1 防火墙配置(如果启用防火墙)
sudo firewall-cmd --permanent --add-port=9000/tcp  # API端口
sudo firewall-cmd --permanent --add-port=9001/tcp  # 控制台端口
sudo firewall-cmd --reload

# 7.2 配置负载均衡器(推荐使用Nginx或HAProxy)
# 示例 Nginx 配置片段:
cat > /etc/nginx/conf.d/minio.conf << 'EOF'
upstream minio_api {
    server 192.168.175.184:9000;
    server 192.168.175.185:9000;
}

upstream minio_console {
    server 192.168.175.184:9001;
    server 192.168.175.185:9001;
}

server {
    listen 80;
    server_name minio-api.yourdomain.com;
    location / {
        proxy_pass http://minio_api;
        proxy_set_header Host $host;
    }
}

server {
    listen 80;
    server_name minio-console.yourdomain.com;
    location / {
        proxy_pass http://minio_console;
        proxy_set_header Host $host;
    }
}
EOF

# 7.3 设置定期健康检查脚本
sudo tee /usr/local/bin/minio-healthcheck.sh << 'EOF'
#!/bin/bash
API_ENDPOINT="http://localhost:9000/minio/health/live"
if curl -s -f $API_ENDPOINT > /dev/null; then
    exit 0
else
    exit 1
fi
EOF
sudo chmod +x /usr/local/bin/minio-healthcheck.sh

 

快速验证替代方案

如果以上步骤后问题仍存,您可以直接通过 Web 控制台​ 验证服务:

  1. 在浏览器访问 http://192.168.175.184:9001

  2. 使用配置的账号密码登录。

  3. 在控制台查看 Dashboard​ -> Cluster​ -> Servers,确认两个节点和四个驱动器是否在线。

总结:请优先执行 “确认 MinIO 服务状态”​ 和 “验证网络连通性”​ 这两步,它们能解决绝大部分“连接被拒绝”的问题。通常,服务未启动或端口被防火墙阻挡是主要原因。

posted on 2026-02-28 10:31  luzhouxiaoshuai  阅读(101)  评论(0)    收藏  举报

导航