MinIO的高可用性需通过多节点分布式集群实现,官方推荐奇数个节点(3或5个)以避免脑裂问题。核心依赖技术为纠删码(Erasure Coding),可在节点或磁盘故障时保证数据可用性(如EC:4配置可容忍4块驱动器故障)。
minio1、minio2、minio3)。/data/minio_data1、/data/minio_data2),建议使用XFS文件系统(高性能、支持大文件)。chrony并配置NTP同步,确保节点时间差≤3秒。sudo yum install -y chrony
sudo systemctl enable --now chronyd
/etc/security/limits.conf,增加以下内容:* soft nofile 65535
* hard nofile 65535
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
在所有节点安装wget、unzip等基础工具:
sudo yum install -y wget unzip
在所有节点执行以下命令,下载MinIO二进制文件并赋予执行权限:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
在每节点创建存储目录并设置权限(以/data/minio_data1、/data/minio_data2为例):
sudo mkdir -p /data/minio_data{1,2}
sudo chown -R minio:minio /data/minio_data{1,2}
创建/usr/lib/systemd/system/minio.service文件,内容如下(替换为实际节点IP和存储路径):
[Unit]
Description=MinIO service
After=network.target
[Service]
WorkingDirectory=/data/minio/run/
ExecStart=/usr/local/bin/minio server --address ":9000" --console-address ":9001" \
http://minio1/data/minio_data1 http://minio1/data/minio_data2 \
http://minio2/data/minio_data1 http://minio2/data/minio_data2 \
http://minio3/data/minio_data1 http://minio3/data/minio_data2
Restart=on-failure
User=minio
Group=minio
[Install]
WantedBy=multi-user.target
关键参数说明:
--address:S3 API监听端口(默认9000)。--console-address:管理控制台端口(默认9001)。启动服务并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl enable --now minio
下载并配置mc(MinIO Client):
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
# 添加集群别名(以minio1为例)
mc alias set myminio http://minio1:9000 minio minio123
mc admin info myminio
若输出显示**集群状态为"OK"**且包含所有节点信息,则说明集群部署成功。
创建Bucket并上传文件,验证数据是否同步到所有节点:
# 创建Bucket
mc mb myminio/mybucket
# 上传文件
mc cp /path/to/local/file.txt myminio/mybucket/
# 查看文件分布(需登录控制台或使用API)
mc ls myminio/mybucket
使用Nginx或HAProxy作为反向代理,分发请求到集群节点,提高可用性。以Nginx为例:
sudo yum install -y nginx
编辑/etc/nginx/nginx.conf,添加以下内容:
stream {
upstream minio_cluster {
server minio1:9000;
server minio2:9000;
server minio3:9000;
}
server {
listen 9000;
proxy_pass minio_cluster;
}
}
重启Nginx:
sudo systemctl restart nginx
之后可通过http://nginx-ip:9000访问集群。
/minio/prometheus/metrics接口获取。mc mirror命令同步到异地存储)。