minio集群docker部署

MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。它与 Amazon S3 云存储服务 API 兼容。使用 MinIO 为机器学习、分析和应用程序数据工作负载构建高性能基础架构。

  • 官方文档:https://docs.min.io/
  • 中文文档:http://docs.minio.org.cn/docs/
  • GitHub地址:https://github.com/minio/minio

特点

  • 数据保护——分布式Minio采用 纠删码来防范多个节点宕机和位衰减bit rot。分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。

  • 高可用——单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。

例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。

【温馨提示】只要遵守分布式Minio的限制,你可以组合不同的节点和每个节点几块硬盘。
比如,你可以使用2个节点,每个节点4块硬盘,也可以使用4个节点,每个节点两块硬盘,诸如此类。
  • 一致性——Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。

docker-compose部署

社区版给的方案 docker-compose.yaml 下载地址:https://raw.githubusercontent.com/minio/minio/master/docs/orchestration/docker-compose/docker-compose.yaml

使用nginx代理作为统一访问入口

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
version: '3'

x-minio-common: &minio-common
  image: quay.io/minio/minio:RELEASE.2023-03-24T21-41-23Z
  restart: always
  environment:
  - MINIO_ROOT_USER=admin
  - MINIO_ROOT_PASSWORD=abcd1234
  privileged: true
  command: server --console-address ":9001" http://xbd-minio-{1...4}/data-{1...2}
  healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
    interval: 30s
    timeout: 20s
    retries: 3

services:
  xbd-minio-1:
    <<: *minio-common
    container_name: xbd-minio-1
    volumes:
    - ./1/data-1:/data-1
    - ./1/data-2:/data-2

  xbd-minio-2:
    <<: *minio-common
    container_name: xbd-minio-2
    volumes:
    - ./2/data-1:/data-1
    - ./2/data-2:/data-2

  xbd-minio-3:
    <<: *minio-common
    container_name: xbd-minio-3
    volumes:
    - ./3/data-1:/data-1
    - ./3/data-2:/data-2

  xbd-minio-4:
    <<: *minio-common
    container_name: xbd-minio-4
    volumes:
    - ./4/data-1:/data-1
    - ./4/data-2:/data-2

  xbd-nginx:
    image: nginx:1.22.1-alpine
    container_name: xbd-nginx
    ports:
      - 9000:9000
      - 9001:9001
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    restart: always
    privileged: true

nginx.conf配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream xbd-minio-endpoint {
        server xbd-minio-1:9000;
        server xbd-minio-2:9000;
        server xbd-minio-3:9000;
        server xbd-minio-4:9000;
    }

    upstream xbd-minio-console {
        server xbd-minio-1:9001;
        server xbd-minio-2:9001;
        server xbd-minio-3:9001;
        server xbd-minio-4:9001;
    }

    server {
        listen       9000;
        server_name  xbd-minio-endpoint;

        location / {
            proxy_pass http://xbd-minio-endpoint;
        }
    }

    server {
        listen       9001;
        server_name  xbd-minio-console;

        location / {
            proxy_pass http://xbd-minio-console;
        }
    }
}

参考