MinIO 是速部署一个开源的对象存储服务器
,它兼容Amazon S3(Simple Storage Service)API。保姆它被设计用于构建分布式存储架构
,通过提供高可用性、速部署高性能和可扩展的保姆对象存储解决方案
。 下面是通过MinIO的一些主要特点和功能: 总的来说 ,MinIO是一个开源的高性能对象存储服务器,适用于构建分布式存储系统。它具有高可用性
、可扩展性和数据保护机制,兼容Amazon S3 API
,使其与现有的S3生态系统和工具集成无缝
。MinIO在大数据、云计算和容器化环境中广泛应用 ,亿华云为应用程序提供了可靠
、高效的对象存储服务 。 这里主要侧重使用docker快速部署环境
,想了解更多,可以参考我以下几篇文章: 官方文档
:https://docs.min.io/中文文档
:http://docs.minio.org.cn/docs/ MinIO和Ceph都是流行的开源存储解决方案 ,它们在对象存储领域有不同的特点和适用场景 。下面是MinIO和Ceph的对比: 综上所述 ,MinIO适用于简单
、轻量级的对象存储需求,注重高性能和易用性。它适合中小规模部署,并且与Amazon S3兼容
,易于与现有的S3生态系统集成。 无论选择MinIO还是Ceph ,都需要仔细评估其与特定应用和环境的兼容性 、性能需求
、管理复杂性和可扩展性,以确保选择的解决方案能够满足实际需求并提供可靠的存储服务。 这里部署的是伪集群,但是需要的磁盘还是那么多 ,下面就是挂载磁盘的步骤: Minio默认9000端口,在配置文件中加入–address “127.0.0.1:9029” 可更改端口 【温馨提示】磁盘大小必须>1G,这里我添加的是4*2G的盘 开始构建镜像 .env 文件内容 http://ip:port 账号/密码:admin/admin123456一、通过概述

二、MinIO 与 Ceph 对比
1)架构设计对比
MinIO:MinIO采用分布式架构,以水平扩展为基础 。它通过多个独立的云计算MinIO节点组成集群 ,每个节点都是独立的对象存储服务器。MinIO专注于提供简单、轻量级的对象存储服务,适用于小型到中等规模的部署
。Ceph:Ceph是一个分布式存储系统,由对象存储、块存储和文件系统组成 。它使用RADOS(Reliable Autonomic Distributed Object Store)作为底层存储系统,提供高可用性和数据冗余 。Ceph适用于大规模的源码库企业级部署,具有复杂的架构和丰富的功能
。2)数据一致性对比
MinIO:MinIO在默认配置下提供最终一致性,即写入操作返回成功后
,数据可能会有一定的时间窗口内的延迟才能完全一致 。这适用于许多应用场景,如数据备份、存档等
。Ceph:Ceph提供强一致性
,即写入操作在返回成功后 ,数据即刻就达到一致性 。这对于需要强一致性保证的应用场景非常重要,如数据库和事务处理。3)部署和管理对比
MinIO:MinIO 的部署和管理相对简单,可以通过单个二进制文件或容器进行快速安装和配置
。它提供了直观的管理界面和易于使用的API
,使得管理和监控变得简单。Ceph:Ceph 的部署和管理相对复杂
,涉及多个组件和配置。它需要更多的时间和专业知识来设置和维护,需要熟悉Ceph的架构和配置。4)生态系统和兼容性对比
MinIO:MinIO与Amazon S3 API兼容,这意味着现有的S3工具和应用程序可以无缝地与MinIO集成
。它还有一个活跃的社区,提供了各种客户端库和插件,扩展了其功能和兼容性 。Ceph:Ceph 具有广泛的生态系统和丰富的功能集
。它可以与多个协议和接口(如RADOS、RBD、CephFS)进行集成,提供块存储 、文件系统和对象存储的全面解决方案
。三、前期准备
1)部署 docker
复制# 安装yum-config-manager配置工具 yum -y install yum-utils # 建议使用阿里云yum源
:(推荐) #yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装docker-ce版本 yum install -y docker-ce # 启动并开机启动 systemctl enable --now docker docker --version1.2.3.4.5.6.7.8.9.10.11.12. 2)部署 docker-compose
复制curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version1.2.3.4. 四、创建网络
复制# 创建,注意不能使用hadoop_network,要不然启动hs2服务的时候会有问题
!!
! docker network create hadoop-network # 查看 docker network ls1.2.3.4.5. 五 、MinIO 编排部署
1)下载 MinIO 安装包
复制wget https://dl.min.io/server/minio/release/linux-amd64/minio1. 2)配置
3)启动脚本 bootstrap.sh
复制#!/bin/bash source /etc/profile # 在三台机器上都执行该文件,即以分布式的方式启动了MINIO # --address "0.0.0.0:9000" 挂载9001端口为api端口(如Java客户端)访问的端口 # --console-address ":9000" 挂载9000端口为web端口; /opt/apache/minio/minio server --address 0.0.0.0:9000 --console-address 0.0.0.0:9001 --config-dir /etc/minio \ http://minio-node1/opt/apache/minio/data/export1 \ http://minio-node1/opt/apache/minio/data/export2 \ http://minio-node1/opt/apache/minio/data/export3 \ http://minio-node1/opt/apache/minio/data/export4 \ http://minio-node2/opt/apache/minio/data/export1 \ http://minio-node2/opt/apache/minio/data/export2 \ http://minio-node2/opt/apache/minio/data/export3 \ http://minio-node2/opt/apache/minio/data/export4 \ http://minio-node3/opt/apache/minio/data/export1 \ http://minio-node3/opt/apache/minio/data/export2 \ http://minio-node3/opt/apache/minio/data/export3 \ http://minio-node3/opt/apache/minio/data/export4 >/opt/apache/minio/logs/minio_server.log & tail -f /opt/apache/minio/logs/minio_server.log1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21. 4)构建镜像 Dockerfile
复制FROM registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/centos-jdk:7.7.1908 # 创建日志存储目录 RUN mkdir -p /opt/apache/minio/logs # 分别在三个节点上创建存储目录 RUN mkdir -p /opt/apache/minio/data/export{ 1..3} # 创建配置目录 RUN mkdir -p /etc/minio # 账号密码 ENV MINIO_ROOT_USER=admin ENV MINIO_ROOT_PASSWORD=admin123456 # copy minio COPY minio /opt/apache/minio/ # copy minio client mc COPY mc /opt/apache/minio/ RUN ln -s /opt/apache/minio/mc /usr/local/sbin/mc # copy bootstrap.sh COPY bootstrap.sh /opt/apache/ RUN chmod +x /opt/apache/bootstrap.sh WORKDIR /opt/apache1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25. 5)编排 docker-compose.yaml
复制version: 3 services: minio-node1: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619 container_name: minio-node1 hostname: minio-node1 restart: always privileged: true env_file: - .env expose: - "${ MinIO_PORT}" ports: - "${ MinIO_HTTP_PORT}" volumes: - /opt/apache/docker-compose-minio/data/minio-node1/data1:/opt/apache/minio/data/export1 - /opt/apache/docker-compose-minio/data/minio-node1/data2:/opt/apache/minio/data/export2 - /opt/apache/docker-compose-minio/data/minio-node1/data3:/opt/apache/minio/data/export3 - /opt/apache/docker-compose-minio/data/minio-node1/data4:/opt/apache/minio/data/export4 command: ["sh","-c","/opt/apache/bootstrap.sh"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "netstat -tnlp|grep :${ MinIO_PORT} || exit 1"] interval: 10s timeout: 10s retries: 5 minio-node2: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619 container_name: minio-node2 hostname: minio-node2 restart: always privileged: true env_file: - .env expose: - "${ MinIO_PORT}" ports: - "${ MinIO_HTTP_PORT}" volumes: - /opt/apache/docker-compose-minio/data/minio-node2/data1:/opt/apache/minio/data/export1 - /opt/apache/docker-compose-minio/data/minio-node2/data2:/opt/apache/minio/data/export2 - /opt/apache/docker-compose-minio/data/minio-node2/data3:/opt/apache/minio/data/export3 - /opt/apache/docker-compose-minio/data/minio-node2/data4:/opt/apache/minio/data/export4 command: ["sh","-c","/opt/apache/bootstrap.sh"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "netstat -tnlp|grep :${ MinIO_PORT} || exit 1"] interval: 10s timeout: 10s retries: 5 minio-node3: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619 container_name: minio-node3 hostname: minio-node3 restart: always privileged: true env_file: - .env expose: - "${ MinIO_PORT}" ports: - "${ MinIO_HTTP_PORT}" volumes: - /opt/apache/docker-compose-minio/data/minio-node3/data1:/opt/apache/minio/data/export1 - /opt/apache/docker-compose-minio/data/minio-node3/data2:/opt/apache/minio/data/export2 - /opt/apache/docker-compose-minio/data/minio-node3/data3:/opt/apache/minio/data/export3 - /opt/apache/docker-compose-minio/data/minio-node3/data4:/opt/apache/minio/data/export4 command: ["sh","-c","/opt/apache/bootstrap.sh"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "netstat -tnlp|grep :${ MinIO_PORT} || exit 1"] interval: 10s timeout: 10s retries: 5 # 连接外部网络 networks: hadoop-network: external: true1.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.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82. 6)开始部署
复制# --project-name指定项目名称,默认是当前目录名称 docker-compose -f docker-compose.yaml up -d # 查看 docker-compose -f docker-compose.yaml ps # 卸载 docker-compose -f docker-compose.yaml down1.2.3.4.5.6.7.8. 7)简单测试验证
复制# 登录容器内测试 docker exec -it minio-node1 bash # 登录,密文输入(推荐) [root@minio-node1 apache]# mc config host add minio http://localhost:9000 Enter Access Key: admin Enter Secret Key: 输入密码 Added `minio` successfully. # 查看集群信息 mc admin info minio1.2.3.4.5.6.7.8.9.10.11. 
8)web 访问

