MinIO 集群部署
- MinIO 各节点需要提前安装 Docker
初始化 Docker Swarm 环境
-
在 MinIO Node01 第一台节点上执行 swarm 初始化命令
docker swarm init# 初始化命令执行后会输出 join 命令,后面需要在其他三节点上运行# 当服务器上有多个IP地址时,可以使用 --advertise-addr 参数指定其他节点用来连接到当前管理节点的IP和端口# docker swarm init --advertise-addr 192.168.1.11 -
分别在 MinIO Node02、3、4 上运行 join 命令,加入 swarm 集群
docker swarm join --token xxxxxxxx# 如遗忘 token ,可在 MinIO Node01 上通过以下命令查看:# docker swarm join-token worker -
查看节点并记录下来各节点ID
docker node ls
部署 MinIO 集群
以下步骤四台服务器都需要操作
-
下载镜像
- 服务器支持访问互联网
- 服务器不支持访问互联网
docker pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-minio:RELEASE.2025-04-22T22-12-26Z# 离线镜像包文件下载链接,下载完成后上传到部署服务器https://pdpublic.mingdao.com/private-deployment/offline/mingdaoyun-minio-linux-amd64-RELEASE.2025-04-22T22-12-26Z.tar.gz# 在服务器上通过 docker load -i 命令加载离线镜像docker load -i mingdaoyun-minio-linux-amd64-RELEASE.2025-04-22T22-12-26Z.tar.gz -
创建数据存储目录
mkdir -p /data/minio/volume
以下所有步骤仅需在 MinIO Node01 第一台节点操作
-
创建配置文件存储目录
mkdir -p /usr/local/minio -
创建 minio 配置文件
cat > /usr/local/minio/minio.yaml <<'EOF'version: '3'services:minio1:hostname: minio1image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-minio:RELEASE.2025-04-22T22-12-26Zenvironment:MINIO_ROOT_USER: "mingdao"MINIO_ROOT_PASSWORD: "123456789"volumes:- /usr/share/zoneinfo/Etc/GMT-8:/etc/localtime- /data/minio/volume:/data/storageports:- "9011:9000"# - "19111:9001" # minio console 的访问端口,有访问需求时可打开注释command: minio server http://minio{1...4}/data/storage/data --console-address ":9001"deploy:placement:constraints:- node.id == xxxxxxxxxxxxxxxx # MinIO Node01的 docker node.id 值minio2:hostname: minio2image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-minio:RELEASE.2025-04-22T22-12-26Zenvironment:MINIO_ROOT_USER: "mingdao"MINIO_ROOT_PASSWORD: "123456789"volumes:- /usr/share/zoneinfo/Etc/GMT-8:/etc/localtime- /data/minio/volume:/data/storageports:- "9012:9000"command: minio server http://minio{1...4}/data/storage/data --console-address ":9001"deploy:placement:constraints:- node.id == xxxxxxxxxxxxxxxx # MinIO Node02的 docker node.id 值minio3:hostname: minio3image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-minio:RELEASE.2025-04-22T22-12-26Zenvironment:MINIO_ROOT_USER: "mingdao"MINIO_ROOT_PASSWORD: "123456789"volumes:- /usr/share/zoneinfo/Etc/GMT-8:/etc/localtime- /data/minio/volume:/data/storageports:- "9013:9000"command: minio server http://minio{1...4}/data/storage/data --console-address ":9001"deploy:placement:constraints:- node.id == xxxxxxxxxxxxxxxx # MinIO Node03的 docker node.id 值minio4:hostname: minio4image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-minio:RELEASE.2025-04-22T22-12-26Zenvironment:MINIO_ROOT_USER: "mingdao"MINIO_ROOT_PASSWORD: "123456789"volumes:- /usr/share/zoneinfo/Etc/GMT-8:/etc/localtime- /data/minio/volume:/data/storageports:- "9014:9000"command: minio server http://minio{1...4}/data/storage/data --console-address ":9001"deploy:placement:constraints:- node.id == xxxxxxxxxxxxxxxx # MinIO Node04的 docker node.id 值EOF- 对象存储的访问密钥(accessKey)由
MINIO_ROOT_USER环境变量指定,此为核心身份凭证,部署时请务必使用高强度口令。 - 对象存储的私有密钥(secretKey)由
MINIO_ROOT_PASSWORD环境变量指定,此为关键安全密钥,部署时请务必使用高强度口令。
- 对象存储的访问密钥(accessKey)由
-
配置启停脚本
cat > /usr/local/minio/start.sh <<'EOF'docker stack deploy -c /usr/local/minio/minio.yaml minio --detach=falseEOFcat > /usr/local/minio/stop.sh <<'EOF'docker stack rm minioEOFchmod +x /usr/local/minio/start.shchmod +x /usr/local/minio/stop.sh -
启动 minio 服务
bash /usr/local/minio/start.sh -
检查 minio 各节点状态
docker stack ps minio