2021-04-20

对象存储服务MinIO安装部署分布式及Spring Boot项目实现文件上传下载

目录
  • 一、MinIO快速入门
    • 1. MinIO简介
    • 2. CentOS7更换成阿里云镜像
    • 3. 安装
      • 3.1 下载
      • 3.2 运行测试
    • 4. 配置脚本执行文件
      • 4.1 创建配置执行文件
      • 4.2 执行
  • 二、分布式MinIO快速入门
    • 1. 分布式MinIO快速入门
      • 1.1 分布式Minio有什么好处?
      • 1.2 数据保护
      • 1.3 高可用
      • 1.4 一致性
    • 2. 配置运行分布式Minio
      • 2.1 将access秘钥和secret秘钥export成环境变量
      • 2.2 启动分布式Minio实例
      • 2.3 配置成启动脚本
        • 2.3.1 创建配置执行文件
        • 2.3.2 执行
  • 三、纠删码(erasure code)
    • 1. 纠删码(erasure code)
      • 1.1 什么是纠删码erasure code?
      • 1.2 为什么纠删码有用?
      • 1.3 什么是位衰减bit rot保护?
  • 四、MinIO个人项目测试

一、MinIO快速入门

1. MinIO简介

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

MinIO 是一个基于Apache LicenseMinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

2. CentOS7更换成阿里云镜像

image CentOS更换aliyun镜像站

https://www.cnblogs.com/lishen2021/p/14680564.html

3. 安装

3.1 下载

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

3.2 运行测试

修改文件执行权限: chmod +x minio运行: MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin ./minio server /data/minio/standalone

安装启动后使用浏览器访 id="4-配置脚本执行文件">4. 配置脚本执行文件

4.1 创建配置执行文件

创建可执行文件 minio.sh

touch minio.sh

添加以下脚本内容:

#!/bin/shfunction start() { export MINIO_ACCESS_KEY=minioadmin export MINIO_SECRET_KEY=2020_minio@admin nohup /home/minio/minio server /home/minio/data > /home/minio/logs/minio.log 2>&1 &}NUM=`ps -C "minio" --no-header | wc -l`ID=$(ps -ef | grep "minio" | grep -v "grep" | grep -v "sh" | awk '{print $2}')#if [ "start" = $1 ]; then# if [ 0 -eq $NUM ]; then#  start# fi#elif [ "restart" = $1 ]; then# if [ 0 -ne $NUM ]; then#  kill -9 $ID | start# else#  start# fi#elif [ "stop" = $1 ]; then# if [ 0 -ne $NUM ]; then#  kill -9 $ID# fi#else# echo "No sush command '$1'"#ficase $1 in "start")  if [ 0 -eq $NUM ]; then   start  fi  ;; "restart")  if [ 0 -ne $NUM ]; then   kill -9 $ID | start  else   start  fi  ;; "stop")  if [ 0 -ne $NUM ]; then   kill -9 $ID  fi  ;; *)  echo "No sush command '$1'"  ;;esac

脚本中使用 if 或 case 都可以

4.2 执行

启动: sh minio.sh start输出执行信息方式启动: sh -x minio.sh start重启: sh minio.sh restart停止服务: sh minio.sh stop

二、分布式MinIO快速入门

1. 分布式MinIO快速入门

分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。

1.1 分布式Minio有什么好处?

在大数据领域,通常的设计理念都是无中心和分布式。Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。

1.2 数据保护

分布式Minio采用 纠删码 来防范多个节点宕机和位衰减bit rot。分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。

1.3 高可用

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

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

注意:只要遵守分布式Minio的限制,你可以组合不同的节点和每个节点几块硬盘。比如,你可以使用2个节点,每个节点4块硬盘,也可以使用4个节点,每个节点两块硬盘,诸如此类。

1.4 一致性

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

2. 配置运行分布式Minio

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

注意:

1. 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量。2. 分布式Minio使用的磁盘里必须是干净的,里面没有数据。3. 分布式Minio里的节点时间差不能超过3秒,你可以使用NTP来保证时间一致。

2.1 将access秘钥和secret秘钥export成环境变量

注:需要在每个节点上都运行

export MINIO_ACCESS_KEY=minioadminexport MINIO_SECRET_KEY=minioadmin

2.2 启动分布式Minio实例

配置:2个节点,每个节点2块盘。

执行命令:

./minio server id="23-配置成启动脚本">2.3 配置成启动脚本

2.3.1 创建配置执行文件

创建可执行文件 minio-cluster.sh

touch minio-cluster.sh

添加内容如下:

#!/bin/shexport MINIO_ACCESS_KEY=minioadminexport MINIO_SECRET_KEY=minioadmin#nohup /opt/minio/minio server \#        \#        \#        \#  > /dev/null 2>&1 &nohup /opt/minio/minio server \        \        \        \  > /opt/minio/minio.log 2>&1 &

2.3.2 执行

启动: sh minio-cluster.sh输出执行信息方式启动: sh -x minio-cluster.sh

三、纠删码(erasure code)

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

1. 纠删码(erasure code)

1.1 什么是纠删码erasure code?

纠删码是一种恢复丢失和损坏数据的数学算法, Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。 这就意味着如果是12块盘,一个对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复,是不是很NB,感兴趣的同学请翻墙google。

1.2 为什么纠删码有用?

纠删码的工作原理和RAID或者复制不同,像RAID6可以在损失两块盘的情况下不丢数据,而Minio纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且Minio纠删码是作用在对象级别,可以一次恢复一个对象,而RAID是作用在卷级别,数据恢复时间很长。 Minio对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复。Minio纠删码的设计目标是为了性能和尽可能的使用硬件加速。

image

1.3 什么是位衰减bit rot保护?

位衰减又被称为数据腐化Data Rot、无声数据损坏Silent Data Corruption,是目前硬盘数据的一种严重数据丢失问题。硬盘上的数据可能会神不知鬼不觉就损坏了,也没有什么错误日志。正所谓明枪易躲,暗箭难防,这种背地里犯的错比硬盘直接咔咔宕了还危险。 不过不用怕,Minio纠删码采用了高速 HighwayHash 基于哈希的校验和来防范位衰减。

四、MinIO个人项目测试

  • Gitee项目地址
  • GitHub项目地址








原文转载:http://www.shaoqun.com/a/696752.html

跨境电商:https://www.ikjzd.com/

heap:https://www.ikjzd.com/w/2012

blibli:https://www.ikjzd.com/w/1676


目录一、MinIO快速入门1.MinIO简介2.CentOS7更换成阿里云镜像3.安装3.1下载3.2运行测试4.配置脚本执行文件4.1创建配置执行文件4.2执行二、分布式MinIO快速入门1.分布式MinIO快速入门1.1分布式Minio有什么好处?1.2数据保护1.3高可用1.4一致性2.配置运行分布式Minio2.1将access秘钥和secret秘钥export成环境变量2.2启动分布式M
wangwei:https://www.ikjzd.com/w/1744
c88是什么:https://www.ikjzd.com/w/1017.html
extra:https://www.ikjzd.com/w/1736
20190128-20190203亚马逊选品推荐数据:https://www.ikjzd.com/home/16885
Thumbsnap:https://www.ikjzd.com/w/748
脱欧之下,欧盟英国外观设计怎么办?这4点建议请查收…… :https://www.ikjzd.com/home/106415

No comments:

Post a Comment