分布式文件系统实战,使用MinIO构建分布式文件系统!

2022-12-31 0 379

随着文档统计数据的愈来愈多,传统的文档储存方式透过tomcat或nginx并行计算的动态天然资源文档在单个的伺服器结点内已经无法满足用户控制系统市场需求,也有利于文档的管理工作和保护,这就须要一个控制系统来管理工作点对点结点上的文件统计数据,这就是sysfs。

一、甚么是sysfs?

1.1 甚么是sysfs

sysfs(Distributed File System,DFS)是指文档控制系统管理工作的力学储存天然资源不一定直接相连在邻近地区结点上,而是透过计算机系统互联网与结点(可简单的认知为两台计算机系统)相相连;或者若干个不同的方法论GRUB或blo女团在一起而形成的完备的有层级的文档控制系统。DFS为原产在互联网上任一边线的天然资源提供一个方法论上的树型文档控制系统结构,从而使使用者出访原产在互联网上的共享文档更加方便快捷。

1.3 sysfs的竞争优势

可扩充:原产式控制系统储存控制系统能扩充到上千甚至上千个这样的软件产业大小,并且控制系统的整体操控性能非线性增长。

扩充性:在原产式控制系统文档控制系统中,扩充性包涵三层,其一整个文档控制系统的易用性,并有统计数据的完备和连续性

低生产成本:原产式控制系统储存控制系统的手动纠错和手动使用者端容许在生产成本较高伺服器上构筑原产式控制系统储存控制系统。此外,非线性扩充性还能够减少和减少伺服器的生产成本。

灵巧性储存: 能根据业务须要灵巧地减少或削减统计数据储存以及校订储存池内的天然资源,而不须要受阻控制系统运转

1.4 sysfs的应用领域情景

sysfs广泛适用于于互联网、金融等海量统计数据非形式化统计数据的存储市场需求:

B2C中文网站:海量统计数据商品相片

音频网络平台:音频、相片文档储存

记事本应用领域:文档储存

SNS中文网站:海量统计数据音频、相片

二、sysfs与传统文档控制系统对比

分布式文件系统实战,使用MinIO构建分布式文件系统!

传统的互联网储存控制系统采用集中的伺服器存放所有统计数据,到一定程度伺服器会成为控制系统操控性的瓶颈,也是可靠性和安全性的焦点,不能满足用户大规模储存应用领域的须要。

sysfs是将文档分散的储存在多台伺服器上,采用可扩充的控制系统结构,利用多台伺服器分担负荷,利用边线伺服器定位储存信息。这不但提高了控制系统的可靠性、易用性和存取效率,还易于扩充,避免单点故障。

使用sysfs能解决如下几点问题:

海量统计数据文档统计数据储存

文档统计数据高可用(冗余备份)

读写操控性和负载均衡

以上三点都是传统文档控制系统无法达到的,这也是我们为甚么要使用sysfs的原因。

目前,可用于文档储存的互联网服务选择有很多,其中最常用的sysfs有:DFS、FastDfs、MinIO、Ceph等。接下来我们就来详细介绍MinIO并透过MinIO搭建原产式控制系统储存控制系统。

三、MinIO简介

3.1 甚么是MinIO?

是在 通用公共许可证 v3.0 下发布的高操控性对象储存。它与 Amazon S3 云储存服务 API 兼容。使用 MinIO 为机器学习、分析和应用领域程序统计数据工作负载构筑高操控性基础架构。

官方文档:https//docs.min.io/

中文文档:http://docs.minio.org.cn/docs/

GitHub 地址:https://github.com/minio/minio

3.2 MinIO的特点

统计数据保护——原产式控制系统 MinIO采用 纠删码来防范多个结点宕机和位衰减 bit rot。原产式控制系统 MinIO至少须要 4 个硬盘,使用原产式控制系统 MinIO手动引入了纠删码功能。

高可用——单机MinIO服务存在单点故障风险,相反,如果是一个有 N 块硬盘的原产式控制系统 MinIO,只要有 N/2 硬盘在线,你的统计数据就是安全的。不过你须要至少有 N/2+1 个硬盘来创建新的对象。

连续性——MinIO在原产式控制系统和单机模式下,所有读写操作都严格遵守 read-after-write 连续性模型。

3.3 MinIO的优点

部署简单,一个二进制文档(minio)即是一切,还能支持各种网络平台;

支持海量统计数据储存,能按 zone 扩充,支持单个对象最大 5TB;

低冗余且磁盘损坏高容忍,标准且最高的统计数据冗余系数为 2(即储存一个 1M 的数据对象,实际占用磁盘空间为 2M)。但在任一 n/2 块 disk 损坏的情况下依然能读出统计数据(n 为一个纠删码集合中的 disk 数量)。并且这种损坏恢复是基于单个对象的,而不是基于整个储存卷的;

读写操控性优异,MinIO号称是目前速度最快的对象储存伺服器。在标准硬件上,对象储存的读/写速度最高能高达183 GB/s和171 GB/s。

3.4 MinIO 基础概念

——Simple Storage Service,简单储存服务,这个概念是 Amazon 在 2006 年推出的,就是从那个时候诞生的。S3 提供了一个简单 Web 服务接口,可用于随时在 Web 上的任何边线储存和检索任何数量的统计数据;

——储存到 MinIO 的基本对象,如文档、字节流等各种类型的统计数据;——用来储存 Object 的方法论空间。每个 Bucket 之间的统计数据是相互隔离的;

——部署 MinIO设置的磁盘,MinIO 中所有的对象统计数据都会储存在 Drive 里;

——一组 Drive 的集合,原产式控制系统部署根据软件产业规模手动划分一个或多个 Set ,每个 Set 中的 Drive 原产在不同边线。

一个对象储存在一个 Set 上

一个软件产业划分为多个 Set

一个 Set 包涵的 Drive 数量是固定的,默认由控制系统根据软件产业规模手动计算得出

一个 SET 中的 Drive 尽可能原产在不同的结点上

Set /Drive 的关系

Set /Drive 这两个概念是 MinIO 里面最重要的两个概念,一个对象最终是储存在 Set 上面的。

Set 是另外一个概念,Set 是一组 Drive 的集合,图中,所有蓝色、橙色背景的 Drive(硬盘)的就组成了一个 Set。

3.5 甚么是纠删码(Erasure Code)?

前面我们介绍MinIO的时候提到过:Minio 采用纠删码来防范多个结点宕机或者故障,保证统计数据安全。那究竟甚么是纠删码呢?

纠删码(Erasure Code)简称 EC,它是一种恢复丢失和损坏统计数据的算法,也是一种编码技术。透过将统计数据分割成片段,把冗余统计数据块扩充、编码,并将其储存在不同的边线,比如磁盘、储存结点或者其它地理边线,实现统计数据的备份与安全。

其实,简单来说就是:纠删码可透过将 n 份原始统计数据,减少 m 份校验统计数据,并能透过 n+m 份中的任一 n 份原始统计数据,还原为原始统计数据。即如果有任一小于等于 m 份的校验统计数据失效,仍然能透过剩下的统计数据还原出来。

目前,纠删码技术在原产式控制系统储存控制系统中的应用领域主要有三类:阵列纠删码(Array Code: RAID5、RAID6 等)RS(Reed-Solomon)里德-所罗门类纠删码LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码

Minio 采用 Reed-Solomon code 将对象拆分成 N/2 统计数据和 N/2 奇偶校验块。在同一软件产业内,MinIO 自己会手动生成若干个纠删组(Set),用于原产存放桶统计数据。一个纠删组中的一定数量的磁盘发生的故障(故障磁盘的数量小于等于校验盘的数量),透过纠删码校验算法能恢复出正确的统计数据。

四、MinIO安装部署

4.1MinIO部署方式

MinIO支持多种部署方式:单主机单硬盘模式、单主机多硬盘模式、多主机多硬盘模式(也就是原产式控制系统)。下面介绍下这三种方式。

4.1.1 单主机,单硬盘模式

分布式文件系统实战,使用MinIO构建分布式文件系统!

如上图所示,此模式下MinIO 只在两台伺服器上搭建服务,且统计数据都存在单块磁盘上,该模式存在单点风险,主要用作开发、测试等使用

4.1.2 单主机,多硬盘模式

分布式文件系统实战,使用MinIO构建分布式文件系统!

如上图所示,该模式下MinIO 在两台服务器上搭建服务,但统计数据分散在多块(大于 4 块)磁盘上,提供了统计数据上的安全保障。

4.1.3 多主机、多硬盘模式(原产式控制系统)

分布式文件系统实战,使用MinIO构建分布式文件系统!

如上图所示,此模式是 MinIO 服务最常用的架构,透过共享一个 access_key 和 secret_key,在多台伺服器上搭建服务,且统计数据分散在多块(大于 4 块,无上限)磁盘上,提供了较为强大的统计数据冗余机制(Reed-Solomon 纠删码)。

4.2MinIO 原产式控制系统部署

4.2.1 环境准备

由于是MinIO原产式控制系统部署,准备了2台Linux虚拟机,Centos 7.5的操作控制系统。同时每台伺服器额外减少了2个磁盘。Nginx则是用于软件产业的负载均衡,也能使用etcd。

【温馨提示】磁盘大小必须>1G,这里我添加的是 4*1G 的盘。

4.2.2 搭建MinIO软件产业

1)创建安装目录

首先,在每台伺服器上创建minio的目录。

接下来进入到我们刚刚创建的minio目录,下载MinIO程序,具体命令如下所示:

minio的程序很简单,下载后就一个可执行文档。两台伺服器都要执行如下操作,当然也能两台伺服器上面执行,然后拷贝到另两台伺服器。

3)配置服务启动脚本

Minio 默认端口,在配置文档中加入–address “127.0.0.1:9029” 可更改端口。同时还有一些启动参数如下所示:

:使用者名,长度最小是 5 个字符;

:密码,密码不能设置过于简单,不然 minio 会启动失败,长度最小是 8 个字符;

:指定软件产业配置文档目录;

:api 的端口,默认是

:web 后台端口,默认随机;

编写启动脚本()

如上示例代码所示,我们的minio服务绑定主机192.168.1.102和端口9000,后台端口50000,配置MinIO服务的登录账号密码为:admin\12345678。此启动脚本同样须要复制到另外两台伺服器。

【温馨提示】脚本复制时 \ 后不要有空格,还有就是上面的目录是对应的一块磁盘,而非简单的在/mnt 目录下创建四个目录,要不然会报如下错误,看提示以为是 root 权限问题。

4)启动Minio软件产业

MinIO配置完成后,在两台测试伺服器上都执行该脚本,即以原产式控制系统的方式启动MINIO服务。

分布式文件系统实战,使用MinIO构建分布式文件系统!

软件产业启动成功后,接下来分别出访结点上的MinIO后台管理工作页面,两个结点都能出访http://192.168.78.101:50000/,http://192.168.78.102:50000/ 。账号密码:

以上,说明MinIO软件产业启动成功。

4.2.3 使用 nginx 负载均衡

上面我们部署好了MinIO软件产业,我们知道每个软件产业上的结点都能单独出访,虽然每个结点的统计数据都是一致的,但这样显然不合理。接下来我们透过使用 nginx 进行负载均衡。具体的的配置如下:

这里就不介绍如何安装Nginx了。不了解的同学能查看我之前关于Nginx的系列文章。

接下来,保存配置并重启Nginx服务,然后在浏览器中出访:http://192.168.78.101:50001/ 验证MinIO软件产业是否能出访。

最后

以上,我们就把原产式控制系统储存控制系统介绍完了,并且介绍了目前最流行的原产式控制系统对象储存MinIO。接下来还会介绍如何在项目中整合MinIO服务。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务