我们先将标准配置贴出

发布时间: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=9010MINIO_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# 后面省略 ...}

    大概意思就是如果 MINIO_DISTRIBUTED_MODE_ENABLED的值为 yes,且当前节点中有代表缩略的 ...三个点,那么就不在 node拼接端口号和 minio 的数据路径了。参考文章:

  • 一、多节点负载均衡

    这个我还没尝试,贴一个已经浏览的博客
    https://blog.csdn.net/qq_45408390/article/details/131239753


    五、
    全部可配置属性参考官方给出的表格:

    NameDescriptionDefault Value
    MINIO_DATA_DIRMinIO directory for data./bitnami/minio/data
    MINIO_API_PORT_NUMBERMinIO API port number.9000
    MINIO_CONSOLE_PORT_NUMBERMinIO RMI port number.9001
    MINIO_SCHEMEMinIO web scheme.http
    MINIO_SKIP_CLIENTSkip MinIO client configuration.no
    MINIO_DISTRIBUTED_MODE_ENABLEDEnable MinIO distributed mode.no
    MINIO_DEFAULT_BUCKETSMinIO default buckets.nil
    MINIO_STARTUP_TIMEOUTMinIO startup timeout.10
    MINIO_SERVER_URLMinIO server external URL.$MINIO_SCHEME://localhost:$MINIO_API_PORT_NUMBER
    MINIO_APACHE_CONSOLE_HTTP_PORT_NUMBERMinIO Console UI HTTP port, exposed via Apache with basic authentication.80
    MINIO_APACHE_CONSOLE_HTTPS_PORT_NUMBERMinIO Console UI HTTPS port, exposed via Apache with basic authentication.443
    MINIO_APACHE_API_HTTP_PORT_NUMBERMinIO API HTTP port, exposed via Apache with basic authentication.9000
    MINIO_APACHE_API_HTTPS_PORT_NUMBERMinIO API HTTPS port, exposed via Apache with basic authentication.9443
    MINIO_FORCE_NEW_KEYSForce recreating MinIO keys.no
    MINIO_ROOT_USERMinIO root user name.minio
    MINIO_ROOT_PASSWORDPassword for MinIO root user.miniosecret

    二、多节点负载均衡
  • 五、
    如何判断是否生效?很简单用ping一下另一台主机即可:ping minio0、多节点多硬盘
  • 有了单节点多硬盘的标准写法,那么多节点的就没什么难度了。参考文章:

    1. minio官方教程
    2. bitnami/minio官方教程
    3. 搭建docker集群