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管理操作
相关推荐
笃励8 分钟前
Java面试题二
java·开发语言·python
可涵不会debug14 分钟前
【Linux】信号知识三把斧——信号的产生、保存和处理
linux·运维·信号
jyan_敬言16 分钟前
【Linux】Linux命令与操作详解(一)文件管理(文件命令)、用户与用户组管理(创建、删除用户/组)
linux·运维·服务器·c语言·开发语言·汇编·c++
易雪寒26 分钟前
IDEA在git提交时添加忽略文件
java·git·intellij-idea
打码人的日常分享1 小时前
企业人力资源管理,人事档案管理,绩效考核,五险一金,招聘培训,薪酬管理一体化管理系统(源码)
java·数据库·python·需求分析·规格说明书
27669582921 小时前
京东e卡滑块 分析
java·javascript·python·node.js·go·滑块·京东
unix2linux1 小时前
Parade Series - SHA256
linux·python·mysql·shell
爱写代码的刚子1 小时前
C++知识总结
java·开发语言·c++
-$_$-1 小时前
【黑马点评】 使用RabbitMQ实现消息队列——1.Docker与RabbitMQ环境安装
分布式·docker·rabbitmq
芯的一天1 小时前
windows下DockerDesktop命令行方式指定目录安装
windows·docker