【分布式云储存】高性能云存储MinIO简介与Docker部署集群

这篇具有很好参考价值的文章主要介绍了【分布式云储存】高性能云存储MinIO简介与Docker部署集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

分布式存储服务一直以来是中大型项目不可或缺的一部分,一般常用的商用文件服务有七牛云、阿里云等等,自建的开源文件服务有FastDFS、HDFS等等。但是对于这些方案有的需要付费有些却太过于笨重,今天我们就分享一款轻量级完全可替代生产的高性能分布式储存服务Minio。

MinIO简介

MinIO 提供高性能、与S3 兼容的对象存储系统,让你自己能够构建自己的私有云储存服务。
MinIO原生支持 Kubernetes,它可用于每个独立的公共云、每个 Kubernetes 发行版、私有云和边缘的对象存储套件。
MinIO是软件定义的,不需要购买其他任何硬件,在 GNU AGPL v3 下是 100% 开源的。
【分布式云储存】高性能云存储MinIO简介与Docker部署集群,docker,开发工具,云存储,分布式,docker,容器,MinIO,分布式文件服务

MinIO优势

简单
简单性是百万兆次级数据基础设施的基础 - 无论是在技术上还是在操作上。MinIO使用和部署非常简单,没有其他对象存储可以让您在最快的时间内实现下载到生产环境的部署
高性能
简单性是百万兆次级数据基础设施的基础 - 无论是在技术上还是在操作上。MinIO使用和部署非常简单,没有其他对象存储可以让您在最快的时间内实现下载到生产环境的部署
kubernetes原生支持
通过原生 Kubernetes 运营商集成,MinIO 支持公共云、私有云和边缘云上所有主要的 Kubernetes 发行版。

MinIO技术亮点

主动复制
对象存储的主动、多站点复制是任务关键型生产环境的关键要求。MinIO是目前唯一提供它的供应商。MinIO 提供存储桶级粒度,并支持同步和近同步复制,具体取决于架构选择和数据变化率。
【分布式云储存】高性能云存储MinIO简介与Docker部署集群,docker,开发工具,云存储,分布式,docker,容器,MinIO,分布式文件服务

加密
在对象存储领域,需要强大的加密才能在谈判桌上占有一席之地。MinIO 通过最高级别的加密以及广泛的优化提供更多功能,几乎消除了通常与存储加密操作相关的开销。
【分布式云储存】高性能云存储MinIO简介与Docker部署集群,docker,开发工具,云存储,分布式,docker,容器,MinIO,分布式文件服务

可扩展性
缩放是一个维度概念,但它有一个真理:简单缩放。MinIO 通过称为服务器池的概念进行水平扩展(横向扩展)。服务器池是一种结合了多个技术组件的方法。每个服务器池都是一组独立的节点,具有自己的计算、网络和存储资源。
【分布式云储存】高性能云存储MinIO简介与Docker部署集群,docker,开发工具,云存储,分布式,docker,容器,MinIO,分布式文件服务

Docker部署MinIO集群

为方便展示操作过程我们选择docker-compose编排容器,并且直接编排四个MinIO服务和一个Nginx服务,有条件的同学可以分别部署在不同服务器上。

Minio目录树
[root@master minio]# tree
.

├── docker-compose-minio.yaml
├── nginx.conf
├── minio1
│ ├── config
│ └── data
├── minio2
│ ├── config
│ └── data
├── minio3
│ ├── config
│ └── data
├── minio4
│ ├── config
│ └── data
├── ssl
│ ├── cacert.pem
│ └── privkey.pem

docker与docker-compose安装

#安装docker社区版
yum install docker-ce
#版本查看
docker version
#docker-compose插件安装
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#可执行权限
chmod +x /usr/local/bin/docker-compose
#版本查看
docker-compose version

新增nginx配置

nginx.conf创建
vim nginx.conf

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  4096;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;

    # include /etc/nginx/conf.d/*.conf;

    upstream minio {
        server minio1:9000;
        server minio2:9000;
        server minio3:9000;
        server minio4:9000;
    }

    server {
        listen       9000;
        listen  [::]:9000;
        server_name  localhost;
        #ssl on; ssl配置自行开启
        #ssl_certificate /ssl/cacert.pem;
        #ssl_certificate_key /ssl/privkey.pem;
        # To allow special characters in headers
        ignore_invalid_headers off;
        # Allow any size file to be uploaded.
        # Set to a value such as 1000m; to restrict file size to a specific value
        client_max_body_size 0;
        # To disable buffering
        proxy_buffering off;
        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_connect_timeout 300;
            # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            chunked_transfer_encoding off;

            proxy_pass http://minio;
        }
    }
}

编写docker-compose.yml文件

#创建minio数据存储目录
[root@master minio]# pwd
/app/minio
[root@master minio]# mkdir -p minio1/data minio1/config minio2/data minio2/config minio3/data minio3/config minio4/data minio4/config

增加docker-compose编排文件
vim docker-compose-minio.yaml

version: '3.3'
services:
  minio1:
    image: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Z
    hostname: minio1
    container_name: minio1
    restart: always
    volumes:
      - /app/minio/minio1/data:/data
      - /app/minio/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: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Z
    hostname: minio2
    container_name: minio2
    restart: always
    volumes:
      - /app/minio/minio2/data:/data
      - /app/minio/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: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Z
    hostname: minio3
    container_name: minio3
    restart: always
    volumes:
      - /app/minio/minio3/data:/data
      - /app/minio/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: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Z
    hostname: minio4
    container_name: minio4
    restart: always
    volumes:
      - /app/minio/minio4/data:/data
      - /app/minio/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
  nginx-minio:
    image: nginx:1.19.2-alpine
    hostname: nginx-minio
    restart: always
    volumes:
      - /app/minio/nginx.conf:/etc/nginx/nginx.conf:ro
      - /app/minio/ssl:/ssl
    ports:
      - "9100:9000"
    depends_on:
      - minio1
      - minio2
      - minio3
      - minio4
   
 

启动MinIO容器并验证

#启动容器
[root@master minio]# docker-compose -f docker-compose-minio.yaml up -d
#查看启动的minio
[root@master minio]# docker ps | grep minio
49f824c8af57 minio/minio “/usr/bin/docker-ent…” 10 seconds ago Up 9 seconds (health: starting) 0.0.0.0:18004->8000/tcp, :::18004->8000/tcp, 0.0.0.0:19004->9000/tcp, :::19004->9000/tcp minio4
5bdf40deb4dc minio/minio “/usr/bin/docker-ent…” 10 seconds ago Up 9 seconds (health: starting) 0.0.0.0:18002->8000/tcp, :::18002->8000/tcp, 0.0.0.0:19002->9000/tcp, :::19002->9000/tcp minio2
baa7311a31e2 minio/minio “/usr/bin/docker-ent…” 10 seconds ago Up 9 seconds (health: starting) 0.0.0.0:18001->8000/tcp, :::18001->8000/tcp, 0.0.0.0:19001->9000/tcp, :::19001->9000/tcp minio1
6ddcbfb7114b minio/minio “/usr/bin/docker-ent…” 10 seconds ago Up 9 seconds (health: starting) 0.0.0.0:18003->8000/tcp, :::18003->8000/tcp, 0.0.0.0:19003->9000/tcp, :::19003->9000/tcp minio3

查看启动日志
http://your_hostname:18001~18004/login
分别访问 MinIO 的管理界面。跳出登录页面说明启动成功
【分布式云储存】高性能云存储MinIO简介与Docker部署集群,docker,开发工具,云存储,分布式,docker,容器,MinIO,分布式文件服务

【分布式云储存】高性能云存储MinIO简介与Docker部署集群,docker,开发工具,云存储,分布式,docker,容器,MinIO,分布式文件服务

注意事项

对于MinIO集群,至少需要提供4个端点,并且端点数量必须为偶数
不同服务器上部署节点时确保使用的端口号防火墙已经放行文章来源地址https://www.toymoban.com/news/detail-732479.html

到了这里,关于【分布式云储存】高性能云存储MinIO简介与Docker部署集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【分布式系统】聊聊高性能设计

    对于以上的数字,其实每个程序员都应该了解,因为只有了解这些基本的数字,才能知道对于CPU、内存、磁盘、网络之间数据读写的时间。1000ms = 1S。毫秒-微秒-纳秒-秒-分钟 为什么高性能如此重要的呢,在架构设计中,高性能、高可用、高并发是三高问题。其实背后对应的就

    2024年02月13日
    浏览(52)
  • 高性能分布式缓存Redis(三) 扩展应用

    在并发编程中,通过锁,来避免由于竞争而造成的数据不一致问题 问题分析 现象:本地锁在多节点下失效(集群/分布式) 原因:本地锁它只能锁住本地JVM进程中的多个线程,对于多个JVM进程的不同线程间是锁不住的 解决:分布式锁(在分布式环境下提供锁服务,并且达到本地

    2024年02月12日
    浏览(67)
  • 开源通用高性能的分布式id序列组件

    原文地址:https://ntopic.cn/p/2023062101/ Gitee源代码仓库:https://gitee.com/obullxl/sequence-jdbc GitHub源代码仓库:https://github.com/obullxl/sequence-jdbc 业务数据的存储,少不了数据记录的id序列。 id序列(或称序列)的生成方式有很多种,比如当前时间戳、数据库的序列值(Oracle的序列,MyS

    2024年02月11日
    浏览(78)
  • 深“扒”云原生高性能分布式文件系统JuiceFS

    JuiceFS 是一款面向云原生设计的高性能 分布式文件系统 ,在 Apache 2.0 开源协议下发布。提供完备的 POSIX 兼容性,可将几乎所有对象存储接入本地作为海量本地磁盘使用,亦可同时在跨平台、跨地区的不同主机上挂载读写。 JuiceFS JuiceFS 采用  「数据」与「元数据」分离存储

    2024年02月15日
    浏览(48)
  • Kafka 最佳实践:构建可靠、高性能的分布式消息系统

    Apache Kafka 是一个强大的分布式消息系统,被广泛应用于实时数据流处理和事件驱动架构。为了充分发挥 Kafka 的优势,需要遵循一些最佳实践,确保系统在高负载下稳定运行,数据可靠传递。本文将深入探讨 Kafka 的一些最佳实践,并提供丰富的示例代码,帮助读者更好地应用

    2024年02月03日
    浏览(57)
  • 解析RocketMQ:高性能分布式消息队列的原理与应用

    什么是消息队列 消息队列是一种消息传递机制,用于在应用程序和系统之间传递消息,实现解耦和异步通信。它通过将消息发送到一个中间代理(消息队列),然后由消费者从该队列中获取消息并处理。 RocketMQ简介 RocketMQ是阿里巴巴开源的一款高性能分布式消息队列系统。它

    2024年02月14日
    浏览(50)
  • 【分布式技术专题】「分布式ID系列」百度开源的分布式高性能的唯一ID生成器UidGenerator

    UidGenerator是什么 UidGenerator是百度开源的一款分布式高性能的唯一ID生成器,更详细的情况可以查看官网集成文档 uid-generator是基于Twitter开源的snowflake算法实现的一款唯一主键生成器(数据库表的主键要求全局唯一是相当重要的)。要求java8及以上版本。 snowflake算法 Snowflake算法描

    2024年02月04日
    浏览(61)
  • 芯片设计重要工具—— IBM LSF 分布式高性能计算调度平台

    IBM Spectrum® LSF® Suites 是面向分布式高性能计算 (HPC) 的工作负载管理平台和作业调度程序。基于 Terraform 的自动化现已可用,该功能可在 IBM Cloud® 上为基于 IBM Spectrum LSF 的集群供应和配置资源。 借助我们针对任务关键型 HPC 环境的集成解决方案,提高用户生产力和硬件使用,

    2024年01月19日
    浏览(49)
  • Apache SeaTunnel:新一代高性能、分布式、海量数据集成工具从入门到实践

    Apache SeaTunnel 原名 Waterdrop,在 2021 年 10 月更名为 SeaTunnel 并申请加入 Apache孵化器。目前 Apache SeaTunnel 已发布 40+个版本,并在大量企业生产实践中使用,包括 J.P.Morgan、字节跳动、Stey、中国移动、富士康、腾讯云、国双、中科大数据研究院、360、Shoppe、Bilibili、新浪、搜狗、唯

    2024年02月03日
    浏览(64)
  • LAXCUS分布式操作系统:技术创新引领高性能计算与人工智能新时代

    随着科技的飞速发展,高性能计算、并行计算、分布式计算、大数据、人工智能等技术在各个领域得到了广泛应用。在这个过程中,LAXCUS分布式操作系统以其卓越的技术创新和强大的性能表现,成为了业界的佼佼者。本文将围绕LAXCUS分布式操作系统的技术创新,探讨其在高性

    2024年02月12日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包