【bitnami/minio】docker compose 配置集群知识梳理

【bitnami/minio】docker compose 配置集群知识梳理本文总结提炼了互联网上的 minio 的集群搭建教程 并给出已经踩过坑的搭建教程

大家好,欢迎来到IT知识分享网。

一、通用概述

Name Description Default Value
MINIO_DATA_DIR MinIO directory for data. /bitnami/minio/data
MINIO_API_PORT_NUMBER MinIO API port number. 9000
MINIO_CONSOLE_PORT_NUMBER MinIO RMI port number. 9001
MINIO_SCHEME MinIO web scheme. http
MINIO_SKIP_CLIENT Skip MinIO client configuration. no
MINIO_DISTRIBUTED_MODE_ENABLED Enable MinIO distributed mode. no
MINIO_DEFAULT_BUCKETS MinIO default buckets. nil
MINIO_STARTUP_TIMEOUT MinIO startup timeout. 10
MINIO_SERVER_URL MinIO server external URL. $MINIO_SCHEME://localhost:$MINIO_API_PORT_NUMBER
MINIO_APACHE_CONSOLE_HTTP_PORT_NUMBER MinIO Console UI HTTP port, exposed via Apache with basic authentication. 80
MINIO_APACHE_CONSOLE_HTTPS_PORT_NUMBER MinIO Console UI HTTPS port, exposed via Apache with basic authentication. 443
MINIO_APACHE_API_HTTP_PORT_NUMBER MinIO API HTTP port, exposed via Apache with basic authentication. 9000
MINIO_APACHE_API_HTTPS_PORT_NUMBER MinIO API HTTPS port, exposed via Apache with basic authentication. 9443
MINIO_FORCE_NEW_KEYS Force recreating MinIO keys. no
MINIO_ROOT_USER MinIO root user name. minio
MINIO_ROOT_PASSWORD Password for MinIO root user. miniosecret

二、单节点单硬盘

大伙一般不会用单硬盘,除非是做测试。

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 # 前端登录密码 

二、单节点多硬盘

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: local minio_0_data_1: driver: local minio_1_data_0: driver: local minio_1_data_1: driver: local 
# libminio.sh 141行 minio_start_bg() { 
    # 前面省略 ... if is_boolean_yes "$MINIO_DISTRIBUTED_MODE_ENABLED"; then read -r -a nodes <<<"$(tr ',;' ' ' <<<"${MINIO_DISTRIBUTED_NODES}")" for node in "${nodes[@]}"; do if is_distributed_ellipses_syntax; then args+=("${MINIO_SCHEME}://${node}") else args+=("${MINIO_SCHEME}://${node}:${MINIO_API_PORT_NUMBER}/${MINIO_DATA_DIR}") fi done else args+=("${MINIO_DATA_DIR}") fi # 后面省略 ... } 

大概意思就是如果 MINIO_DISTRIBUTED_MODE_ENABLED 的值为 yes,且当前节点中有代表缩略的 ... 三个点,那么就不在 node 拼接端口号和 minio 的数据路径了。如果 MINIO_DISTRIBUTED_NODES = minio1, minio2,那么这种未缩略的形式是会自动加上端口号和数据路径的。

三、多节点多硬盘

# 服务器 0 version: '3' services: minio0: # 国内镜像源不要使用 :latest 不然拉下来是两年前的镜像 image: 'bitnami/minio:2024.7.16' volumes: - './minio-data0:/bitnami/minio/data-0' - './minio-data1:/bitnami/minio/data-1' network_mode: host # 接入物理网络 environment: - MINIO_API_PORT_NUMBER=9010 # 自定义API端口 - MINIO_CONSOLE_PORT_NUMBER=9011 # 自定义前端端口 - MINIO_ROOT_USER=minio # 前端登录账户 - MINIO_ROOT_PASSWORD=minioadmin # 前端登录密码 - MINIO_DISTRIBUTED_MODE_ENABLED=yes - MINIO_DISTRIBUTED_NODES=minio{ 
   0...1}/bitnami/minio/data-{ 
   0...1} - MINIO_SKIP_CLIENT=yes 
# 服务器 1 version: '3' services: minio1: image: 'bitnami/minio:2024.7.16' volumes: - './minio-data0:/bitnami/minio/data-0' - './minio-data1:/bitnami/minio/data-1' network_mode: host # 接入物理网络 environment: - MINIO_API_PORT_NUMBER=9010 - MINIO_CONSOLE_PORT_NUMBER=9011 - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=minioadmin - MINIO_DISTRIBUTED_MODE_ENABLED=yes - MINIO_DISTRIBUTED_NODES=minio{ 
   0...1}/bitnami/minio/data-{ 
   0...1} - MINIO_SKIP_CLIENT=yes 

这里我们把单节点多硬盘中的 minio0minio1 拆分到两台服务器上,另外添加 network_mode: host 将 docker 接入物理网络。

127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.1.122 minio0 192.168.1.123 minio1 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts 

在上述文件中添加 minio0minio1 的相关配置,ip 请按当前节点所在服务器的真实 ip 即可。
两台服务器均需要修改 etc/hosts 文件。
接着需要让修改后的 hosts 文件生效,这个大伙可以百度查一下,我看了一下答案还挺多的,需要大伙试一下。
如何判断是否生效?很简单用ping一下另一台主机即可:ping minio0ping minio1
随后依次 docker compose up -d 启动两个节点即可,节点会互相等待对方,直到都连接成功。
可能出现的问题是 volume 映射的磁盘没有读写权限,手动赋予即可。




四、多节点负载均衡


五、参考文章:

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125712.html

(0)
上一篇 2025-09-24 19:33
下一篇 2025-09-24 19:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信