Ubuntu上部署MinIO分布式集群的实操指南
一 架构与准备
二 二进制方式部署(推荐,systemd管理) 以下步骤在每台服务器上执行(以节点1为例,其他节点仅替换 IP/主机名与目录):
创建系统用户与目录
sudo useradd -r -s /usr/sbin/nologin -d /opt/minio minio
sudo mkdir -p /opt/minio/{run,data1,data2} /etc/minio
sudo chown -R minio:minio /opt/minio /etc/minio
下载并安装 MinIO 二进制
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /opt/minio/run/minio
chmod +x /opt/minio/run/minio
配置环境变量(/etc/default/minio)
sudo tee /etc/default/minio <<'EOF'
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=StrongPassw0rd!
MINIO_VOLUMES="http://minio-node1:9000/data1 http://minio-node1:9000/data2 \
http://minio-node2:9000/data1 http://minio-node2:9000/data2 \
http://minio-node3:9000/data1 http://minio-node3:9000/data2 \
http://minio-node4:9000/data1 http://minio-node4:9000/data2"
MINIO_OPTS="--address :9000 --console-address :9001"
EOF
说明:上述 MINIO_VOLUMES 列出集群内所有磁盘路径;MINIO_OPTS 固定 API 与控制台端口。
创建 systemd 服务(/etc/systemd/system/minio.service)
sudo tee /etc/systemd/system/minio.service <<'EOF'
[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=/opt/minio/run/minio server $MINIO_OPTS $MINIO_VOLUMES
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
LimitNOFILE=65536
TasksMax=infinity
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
EOF
启动与开机自启
sudo systemctl daemon-reload
sudo systemctl enable --now minio
sudo systemctl status minio
提示:所有节点使用相同的 MINIO_VOLUMES 列表,MinIO 会自动组成统一存储池;控制台可通过任意节点的 :9001 访问。
三 Docker方式部署(可选) 如倾向容器化,可用 Docker 快速拉起集群(以两台服务器为例,每台挂载两块盘):
准备数据卷
docker volume create minio-data1
docker volume create minio-data2
启动容器(两台服务器均执行,注意替换主机名)
docker run -d --name minio \
--restart=always \
--net=host \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=StrongPassw0rd!" \
-v minio-data1:/data1 \
-v minio-data2:/data2 \
minio/minio server \
--address ":9000" \
--console-address ":9001" \
http://minio-node1:9000/data1 http://minio-node1:9000/data2 \
http://minio-node2:9000/data1 http://minio-node2:9000/data2
说明:使用 –net=host 可简化端口映射;如需桥接网络,请映射 9000:9000、9001:9001 并确保互通。
四 负载均衡与高可用
sudo apt-get install -y nginx
sudo tee /etc/nginx/sites-available/minio <<'EOF'
upstream minio_s3 {
server 192.168.1.101:9000;
server 192.168.1.102:9000;
server 192.168.1.103:9000;
server 192.168.1.104:9000;
}
upstream minio_console {
server 192.168.1.101:9001;
server 192.168.1.102:9001;
server 192.168.1.103:9001;
server 192.168.1.104:9001;
}
server {
listen 9000;
proxy_pass minio_s3;
proxy_timeout 300s;
}
server {
listen 9001;
proxy_pass minio_console;
proxy_timeout 300s;
}
EOF
sudo ln -s /etc/nginx/sites-available/minio /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
提示:生产环境建议启用 健康检查 与 会话保持,并根据并发调优 worker_connections 与 proxy_buffering off。五 验证与运维要点
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc
chmod +x /usr/local/bin/mc
mc alias set myminio http://<任一节点IP>:9000 minioadmin 'StrongPassw0rd!'
mc admin info myminio