一、生产环境部署 MinIO 集群(2节点4驱动器)
生产环境部署 MinIO 集群(2节点4驱动器)
前提条件
-
准备两台服务器:
192.168.175.184和192.168.175.185 -
确保目录已挂载独立存储:
/data1和/data2必须是两个独立的物理磁盘、RAID卷或云盘,以提高性能和可靠性。 -
网络互通:两台服务器间所有端口(默认
9000,9001)可互相访问。 -
系统时间同步(使用
ntpd或chronyd)
-
确保目录已挂载独立存储:
/data1和/data2必须是两个独立的物理磁盘、RAID卷或云盘,以提高性能和可靠性。这里如果不是独立的磁盘,会报错,在虚拟机上面要单独的挂载两个磁盘
使用 192.168.175.184和 192.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 配置独立的存储设备或挂载点。
-
检查当前挂载情况:
-
df -h /data1 /data2 lsblk-
如果
/data2对应的行显示的文件系统是根分区(例如/dev/mapper/centos-root),则证实了问题。 -
配置独立存储(两种方案):
-
方案A(推荐 - 添加独立磁盘):
-
为两台服务器各添加一块新硬盘(例如
/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


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"
第六步:访问与验证
-
访问 Web 控制台
-
浏览器打开:
http://192.168.175.184:9001或http://192.168.175.185:9001 -
使用
/etc/minio/minio.conf中设置的MINIO_ROOT_USER和MINIO_ROOT_PASSWORD登录 -
关键验证点:登录后,在 Dashboard 的 “Cluster” → “Servers” 标签页,应看到 2 个节点,每个节点下有 2 个驱动器,且状态均为绿色(Online)。
-
-
命令行验证
# 使用 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 控制台 验证服务:
-
在浏览器访问
http://192.168.175.184:9001。 -
使用配置的账号密码登录。
-
在控制台查看 Dashboard -> Cluster -> Servers,确认两个节点和四个驱动器是否在线。
总结:请优先执行 “确认 MinIO 服务状态” 和 “验证网络连通性” 这两步,它们能解决绝大部分“连接被拒绝”的问题。通常,服务未启动或端口被防火墙阻挡是主要原因。
posted on 2026-02-28 10:31 luzhouxiaoshuai 阅读(101) 评论(0) 收藏 举报
浙公网安备 33010602011771号