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

news/2024/12/29 5:30:12/

文章目录

    • 前言
    • MinIO简介
      • MinIO优势
      • MinIO技术亮点
    • Docker部署MinIO集群
      • docker与docker-compose安装
      • 新增nginx配置
      • 编写docker-compose.yml文件
    • 启动MinIO容器并验证

前言

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

MinIO简介

MinIO 提供高性能、与S3 兼容的对象存储系统,让你自己能够构建自己的私有云储存服务。
MinIO原生支持 Kubernetes,它可用于每个独立的公共云、每个 Kubernetes 发行版、私有云和边缘的对象存储套件。
MinIO是软件定义的,不需要购买其他任何硬件,在 GNU AGPL v3 下是 100% 开源的。
在这里插入图片描述

MinIO优势

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

MinIO技术亮点

主动复制
对象存储的主动、多站点复制是任务关键型生产环境的关键要求。MinIO是目前唯一提供它的供应商。MinIO 提供存储桶级粒度,并支持同步和近同步复制,具体取决于架构选择和数据变化率。
在这里插入图片描述

加密
在对象存储领域,需要强大的加密才能在谈判桌上占有一席之地。MinIO 通过最高级别的加密以及广泛的优化提供更多功能,几乎消除了通常与存储加密操作相关的开销。
在这里插入图片描述

可扩展性
缩放是一个维度概念,但它有一个真理:简单缩放。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 headersignore_invalid_headers off;# Allow any size file to be uploaded.# Set to a value such as 1000m; to restrict file size to a specific valueclient_max_body_size 0;# To disable bufferingproxy_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.1proxy_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-34Zhostname: minio1container_name: minio1restart: alwaysvolumes:- /app/minio/minio1/data:/data- /app/minio/minio1/config:/root/.minio/ # 映射配置目录ports:- "19001:9000"- "18001:8000"environment:MINIO_ACCESS_KEY: minioMINIO_SECRET_KEY: minio123command: server http://minio{1...4}/data --console-address ":8000"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3minio2:image: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Zhostname: minio2container_name: minio2restart: alwaysvolumes:- /app/minio/minio2/data:/data- /app/minio/minio2/config:/root/.minio/ # 映射配置目录ports:- "19002:9000"- "18002:8000"environment:MINIO_ACCESS_KEY: minioMINIO_SECRET_KEY: minio123command: server http://minio{1...4}/data --console-address ":8000"healthcheck:healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3minio3:image: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Zhostname: minio3container_name: minio3restart: alwaysvolumes:- /app/minio/minio3/data:/data- /app/minio/minio3/config:/root/.minio/ # 映射配置目录ports:- "19003:9000"- "18003:8000"environment:MINIO_ACCESS_KEY: minioMINIO_SECRET_KEY: minio123command: server http://minio{1...4}/data --console-address ":8000"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3minio4:image: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Zhostname: minio4container_name: minio4restart: alwaysvolumes:- /app/minio/minio4/data:/data- /app/minio/minio4/config:/root/.minio/ # 映射配置目录ports:- "19004:9000"- "18004:8000"environment:MINIO_ACCESS_KEY: minioMINIO_SECRET_KEY: minio123command: server http://minio{1...4}/data --console-address ":8000"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3nginx-minio:image: nginx:1.19.2-alpinehostname: nginx-miniorestart: alwaysvolumes:- /app/minio/nginx.conf:/etc/nginx/nginx.conf:ro- /app/minio/ssl:/sslports:- "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集群,至少需要提供4个端点,并且端点数量必须为偶数
不同服务器上部署节点时确保使用的端口号防火墙已经放行


http://www.ppmy.cn/news/1117924.html

相关文章

【论文阅读 09】融合门控自注意力机制的生成对抗网络视频异常检测

2021年 中国图象图形学报 摘 要 背景: 视频异常行为检测是智能监控技术的研究重点,广泛应用于社会安防领域。当前的挑战之一是如何提高异常检测的准确性,这需要有效地建模视频数据的空间维度和时间维度信息。生成对抗网络(GANs&…

React 全栈体系(十)

第五章 React 路由 三、基本路由使用 7. 代码 - Switch 的使用 7.1 Test /* src/pages/Test/index.jsx */ import React, { Component } from reactexport default class Test extends Component {render() {return (<div><h2>Test....</h2></div>…

ros2与web通信实例

ros2与web通信实例 最近需要进行ros2与web端进行通信操作&#xff0c;目标是ros2发送的消息web端能够显示在界面&#xff0c;并且前端能够发布数据&#xff0c;最终实例如下&#xff1a; 然而网上查的的资料如古月居的&#xff1a; 利用Websocket实现ROS与Web的交互 https:/…

用 Python实现Python解释器

介绍 Byterun 是一个用 Python 实现的 Python 解释器。随着我对 Byterun 的开发&#xff0c;我惊喜地的发现&#xff0c;这个 Python 解释器的基础结构用 500 行代码就能实现。在这一章我们会搞清楚这个解释器的结构&#xff0c;给你足够探索下去的背景知识。我们的目标不是向…

项目基本搭建流程

项目创立&#xff1a;webapp 设置maven 的和settings.xml 的地址 手动建立java文件夹和resource文件夹 一.分层 二.使用generator 来自动建立实体类dao 和dao接口,存放sql文件的xml&#xff1b;并复制到项目中&#xff08;路径可能可以直接设置&#xff09; 三. 配置文件&…

python读取.xls文件,绘制钻头外径磨损图

通过xlrd模块读取.xls文件&#xff0c;数据如下&#xff0c;总计162行16列&#xff1a; 读取与作图如下&#xff1a; from xlrd import open_workbook import matplotlib import matplotlib.pyplot as plt # 设置字体为微软雅黑&#xff0c;解决中文显示问题matplotlib.rc(&qu…

python统计秒数

code 1.没有cuda的版本 import times time.time() for i in range(100):pass t time.time() print("time:{} sec".format(t-s))2.cuda 同步 torch.cuda.synchronize() start time.time() result model(input) torch.cuda.synchronize() end time.time()ref …

HUAWEI华为荣耀猎人游戏本V700 i7独显2060(FRD-WFD9)原装出厂Windows10系统工厂模式(含F10还原)

华为HONOR荣耀笔记本原厂系统镜像包&#xff0c;安装恢复时自动创建F10一键智能还原功能 链接&#xff1a;https://pan.baidu.com/s/1_px_3Fr9qEE6jExz1eKKKg?pwdk6uc 提取码&#xff1a;k6uc 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、华为电脑管家等预装程序…