MinIO部署,以及扩容

2 篇文章 0 订阅
1 篇文章 0 订阅

MinIO私有文件存储部署

因为原项目文件使用阿里云OSS上传,现需求要部署到客户本地不可以使用外网,所以要替换文件存储方案
MinIO文档地址

官方介绍
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等

MinIO可单点部署,可分布式集群部署,操作部署方便,可支持扩容,SDK和阿里OSS用起来差不多,刚好满足我的需求,唯一缺陷就是不支持动态扩容

Docker单节点部署

首先拉取镜像,下载最新版镜像

docker pull minio/minio

启动容器,启动端口为 9000 “-v /mnt/data:/data”,指定宿主机指向容器的存储地址,上传的文件存在这里,“server /data” 启动的命令,指定容器内部存储地址为/data

docker run -p 9000:9000 --name minio1 \
  -v /mnt/data:/data \
  -v /mnt/config:/root/.minio \
  minio/minio server /data

启动成功后浏览器访问 http://{ip}:9000,登录需要accessKey和secretKey,docker容器启动默认都是 “minioadmin” ,启动后会显示
在这里插入图片描述
登录MinIO,web操作界面非常简洁,可对储存桶和文件进行操作
在这里插入图片描述

Linux单节点二进制方式部署

下载安装包,可在官方下载后上传至服务器,也可以命令下载

wget https://dl.min.io/server/minio/release/linux-amd64/minio

在安装包所在目录下,启动,指定存储未知是 /data文件夹

export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
chmod +x minio
./minio server /data

启动成功,访问和操作方式与同上在这里插入图片描述

Linux分布式部署

官方介绍:分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能

高可用

单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。
例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。
注意,只要遵守分布式Minio的限制,你可以组合不同的节点和每个节点几块硬盘。比如,你可以使用2个节点,每个节点4块硬盘,也可以使用4个节点,每个节点两块硬盘,诸如此类

多硬盘多节点部署不可扩容的方式,下面是官方示例

分部署部署最少需要四个示例,不管是四个服务器,每台部署一个实例。还是一个服务器部署四个实例。
存储的文件会以n/2个节点内存分配到每个实例上,比如创建8个实例,上传的文件大小80MB,那么每个实例存在20MB

示例1: 启动分布式Minio实例,8个节点,每节点1块盘,需要在8个节点上都运行下面的命令。

export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://192.168.1.11/export1 http://192.168.1.12/export2 \
               http://192.168.1.13/export3 http://192.168.1.14/export4 \
               http://192.168.1.15/export5 http://192.168.1.16/export6 \
               http://192.168.1.17/export7 http://192.168.1.18/export8

示例2: 启动分布式Minio实例,4节点,每节点4块盘,需要在4个节点上都运行下面的命令。

export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://192.168.1.11/export1 http://192.168.1.11/export2 \
               http://192.168.1.11/export3 http://192.168.1.11/export4 \
               http://192.168.1.12/export1 http://192.168.1.12/export2 \
               http://192.168.1.12/export3 http://192.168.1.12/export4 \
               http://192.168.1.13/export1 http://192.168.1.13/export2 \
               http://192.168.1.13/export3 http://192.168.1.13/export4 \
               http://192.168.1.14/export1 http://192.168.1.14/export2 \
               http://192.168.1.14/export3 http://192.168.1.14/export4

可扩容的方式,使用MinIO纠删码,如果想要扩容,必须使用这种方式

首次部署

export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://host{1...32}/export{1...32}

扩容方式,在原命令最后一行末尾添加扩容的节点,重启集群

export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://host{1...32}/export{1...32} http://host{33...64}/export{1...32}

现在整个集群就扩展了1024个磁盘,总磁盘变为2048个,新的对象上传请求会自动分配到最少使用的集群上。通过以上扩展策略,您就可以按需扩展您的集群。重新配置后重启集群,会立即在集群中生效,并对现有集群无影响。如上命令中,我们可以把原来的集群看做一个区,新增集群看做另一个区,新对象按每个区域中的可用空间比例放置在区域中。在每个区域内,基于确定性哈希算法确定位置。

说明: 您添加的每个区域必须具有与原始区域相同的磁盘数量(纠删码集)大小,以便维持相同的数据冗余SLA。
例如,第一个区有8个磁盘,您可以将集群扩展为16个、32个或1024个磁盘的区域,您只需确保部署的SLA是原始区域的倍数即可

HTTP方式直接访问文件

如果使用 “http://{ip}:{端口}/桶名/文件名” 的方式访问文件,会跳转到web操作界面,可以进行设置桶的权限就可以了在这里插入图片描述

在这里插入图片描述

JAVA操作文件

官方有java的api以及示例,这里就不介绍了,链接

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 33
    评论
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值