docker-compose 部署minio集群

1.技术简介


1.1 Minio


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

1.2 docker-compose


Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。 Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。 使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。 Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

2、搭建过程

2.1 编写docker-compose.yml文件

提示:不熟悉docker-compose的可以先百度了解一下

通过docker-compose部署集群的好处是在单台机器上可以快捷的部署集群。如果有多台机器,可以不使用docker-compose,直接在每台机器上单独部署,然后配置集群的环境变了文件。

version: '3.7'
 
services:
  minio1:
    image: minio/minio
    hostname: minio1
    container_name: minio1
    volumes:
      - /home/docker/miniocluster/minio1/data:/data
      - /home/docker/miniocluster/minio1/config:/root/.minio/ # 映射配置目录
    ports:
      - "19001:9000"
      - "18001:8000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
    command: server http://minio{1...4}/data --console-address ":8000"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
 
  minio2:
    image: minio/minio
    hostname: minio2
    container_name: minio2
    volumes:
      - /home/docker/miniocluster/minio2/data:/data
      - /home/docker/miniocluster/minio2/config:/root/.minio/ # 映射配置目录
    ports:
      - "19002:9000"
      - "18002:8000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
    command: server http://minio{1...4}/data --console-address ":8000"
    healthcheck:
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
 
  minio3:
    image: minio/minio
    hostname: minio3
    container_name: minio3
    volumes:
      - /home/docker/miniocluster/minio3/data:/data
      - /home/docker/miniocluster/minio3/config:/root/.minio/ # 映射配置目录
    ports:
      - "19003:9000"
      - "18003:8000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
    command: server http://minio{1...4}/data --console-address ":8000"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
 
  minio4:
    image: minio/minio
    hostname: minio4
    container_name: minio4
    volumes:
      - /home/docker/miniocluster/minio4/data:/data
      - /home/docker/miniocluster/minio4/config:/root/.minio/ # 映射配置目录
    ports:
      - "19004:9000"
      - "18004:8000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
    command: server http://minio{1...4}/data --console-address ":8000"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3


2.2、启动容器

注意:执行docker-compose命令时,需要执行命令的路径中存在docker-compose.yml文件,因此docker-compose.yml在那个路径下面,命令就在那个路径下执行。

docker-compose up -d

2.3、查看启动日志

通过

http://your_hostname:18001/login

http://your_hostname:18002/login

http://your_hostname:18003/login

http://your_hostname:18004/login
分别访问 MinIO 的管理界面。跳出登录页面说明启动成功

docker-compose 部署minio集群_第1张图片

3、注意事项

  1. 对于MinIO集群,您需要提供至少4个端点,并且端点数量必须为偶数
  2. 不同服务器上部署节点时确保使用的端口号防火墙已经放行

你可能感兴趣的:(java)