目录

1.概述

2.windows分布式部署

2.1单节点多磁盘

2.1.1.创建目录

2.1.2启动脚本

2.1.3测试

2.2.多节点

2.2.1目录结构

2.2.2脚本

2.2.3启动测试

2.2.4nginx负载均衡

2.2.5测试

3.linux分布式部署

3.1 单节点部署多磁盘

3.2 多节点部署

3.2.1 部署脚本

3.2.2 部署注意点

3.2.3 使用 nginx 负载均衡


gitee:https://gitee.com/pythonloser/springboot-minio/tree/master

一.minio安装与使用:一.minio安装与使用_xixiyuguang的博客-CSDN博客

二.minio整合springboot、文件上传下载、增删改查bucket和object:二.minio整合springboot、文件上传下载、增删改查bucket和object_xixiyuguang的博客-CSDN博客_minio修改bucket名称

三.minio 的分布式部署、单节点多磁盘、多节点模式:三.minio 的分布式部署、单节点多磁盘、多节点模式_xixiyuguang的博客-CSDN博客_minio多节点

四.minio前端获取签名地址直传minio文件服务器(前端直传):四.minio前端获取签名地址直传minio文件服务器(前端直传)_xixiyuguang的博客-CSDN博客_minio 直传

1.概述

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

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

数据保护

分布式Minio采用 纠删码来防范多个节点宕机和位衰减bit rot。

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

高可用

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

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

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

一致性

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

2.windows分布式部署

2.1单节点多磁盘

2.1.1.创建目录

四个目录模拟四个不同的磁盘。

2.1.2启动脚本

set MINIO_ROOT_USER=admin

set MINIO_ROOT_PASSWORD=12345678

minio.exe server   --console-address "127.0.0.1:9000"  --address "127.0.0.1:9090"   D:\minio\oneNodeManyData\data1 D:\minio\oneNodeManyData\data2 D:\minio\oneNodeManyData\data3 D:\minio\oneNodeManyData\data4

脚本解释:

首先设置临时环境变量,指定登录账号密码

--console-address "127.0.0.1:9000":代表管理页面的ip和端口

--address "127.0.0.1:9090":代表接口的ip和端口

然后跟四个目录

2.1.3测试

创建bucket,上传文件,发现data1、data2中均包含文件夹和文件

查看文件夹中的文件,发现是meta数据,

2.2.多节点

2.2.1目录结构

2.2.2脚本

解释:端口不同,数据盘目录均一致,需要执行四次

9001服务,api9091

set MINIO_ROOT_USER=admin

set MINIO_ROOT_PASSWORD=12345678

minio.exe server   --console-address "127.0.0.1:9001"  --address "127.0.0.1:9091"   ^

http://127.0.0.1:9091/D:/minio/manyNodeManyData/data1  ^

http://127.0.0.1:9092/D:/minio/manyNodeManyData/data2 ^

http://127.0.0.1:9093/D:/minio/manyNodeManyData/data3 ^

http://127.0.0.1:9094/D:/minio/manyNodeManyData/data4

9002服务,api9092

set MINIO_ROOT_USER=admin

set MINIO_ROOT_PASSWORD=12345678

minio.exe server   --console-address "127.0.0.1:9002"  --address "127.0.0.1:9092"   ^

http://127.0.0.1:9091/D:/minio/manyNodeManyData/data1  ^

http://127.0.0.1:9092/D:/minio/manyNodeManyData/data2 ^

http://127.0.0.1:9093/D:/minio/manyNodeManyData/data3 ^

http://127.0.0.1:9094/D:/minio/manyNodeManyData/data4

9003服务,api9093

set MINIO_ROOT_USER=admin

set MINIO_ROOT_PASSWORD=12345678

minio.exe server   --console-address "127.0.0.1:9003"  --address "127.0.0.1:9093"   ^

http://127.0.0.1:9091/D:/minio/manyNodeManyData/data1  ^

http://127.0.0.1:9092/D:/minio/manyNodeManyData/data2 ^

http://127.0.0.1:9093/D:/minio/manyNodeManyData/data3 ^

http://127.0.0.1:9094/D:/minio/manyNodeManyData/data4

9004服务,api9094

set MINIO_ROOT_USER=admin

set MINIO_ROOT_PASSWORD=12345678

minio.exe server   --console-address "127.0.0.1:9004"  --address "127.0.0.1:9094"   ^

http://127.0.0.1:9091/D:/minio/manyNodeManyData/data1  ^

http://127.0.0.1:9092/D:/minio/manyNodeManyData/data2 ^

http://127.0.0.1:9093/D:/minio/manyNodeManyData/data3 ^

http://127.0.0.1:9094/D:/minio/manyNodeManyData/data4

2.2.3启动测试

2.2.4nginx负载均衡

前面单独对每个节点进行访问显然不合理,通过使用 nginx 代理,进行负载均衡则很有必要。简单的配置如下:

server{

listen       8888;

server_name  127.0.0.1;

ignore_invalid_headers off;

client_max_body_size 0;

proxy_buffering off;

location / {

proxy_set_header   X-Real-IP $remote_addr;

proxy_set_header   X-Forwarded-Host  $host:$server_port;

proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header   X-Forwarded-Proto  $http_x_forwarded_proto;

proxy_set_header   Host $http_host;

proxy_connect_timeout 300;

proxy_http_version 1.1;

chunked_transfer_encoding off;

proxy_ignore_client_abort on;

proxy_pass http://http_minio;

}

}

2.2.5测试

通过日志可以发现,轮循访问四个不同的节点

3.linux分布式部署

转载:MinIO 的分布式部署 - Mason技术记录 - 博客园

3.1 单节点部署多磁盘

在启动 MinIO 时,若传入参数是多个目录,则会以纠删码的形式运行,即具备高可靠性意义。即在一个服务器(单节点)上对,多个磁盘上运行 MinIO。

运行命令也很简单,参数传入多个目录即可:

MINIO_ACCESS_KEY=${ACCESS_KEY} MINIO_SECRET_KEY=${SECRET_KEY} nohup ${MINIO_HOME}/minio server --address "${MINIO_HOST}:${MINIO_PORT}" /opt/min-data1 /opt/min-data2 /opt/min-data3 /opt/min-data4 > ${MINIO_LOGFILE} 2>&1 &

注意替换命令中的变更,运行后输出信息如下:

可见 MinIO 会创建一个1个 set,set 中有4个 drive ,其中它会提示一个警告,提示一个节点的 set 中存在多于2个的drive,如果节点挂掉,则数据都不可用了,这与 EC 码的规则一致。

3.2 多节点部署

3.2.1 部署脚本

为了防止单点故障,分布式存储自然是需要多节点部署,以达到高可靠和高可用的能力。MinIO 对于多节点的部署,也是在启动时通过指定有 Host 和端口的目录地址,即可实现。下面在单台机器上,通过不同的端口模拟在4台机器节点上运行,存储目录依然是 min-data14,而对应的端口是90019004。脚本如下:

RUNNING_USER=root
MINIO_HOME=/opt/minio
MINIO_HOST=192.168.222.10
#accesskey and secretkey
ACCESS_KEY=minio
SECRET_KEY=minio123for i in {01..04}; doSTART_CMD="MINIO_ACCESS_KEY=${ACCESS_KEY} MINIO_SECRET_KEY=${SECRET_KEY} nohup ${MINIO_HOME}/minio  server --address "${MINIO_HOST}:90${i}" http://${MINIO_HOST}:9001/opt/min-data1 http://${MINIO_HOST}:9002/opt/min-data2 http://${MINIO_HOST}:9003/opt/min-data3 http://${MINIO_HOST}:9004/opt/min-data4 > ${MINIO_HOME}/minio-90${i}.log 2>&1 &"su - ${RUNNING_USER} -c "${START_CMD}"
done

本示例中,minio 的启动命令运行了4次,相当于在四台机器节点上都分别运行一个minio实例,从而模拟四个节点。运行结果如下:

查看进程ps -ef |grep minio

3.2.2 部署注意点

  • 所有运行分布式 MinIO 的节点需要具有相同的访问密钥和秘密密钥才能连接。建议在执行 MINIO 服务器命令之前,将访问密钥作为环境变量,MINIO access key 和 MINIO secret key 导出到所有节点上 。
  • Minio 创建4到16个驱动器的擦除编码集。
  • Minio 选择最大的 EC 集大小,该集大小除以给定的驱动器总数。 例如,8个驱动器将用作一个大小为8的 EC 集,而不是两个大小为4的 EC 集 。
  • 建议所有运行分布式 MinIO 设置的节点都是同构的,即相同的操作系统、相同数量的磁盘和相同的网络互连 。
  • 运行分布式 MinIO 实例的服务器时间差不应超过15分钟。

运行起来后,使用 http://${MINIO_HOST}:9001http://${MINIO_HOST}:9004 均可以访问到 MinIO 的使用界面。

3.2.3 使用 nginx 负载均衡

前面单独对每个节点进行访问显然不合理,通过使用 nginx 代理,进行负载均衡则很有必要。简单的配置如下:

upstream http_minio {server 192.168.222.10:9001;server 192.168.222.10:9002;server 192.168.222.10:9003;server 192.168.222.10:9004;
}server{listen       8888;server_name  192.168.222.10;ignore_invalid_headers off;client_max_body_size 0;proxy_buffering off;location / {proxy_set_header   X-Real-IP $remote_addr;proxy_set_header   X-Forwarded-Host  $host:$server_port;proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header   X-Forwarded-Proto  $http_x_forwarded_proto;proxy_set_header   Host $http_host;proxy_connect_timeout 300;proxy_http_version 1.1;chunked_transfer_encoding off;proxy_ignore_client_abort on;proxy_pass http://http_minio;}
}

其中主要是 upstream 及 proxy_pass 的配置。如此,即可使用http://${MINIO_HOST}:8888 进行访问。

三.minio 的分布式部署、单节点多磁盘、多节点模式相关推荐

  1. hp unix oracle rac节点一磁盘损坏,节点修复

    oracle 10g rac用的service guide 作为集群基础的软件 相关目录信息: ORA_CRS_HOME=$ORACLE_BASE/10.2/crs Ocr信息: /dev/vgdat ...

  2. hpunix oracle rac,hp unix oracle rac节点一磁盘损坏,节点修复

    oracle 10g rac用的service guide 作为集群基础的软件 相关目录信息: ORA_CRS_HOME=$ORACLE_BASE/10.2/crs Ocr信息: /dev/vgdat ...

  3. 一致性哈希 php redis,使用一致性哈希实现Redis分布式部署

    像Memcache以及其它一些内存K/V数据库一样,Redis本身不提供分布式支持,所以在部署多台Redis服务器时,就需要解决如何把数据分散到各个服务器的问题,并且在服务器数量变化时,能做到最大程度 ...

  4. 离线使用OBD本地部署单节点OceanBase

    离线使用OBD本地部署单副本单节点社区版OceanBase 一:检查软硬件的要求 软件资源介绍: OceanBase 数据库是一个分布式集群产品,在生产环境中至少要求三台机器,学习环境可以部署单机版本 ...

  5. 【重要】kubernetes二进制部署单master节点

    目录 1.安装要求 2.安装规划 3.1.分步骤操作 3.2.一键执行脚本 4.1.安装cfssl证书生成工具 4.2.创建认证中心(根CA中心) 4.3.使用自签CA签发Etcd证书 4.4.部署E ...

  6. kubernetes二进制部署单master节点

    目录 1.安装要求 2.安装规划 3.1.分步骤操作 3.2.一键执行脚本 4.1.安装cfssl证书生成工具 4.2.创建认证中心(根CA中心) 4.3.使用自签CA签发Etcd证书 4.4.部署E ...

  7. minio单点及分布式部署

    minio官网 minio 单节点部署 192.168.3.202 cd /opt/minio wget https://dl.min.io/server/minio/release/linux-am ...

  8. 【MinIO】MinIO分布式部署

    MinIO分布式部署 MinIO简介 MinIO是一款高性能的分布式对象存储服务器,专为大规模私有云基础框架而设计. MinIO是一个分布式对象存储服务器,Amazon S3兼容,用Go编写,在Apa ...

  9. Apache Spark探秘:三种分布式部署方式比较

    2019独角兽企业重金招聘Python工程师标准>>> 目前Apache Spark支持三种分布式部署方式,分别是standalone.spark on mesos和 spark o ...

  10. spark on yarn 完全分布式_Apache Spark探秘:三种分布式部署方式比较

    [本文详细介绍了Spark的三种部署方式及其比较,欢迎读者朋友们阅读.转发和收藏!] 目前Apache Spark支持三种分布式部署方式,分别是 standalone . spark on mesos ...

最新文章

  1. 在闲鱼传疯了,某大厂P8面试题库泄漏!
  2. 高仿书旗小说 Flutter版,支持iOS、Android
  3. c语言变量在头文件定义变量吗,在头文件C中声明变量
  4. 图解VC++开发ActiveX控件C#调用
  5. HAProxy的日志配置以及ACL规则实现负载均衡
  6. 一个极其高效的虚拟机内存冗余消除机制:UKSM
  7. 解决方案_环网柜监测解决方案
  8. body 没有被撑开_父div没有被撑开,该怎么解决?_html/css_WEB-ITnose
  9. 如何使用CommitMonitor工具监控 SVN
  10. Python机器学习:逻辑回归算法以及多类分类
  11. 如何对物联网数据进行大数据分析
  12. 2018:视频标准混战的元年序幕
  13. 时装连连看,基于MindSpore实现FashionMNIST图像分类
  14. linux网络协议栈ip_rcv
  15. 手机怎么提高图片分辨率?手机怎么改照片分辨率dpi?
  16. 00后必看:如何在互联网就业寒冬和疫情的双面夹击下找到心仪工作
  17. 【嵌入式Linux应用开发】温湿度监控系统——绘制温湿度折线图
  18. 三国群英传霸业之王服务器维护,《三国群英传2网络版》掌上助手APP曝光,三国群英传霸业之王...
  19. 微信小程序scroll-into-view实现页面定位
  20. [转载]我的老师唐圭璋先生(王兆鹏)_RWERWERWE_96921_新浪博客

热门文章

  1. azure mysql on vnet_管理 VNet 终结点 - Azure CLI - Azure Database for MySQL | Microsoft Docs
  2. GOP和帧率、码率的关系
  3. IOS 设备越狱原理
  4. Cinnamon 任务栏网速
  5. 统计学的Python实现-015:调和平均数
  6. 制作u盘winpe启动盘_U启大师U盘启动盘制作教程(装机版)
  7. 码农枪击了 4 名同事后被警方击毙!后附“程序员保命指南”
  8. [MATLAB]代数/常微分求解(solve/dsolve)
  9. unity入门——实现一个简单的跑酷游戏(准备工作)
  10. 【黑帽SEO案例分析】10天爱站从0到6