0


MinIO介绍使用

MinIO介绍使用

MinIO 介绍

MinIO 是一款基于Go语言发开的高性能、分布式的对象存储系统。客户端支持Java,Net,Python,Javacript, Golang语言。

MinIO 英文官网 MinIO 中文官网 注意:中文官方更新不及时,会有很多坑,请以英文官网为准。

应用场景

互联网海量非结构化数据的存储需求

  • 电商网站:海量商品图片
  • 视频网站:海量视频文件
  • 网盘:海量文件
  • 社交网站:海量图片
  • 日志系统:审计日志
  • 镜像仓库:海量docker镜像

基础概念

  • Object:存储到 Minio 的基本对象,如文件、字节流,视频、音频、日志、镜像等等
  • Bucket:用来存储 Object 的逻辑空间。每个 Bucket 之间的数据是相互隔离的。对于客户端而 言,就相当于一个存放文件的顶层文件夹。
  • Drive:即存储数据的磁盘,在 MinIO 启动时,以参数的方式传入。Minio 中所有的对象数据都会 存储在 Drive 里。
  • Set :即一组 Drive 的集合,分布式部署根据集群规模自动划分一个或多个 Set ,每个 Set 中的 Drive 分布在不同位置。一个对象存储在一个 Set 上。(For example: {1…64} is divided into 4 sets each of size 16.)

MinIO优势

1、数据保护

1.1、分布式MInio采用纠删码来放反多个节点待机和位衰减 bit rot

1.2、分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。

2、高可用

2.1、单机Minio服务存在单点故障,相反,如果是有一个N快硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。

2.2、例如,一个16节点的Minio集群,每个节点16块块硬盘,计算8台服务器宕机,这个集群仍然是可读的,不过你需要9台服务器才能写入数据。

3、一致性

3.1、Minio在分布式和单机模式下,所有读写炒作都严格遵守read-after-write 一致性模型

MinIO 使用

使用【服务端】

单机模式 (linux部署)

ps:初始用户名密码:minioadmin

1、下载linux minio, wget https://dl.min.io/server/minio/release/linux-amd64/minio

2、linux部署

修改用户名密码:
export MINIO_ROOT_USER=username
export MINIO_ROOT_PASSWORD=password
​
启动:
./minio server --console-address ":9090" /mnt/data
​
后台启动,指定日志路径:
nohup ./minio server --console-address :"9090" ./miniodata/data >./miniodata/minio.log 2>&1 &
​
ps:接口默认地址:9000
指定console端口:9090

3、docker部署

docker run \
  -p 9000:9000 \
  -p 9001:9001 \
  -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
  -e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
  quay.io/minio/minio server /data --console-address ":9001"

4、docker部署纠删码模式

docker run -d -p 9000:9000 -p 9090:9090 --name minio \
 -v /mnt/data1:/data1 \
 -v /mnt/data2:/data2 \
 -v /mnt/data3:/data3 \
 -v /mnt/data4:/data4 \
 -v /mnt/data5:/data5 \
 -v /mnt/data6:/data6 \
 -v /mnt/data7:/data7 \
 -v /mnt/data8:/data8 \
minio/minio server /data{1...8} --console-address ":9090"

5、缺点:单点故障,直接宕机

分布式部署

    注意事项:

1、linux部署:启动一个分布式Minio实例,你只需要把硬盘位置作为参数传给minio server命令即可,然后,你需要在所有其他节点运行同样的命令。

2、分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立连接。为了实现这个,你需要在执行minioserver命令前,先将access秘钥和secret秘钥expoert成环境变量。新版本使用MINIO_ROOT_USER&MINIO_ROOTPASSWORD。

3、【举例1】8个节点,每个节点1块盘。启动分布式Minio实例,8个节点,每节点1块盘,需要再8个节点上都运行下面的命令:

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=123456

【举例1.1】下面示例的IP仅供示例参考没需要改成你真实的IP地址和文件夹路径。

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】4个节点,每个节点2块盘。启动分布式Minio实例,4个节点,每节点2块盘,需要再4个节点上都运行下面的命令:

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=123456

【举例2.1】下面示例的IP仅供示例参考没需要改成你真实的IP地址和文件夹路径。

http://192.168.1.11/export1 \
http://192.168.1.11/export2 \
http://192.168.1.12/export1 \
http://192.168.1.12/export2 \
http://192.168.1.13/export1 \
http://192.168.1.13/export2 \
http://192.168.1.14/export1 \
http://192.168.1.14/export2 \

5、统一入口:使用Nginx 统一入口,可以做ip hash策略分散服务器压力。

【例如 :】

upstream minio {
    server 192.168.1.11:9001;
    server 192.168.1.12:9001;
    server 192.168.1.13:9001;
    server 192.168.1.14:9001;
}
​
upstream console {
    ip_hash;
    server 192.168.1.11:5001;
    server 192.168.1.12:5002;
    server 192.168.1.13:5003;
    server 192.168.1.14:5004;
}
​
server {
    listen      9000;
    listen [::] 9000;
    server_name localhost;
    
    localhost / {
    
        proxy_pass http://minio;
    }
}
server {
    listen      5000;
    listen [::] 5000;
    server_name localhost;
    
    localhost / {
    
    proxy_pass http://console;
    }
}

6、docker-compose部署,能力有限,留个入口。

使用【客户端】

介绍:MinIO Clinet(mc) 为ls,cat,cp,mirror,diff,find 等UNIX命令提供一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)。

Windows 部署

ps:注意9001 是接口端口,不是console端口。

1、下载

wget https://dl.min.io/client/mc/release/linux-amd64/mc 

2、赋予权限

chmod +x mc
./mc --help

3、查询mc host配置

mc config host ls

4、 添加minio服务

mc config host add minio-server http://81.70.144.153:9001/
minioadmin minioadmin

5、 mc命令【管理文件】

# 加入配置文件:
mc config host add minio01 http://81.70.144.153:9000 minioadmin minioadmin
​
# 连接查看minio文件内容:
mc ls tuling minio01
​
# 下载文件
mc cp minio01/yeb/数据结构算法面试题.txt D:\
​
# 上传文件
mc cp D:\测试.txt minio01/yeb
​
# 删除文件
mc rm minio01/yeb/测试.txt

6、mc命令【管理桶(Bucket)】

# 创建bucket
mc mb minio01/yeb1
​
# 删除bucket(有数据删除失败)
mc rb minio01/yeb1
​
# bucket不为空,强制删除,慎用
mc rb --force minio01/yeb1
​
# 查看bucket磁盘使用情况
mc du minio01/yeb

7、mc命令【admin使用】

Minio Client 提供了‘admin’子命令来对minio部署执行管理任务
​
service 服务器停止并且重启所有Minio服务器
udpate 更新所有MInio服务器
info 显示minio服务器信息
user 管理用户
group 管理小组
policy minio服务器中定义策略管理
cofnig 配置管理minio服务器
heal 修复minio服务器上的磁盘、桶、对象
profile 生成概要文件数据进行调试
top 顶部提供minio统计信息
trace 跟踪显示minio服务器的http跟踪
console 控制台显示minio服务器的控制台日志
prometheus prometheys配置
kms kms管理操作
标签: docker linux java

本文转载自: https://blog.csdn.net/weixin_53336463/article/details/129450942
版权归原作者 weixin_53336463 所有, 如有侵权,请联系我们删除。

“MinIO介绍使用”的评论:

还没有评论