程序笔记   发布时间:2022-07-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了对象存储服务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 License MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, redis 或者 MySQL。

2. CentOS7更换成阿里云镜像

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

CentOS更换aliyun镜像站

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

3. 安装

3.1 下载

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

3.2 运行测试

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

安装启动后使用浏览器访问http://ip:port,默认端口为:9000,如果可以访问,则表示minio已经安装成功。账号和密码分别为:MINIO_ACCESS_KEY、MINIO_SECRET_KEY

4. 配置脚本执行文件

4.1 创建配置执行文件

创建可执行文件 minio.sh

@H_801_97@touch minio.sh

添加以下脚本内容:

@H_801_97@#!/bin/sh function 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'" #fi case $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 执行

@H_801_97@启动: 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命令即可,然后,你需要在所有其它节点运行同样的命令。

注意:

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

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

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

@H_801_97@export MINIO_ACCESS_KEY=minioadmin export MINIO_SECRET_KEY=minioadmin

2.2 启动分布式Minio实例

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

执行命令:

@H_801_97@./minio server http://192.168.199.140/data/minio/export1 http://192.168.199.140/data/minio/export2 http://192.168.199.141/data/minio/export1 http://192.168.199.141/data/minio/export2

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

2.3 配置成启动脚本

2.3.1 创建配置执行文件

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

@H_801_97@touch minio-cluster.sh

添加内容如下:

@H_801_97@#!/bin/sh export MINIO_ACCESS_KEY=minioadmin export MINIO_SECRET_KEY=minioadmin #nohup /opt/minio/minio server http://192.168.199.140/data/minio/export1 # http://192.168.199.140/data/minio/export2 # http://192.168.199.141/data/minio/export1 # http://192.168.199.141/data/minio/export2 # > /dev/null 2>&1 & nohup /opt/minio/minio server http://192.168.199.140/data/minio/export1 http://192.168.199.140/data/minio/export2 http://192.168.199.141/data/minio/export1 http://192.168.199.141/data/minio/export2 > /opt/minio/minio.log 2>&1 &

2.3.2 执行

@H_801_97@启动: 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纠删码的设计目标是为了性能和尽可能的使用硬件加速。

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

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

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

四、MinIO个人项目测试

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

大佬总结

以上是大佬教程为你收集整理的对象存储服务MinIO安装部署分布式及Spring Boot项目实现文件上传下载全部内容,希望文章能够帮你解决对象存储服务MinIO安装部署分布式及Spring Boot项目实现文件上传下载所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。