我们先将标准配置贴出
发布时间:2025-06-24 17:47:54 作者:北方职教升学中心 阅读量:635
(没有得到这个标准写法的时候,我摸索的真的好痛苦 T_T)
唯一需要注意的一点:网络配置,不同于单节点,节点间通过容器服务名就能找到对方,多节点我们就必须配置网络了,不过也很简单。
两台服务器均需要修改 etc/hosts
文件。
version: '2'services: minio-0: # 国内镜像源不要使用 :latest 不然拉下来是两年前的镜像image: 'bitnami/minio:2024.7.16'volumes: - 'minio_0_data_0:/bitnami/minio/data-0'- 'minio_0_data_1:/bitnami/minio/data-1'environment: - MINIO_ROOT_USER=minio # 前端登录账户- MINIO_ROOT_PASSWORD=miniosecret # 前端登录密码- MINIO_DISTRIBUTED_MODE_ENABLED=yes - MINIO_DISTRIBUTED_NODES=minio-{0...1}/bitnami/minio/data-{0...1}minio-1: # 国内镜像源不要使用 :latest 不然拉下来是两年前的镜像image: 'bitnami/minio:2024.7.16'volumes: - 'minio_1_data_0:/bitnami/minio/data-0'- 'minio_1_data_1:/bitnami/minio/data-1'environment: - MINIO_ROOT_USER=minio # 前端登录账户- MINIO_ROOT_PASSWORD=miniosecret # 前端登录密码- MINIO_DISTRIBUTED_MODE_ENABLED=yes - MINIO_DISTRIBUTED_NODES=minio-{0...1}/bitnami/minio/data-{0...1}# 这块我感觉加不加都行,因为 docker compose 的默认配置就是这个volumes: minio_0_data_0: driver: localminio_0_data_1: driver: localminio_1_data_0: driver: localminio_1_data_1: driver: local
这里 minio 0-1 节点处于同一 docker 网络环境,无需配置网络,节点间即可找到彼此。单节点多硬盘
bitnami/minio 官方说明文档请看这里
注意的是,各节点间必须采用统一端口号,默认的端口号为:9000(API端口)/9001(前端端口)
使用
MINIO_API_PORT_NUMBER=9010
MINIO_CONSOLE_PORT_NUMBER=9011
更改当前节点的端口。所以 minio0 和 minio1 具有相同的volume映射源。ping minio1
随后依次
docker compose up -d
启动两个节点即可,节点会互相等待对方,直到都连接成功。三、version: '2'services: minio1: # 国内镜像源不要使用 :latest 不然拉下来是两年前的镜像image: 'bitnami/minio:2024.7.16'volumes: # 将数据映射出 - './data:/bitnami/minio/data'environment: - MINIO_ROOT_USER=minio-root-user # 前端登录账户- MINIO_ROOT_PASSWORD=minio-root-password # 前端登录密码
二、如果 MINIO_DISTRIBUTED_NODES
= minio1, minio2
,那么这种未缩略的形式是会自动加上端口号和数据路径的。
关于 MINIO_DISTRIBUTED_NODES
的配置一开始我也不太懂,于是看了一下源码,给出一小段:# libminio.sh 141行minio_start_bg(){# 前面省略 ...ifis_boolean_yes "$MINIO_DISTRIBUTED_MODE_ENABLED";thenread-r-anodes <<<"$(tr',;'' '<<<"${MINIO_DISTRIBUTED_NODES}")"fornodein"${nodes[@]}";doifis_distributed_ellipses_syntax;thenargs+=("${MINIO_SCHEME}://${node}")elseargs+=("${MINIO_SCHEME}://${node}:${MINIO_API_PORT_NUMBER}/${MINIO_DATA_DIR}")fidoneelseargs+=("${MINIO_DATA_DIR}")fi# 后面省略 ...}
version: '2'services: minio1: # 国内镜像源不要使用 :latest 不然拉下来是两年前的镜像image: 'bitnami/minio:2024.7.16'volumes: # 将数据映射出 - './data:/bitnami/minio/data'environment: - MINIO_ROOT_USER=minio-root-user # 前端登录账户- MINIO_ROOT_PASSWORD=minio-root-password # 前端登录密码
MINIO_DISTRIBUTED_NODES
= minio1, minio2
,那么这种未缩略的形式是会自动加上端口号和数据路径的。关于
MINIO_DISTRIBUTED_NODES
的配置一开始我也不太懂,于是看了一下源码,给出一小段:# libminio.sh 141行minio_start_bg(){# 前面省略 ...ifis_boolean_yes "$MINIO_DISTRIBUTED_MODE_ENABLED";thenread-r-anodes <<<"$(tr',;'' '<<<"${MINIO_DISTRIBUTED_NODES}")"fornodein"${nodes[@]}";doifis_distributed_ellipses_syntax;thenargs+=("${MINIO_SCHEME}://${node}")elseargs+=("${MINIO_SCHEME}://${node}:${MINIO_API_PORT_NUMBER}/${MINIO_DATA_DIR}")fidoneelseargs+=("${MINIO_DATA_DIR}")fi# 后面省略 ...}
大概意思就是如果 MINIO_DISTRIBUTED_MODE_ENABLED
的值为 yes
,且当前节点中有代表缩略的 ...
三个点,那么就不在 node
拼接端口号和 minio 的数据路径了。参考文章: