Minio是建立在云原生的基础上;有分布式和共享存储等功能;旨在多租户环境中以可持续的方式进行扩展的对象存储服务。它最适合存储非结构化数据,如:照片、视频、日志文件、容器/虚拟机/映像等,单次存储对象的大小最大可达5TB。
实现架构单节点
-
根据存储是否为远端,可直接使用FS或NFS直接操作存储中的Object
-
调用S3接口,通过Minio使用FS或NFS来操作Object
多节点的Minio会根据不同的Access_key及Secret_Key来区分不同租户,每个租户可操作对应Server获取Object。Minio Server间可以通过不同的进程模型、容器或是虚拟机来互相隔离。
分布式Minio在无共享架构中根据需求扩展到尽可能多的服务器,所有节点需要使用相同的Access_key及Secret_key来登录。分布式Minio使用Web负载均衡器或DNS轮循(DNS round-robin),在各服务器之间实现负载均衡。
-
Amazon S3兼容
Minio使用Amazon S3 v2 / v4 API。可以使用Minio SDK,Minio Client,AWS SDK和AWS CLI访问Minio服务器。
-
数据保护
Minio使用Minio Erasure Code来防止硬件故障。也许会损坏一半以上的driver,但是仍然可以从中恢复。
-
高度可用
Minio服务器可以容忍分布式设置中高达(N / 2)-1节点故障。而且,您可以配置Minio服务器在Minio与任意Amazon S3兼容服务器之间存储数据。
-
Lambda计算
Minio服务器通过其兼容AWS SNS / SQS的事件通知服务触发Lambda功能。支持的目标是消息队列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等数据库。
-
加密和防篡改
Minio为加密数据提供了机密性,完整性和真实性保证,而且性能开销微乎其微。使用AES-256-GCM,ChaCha20-Poly1305和AES-CBC支持服务器端和客户端加密。加密的对象使用AEAD服务器端加密进行防篡改。
-
可对接后端存储
除了Minio自己的文件系统,还支持DAS、 JBODs、NAS、Google云存储和Azure Blob存储。
-
sdk支持
基于Minio轻量的特点,它得到类似Java、Python或Go等语言的sdk支持,例如: Java类在使用Maven管理Jar的情况下,在pom.xml中指定Minio:<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>3.0.12</version> </dependency>
Minio提供:包含图形化界面的Server端;使用命令行操作的Client端。以下为您介绍Minio Server与Minio Client的使用。
Minio Server
-
使用Access Key与Secret Key登录Minio。登录成功后进入如下界面Access Key与Secret Key可由Minio Server随机生成,也可通过变量来自定义。下文自助部署讲述如何定义及获取Access Key与Secret Key。
-
点击模块1bucket对应部分创建一个新的bucket,可在模块2看到所创建bucket。
-
在模块2选择一个bucket。点击模块1upload对应部分上传文件到已选择bucket。可在页面白色部分看到对应bucket中所上传文件。
-
鼠标移动到模块2任意bucket,对应bucket右侧可点击进行操作policy、delete操作。其中policy可设置Prefix的请求权限。
-
点击模块3,查看与设置该Object的基本信息:
-
查看共享地址Shareable Link
-
设置到期时间,最大可保存时间为7天
-
对话框上方弹出该Object现剩余到期时间
Minio Client下载二进制wget https://dl.minio.io/client/mc/release/linux-amd64/mc chmod +x mc ./mc --help基本操作命令
-
配置已存在Minio Server
./mc config host add <custom_name> <Minio_Server_address> <access_key> <secret_keyt> S3v4例:./mc config host add test http://9000.gr8be71d.grapps.ali-hz.goodrain.net access_key secret_key S3v4
-
创建bucket
./mc mb <custom_name>/[bucket_name]/[object_name]例:./mc mb test/data
-
查看Minio Server的bucket、object
./mc ls <custom_name>/[bucket_name]/[object_name]例:./mc ls test/data
-
上传/下载Object
# cp到Minio Server(上传) ./mc cp <object> <custom_name>/[bucket_name]# cp到本地(下载) ./mc cp <custom_name>/[bucket_name]/[object_name] <local_path>例:./mc cp README.md test/data
-
删除Object或bucket
./mc rm <custom_name>/[bucket_name]/[object_name]例:# 删除bucket,因为data下存在名为README.md的object,故需追加--force参数来强制删除bucket ./mc rm test/data --force
*共享访问
mc提供share方法,通过授权生成的URL可以临时上传或下载object。
-
download
指定Minio Server中的Object,生成该Object临时下载的URL。./mc share download [—expire [h|m|s]] <custom_name>/[bucket_name]/[object_name]例:# --expire 168h代表生成的URL有效时间仅168小时 ./mc share download --expire 168h test/data/README.md
-
upload
指定上传某文件到Minio Server后的路径,生成临时可供上传的命令。./mc share upload [—expire [h|m|s]] <custom_name>/[bucket_name]/[object_name]例:./mc share upload test/data/README.md生成类似如下命令:curl http://9000.gr17b6e1.grapps.ali-hz.goodrain.net/data/ \ -F x-amz-credential=access_key/20180425/us-east-1/s3/aws4_request \ -F x-amz-date=20180425T031310Z \ -F x-amz-signature=68ac9f102afd6a87526ecb9ce6025dee4f85b25cf054f5a7668a73ae0ef9f4dc \ -F bucket=data \ -F policy=eyJleHBpcmF0aW9uIjoiMjAxOC0wNS0wMlQwMzoxMzowOS45MTlaIiwiY29uZGl0aW9ucyI6W1siZXEiLCIkYnVja2V0IiwiZGF0YSJdLFsiZXEiLCIka2V5IiwiaW5zdGFsbC5zaCJdLFsiZXEiLCIkeC1hbXotZGF0ZSIsIjIwMTgwNDI1VDAzMTMxMFoiXSxbImVxIiwiJHgtYW16LWFsZ29yaXRobSIsIkFXUzQtSE1BQy1TSEEyNTYiXSxbImVxIiwiJHgtYW16LWNyZWRlbnRpYWwiLCJhY2Nlc3Nfa2V5LzIwMTgwNDI1L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QiXV19 \ -F x-amz-algorithm=AWS4-HMAC-SHA256 \ -F key=README.md \ # <FILE> 为需要上传的Object -F file=@<FILE>
-
list
查看所创建下载或上传的所有RUL./mc share list [download/upload]
部署从云市
您可以从云市一键式部署Minio应用(点击获取)。
您也可以使用docker run命令在云帮自行部署:
-
进入云帮-创建应用界面选择从Docker镜像创建应用
-
编辑docker run命令docker run -p 9000:9000 \ -e MINIO_ACCESS_KEY=<Custom Access Key> \ -e MINIO_SECRET_KEY=<Custom Secret Key> \ -v /mnt/data:/data \ -v /mnt/config:/root/.minio \ minio/minio:RELEASE.2018-04-19T22-54-58Z \ server /data访问Minio对象存储时,验证所需要的Access Key 与 Secret Key,可以根据传入的变量MINIO_ACCESS_KEY与变量MINIO_SECRET_KEY自定义生成。
-
我们对云市的Minio应用的变量MINIO_ACCESS_KEY与变量MINIO_SECRET_KEY做了初始化工作,您可以在应用控制台-应用依赖信息获取变量对应值,用于登录Minio应用。
分布式Minio
使用分布式的Minio可让您将多个驱动(即使在不同的计算机上)合并为一个对象存储服务器。由于驱动可分布在多个节点上,因此分布式Minio可以承受多点故障,并且保证数据的安全。当前云市 Minio应用版本暂时不支持分布式Minio,后续将更新分布式Minio。官方网站:https://www.minio.io文档地址:https://docs.minio.io/Minio其它支持参考: https://www.minio.io/dcos.html
进一步了解Rainbond v3.5.1
好雨Rainbond(云帮)是一款以应用为中心的开源PaaS,深度整合基于Kubernetes的容器管理、Service Mesh微服务架构最佳实践、多类型CI/CD应用构建与交付、多数据中心资源管理等技术,为用户提供云原生应用全生命周期解决方案,构建应用与基础设施、应用与应用、基础设施与基础设施之间互联互通的生态体系,满足支撑业务高速发展所需的敏捷开发、高效运维和精益管理需求。
-
网站: https://www.rainbond.com
-
试用Rainbond公有云: https://www.goodrain.com
-
Github: https://github.com/goodrain/rainbond
-
码云: https://gitee.com/rainbond/Rainbond
-
微信群: 添加微信“qingguo-wei”并接受邀请入群
Minio
共享后端存储快速入门
Minio
共享模式可以让你使用一个NAS 做为多个
Minio
服务
的存储后端。我我们在设计时已经对多个
Minio
服务
之间的同步做了很多的处理。更多
Minio
共享模式的设计文档,请访问这里.
Minio
共享模式是为了解决在真实场景中存在的一些问题,而且不需要做额外的配置。
如果你有下列需求,则可以考虑
Minio
共享模式
你已经买了NAS设备,并想在存储层
[
minio
](https://so.csdn.net/so/search?q=
minio
&spm=1001.2101.3001.7020) api 在对于大于5m的文件,自动采用了分片上传。
但它的[分片](https://so.csdn.net/so/search?q=分片&spm=1001.2101.3001.7020)上传我们无法得知上传的分片后的序号,也就是说,每上传一个分片,我们都需要自己去记录已上传分片的序号。
概述如何把
minio
上的桶像使用本地硬盘一样,挂载在本地机器上。以下场景会用到:本地
服务
器数据需要存储在
minio
上,不存储在本地。集群
服务
之间共享数据。如k8s集群微
服务
需要用到共享目录数据(非常实用)本地
服务
器空间有限无法再扩展,需要存储在
minio
上。一、前提条件
minio
服务
已部署好。安装s3fs客户端。获取
minio
的AccessKey和SecretKey并创建桶名 。二、过程2.1 挂...
二. 启动一个miniio容器
账号是
minio
; 密码是
minio
123端口9090或9999(确保在
服务
器放行相关端口即可访问)点击 create a Bucket 创建一个bucket(桶), 这里的Bucket 我们可以理解为文件存储的目录输入 bucket name ,点击create bucket 。可以通过 upload 上传文件到bucket中。
测试类(需要输入自己的账号密码和IP)
五. 配置权限
如果我们需要我们上传的文件可以被匿名用户访问,那么需要添加访问权限:找到文件存储
物联网应用-分布式对象储存工具-
MinIO
对象存储
win部署及使用,
MinIO
是一款轻量级、高性能、分布式的
开源
对象存储
系统,本文在win10上借助nssm.exe工具将
minio
.exe存储工具后台
服务
化,
搭建
win的
对象存储
服务
器。
MinIO
是一种高性能
对象存储
解决方案,原生支持 Kubernetes 部署。
MinIO
提供与 Amazon Web Services S3 兼容的 API 并支持所有核心 S3 功能。
MinIO
是在GNU Affero 通用公共许可证 v3.0下发布的。
也许提起
对象存储
技术,我们都经历过Fastdfs长时间的拉锯战,即使现在大部分都在使用云
服务
厂商提供的OSS
对象存储
服务
,但是其所花费的经济成本也是递增的,而且数据都存储在别人的
服务
器上,从一定程度上来说,对于文
之前用到文件上传功能,在这里做个学习记录。使用
minio
实现,后面会记录使用fastdfs和阿里云的oss实现文件上传以及他们的比较(oss根据流量收费)。
minio
的中文文档:https://docs.min.io/cn/
minio
安装
首先查询docker镜像:
docker search
minio
选着stars最高的那个拉取:
docker pull
minio
/
minio
启动
minio
服务
器,并设置端口号,容器名,账号和密码:
docker run -p 9000:90