MinIO


本文的出现是为了能够分享个人所学的相关知识,检验自身学习成果。内容会和其他技术存在部分关联,如有任何描述错误或者说明有误的地方,还望各位大佬指出。

1. 什么是MinIO

1.1 MinIO介绍

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

1.2 MinIO保护数据策略

​ Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。

2. MinIO部署

2.1 单节点部署

2.1.1 下载minio

根据实际操作系统及位数下载相应minio server(注:不是minio client)

进入https://dl.min.io/server/minio/release/linux-amd64/minio下载

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

2.1.2 上传到linux下

在上一步下载的文件目录下添加shell脚本(例如:startMinIO.sh)并运行,命令如下:

MINIO_ACCESS_KEY配置minio登录账户

MINIO_SECRET_KEY配置minio登录密码

dataPath为数据存储路径

export MINIO_ACCESS_KEY="minio"
export MINIO_SECRET_KEY="123qwe!@#"
nohup ./minio server --address :9000 ${dataPath} >/dev/null 2>&1 &

2.1.3 进入页面验证

minio默认端口为9000,可以用–address 参数自定义。

2.2 集群部署

MINIO集群与常规集群不同的是,MINIO集群中存储的文件并不是在所有节点上各存一份,而是将讲文件拆分成多分,再使用纠删码技术保障多节点文件完整。同时请对比集群部署和单点部署启动命令。本文档以四个节点为例预留5个端口(8089、9001、9002、9003、9004)

2.2.1 非集群单节点部署

命令如下:

export MINIO_ACCESS_KEY="minio"
export MINIO_SECRET_KEY="123qwe!@#"
nohup ./minio server --address :9000 ${dataPath} >/dev/null 2>&1 &

2.2.2 集群下单节点部署

集群下部署minio单节点需要根据非集群单节点部署命令进行修改。将datapath部分指向集群中所有minio节点的datapath。

集群中其中一个节点部署命令如下:

export MINIO_ACCESS_KEY="minio"
export MINIO_SECRET_KEY="123qwe!@#"
nohup ./minio server --address ${Node1_IP}:${Node1_Port}  http://${Node1_IP}/data/data1 http://${Node2_IP}/data/data2 http://${Node3_IP}/data/data3 http://${Node4_IP}/data/data4 > /dev/null 2>&1 &

2.2.3 MINIO集群注意点

minio的集群所有节点的登录账户密码必须一致。

minio的集群节点数量推荐大于等于4

2.2.4 MINIO负载均衡

官方文档支持nginx,可参考我的另一篇Post not found: nginx负载均衡配置 关于nginx负载均衡的Blog

2.2.4.1 配置nginx分发端口

 server {
    listen       8089;
    server_name  www.dealthBook.com;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }
}

2.2.4.2 添加upstream

upstream minio_server {
	#1、轮询(默认选项,所有weight=1)
	#2、weight,执行轮询几率,weight与访问几率成正比
	#3、ip_hash,每个请求按照hash结果分配,这样其实是每个服务都有一个固定的值
	#4、least_conn,最少连接数负载均衡
    server ${IP1}:${PORT1};
    server ${IP2}:${PORT2};
    server ${IP3}:${PORT3};
    server ${IP4}:${PORT4};
}

2.2.4.3 添加minio的upstream名称

location /minio {
    proxy_set_header Host $http_host;
    proxy_pass http://minio_server;
}

2.2.4.4 最终配置文件布局

http{
  	...
    upstream minio_server{
		...
    }
    server{
        ...
       	location /minio{
            ...
     	}
    }
    
}

2.2.5 启动nginx及所有节点的minio

2.2.6 验证

2.2.6.1 验证各节点minio是否正常

进入 http://ip:port/minio

2.2.6.2 通过nginx进入minio查看分发是否正常,本文配置nginx的minio端口为8089

通过nginx进入minio http://ip:8089/minio

3. MinIO页面

3.1 新建桶(Bucket)及上传文件

MinIO-1.png

 上一篇
SPI机制 SPI机制
本blog的出现是为了能够分享个人所学的相关知识,检验自身学习成果。内容会和其他技术存在部分关联,如有任何描述错误或者说明有误的地方,还望各位大佬指出。 1. 什么是SPI1.1 SPI思想SPI的全名为Service Provider I
2020-07-01
下一篇 
Nginx-LoadBalance Nginx-LoadBalance
本文的出现是为了能够分享个人所学的相关知识,检验自身学习成果。内容会和其他技术存在部分关联,如有任何描述错误或者说明有误的地方,还望各位大佬指出。 1. 了解NginxNginx,高性能的HTTP和反向代理服务器。反向代理作为它的核心
2020-06-28
  目录