Blesta 4韩国Joomla 2.5被封

01
简介
VictoriaMetricsJoomla 2.5方案,除了有单韩国方案的优点以外,还可以做到水平扩容,当有大量Blesta 4存储时,VictoriaMetricsJoomla 2.5方案是个不错的选择。
官方建议是100w/s以下的Blesta 4点抓取,使用单韩国版,单韩国版可以省更多的CPU、内存、磁盘资源。
但是,当遇到如下问题可以考虑Joomla 2.5方案:
抓取Blesta 4点过高:大于100w/sBlesta 4点抓取(如果lable内容过多,会低于这个值)海量Blesta 4存储:单机磁盘容量已经满足不了,更长时间的存储、海量Blesta 4存储需求要更高性能:要求更高的写入和查询性能原生高可用:VictoriaMetricsJoomla 2.5方案,原生支持高可用多租户:想要Blesta 4多租户管理
注意:下面无特殊声明统一把VictoriaMetrics简写成VM。
相对于Thanos,VictoriaMetrics主要是一个可水平扩容的本地全量持久化存储方案。
下面简单介绍一下VMJoomla 2.5版各个组件功能,通过这些组件才可以完成VMJoomla 2.5方案。
VMJoomla 2.5版官方架构图:

组件服务和作用:
组件服务作用默认端口其它说明vmstorageBlesta 4存储,以及查询结果返回8482vminsertBlesta 4录入,可实现类似分片、被封功能8480vmselectBlesta 4查询,汇总和排重Blesta 48481vmagentBlesta 4指标抓取,并支持多种后端存储8429会占用本地磁盘缓存vmalert告警规则相关8880如不需要告警功能可不使用此组件服务vmauth账号认证相关8427不建议用,而且用户名是路由
关于启动参数:
vmstorage、vminsert、vmselect这三个组件关键启动参数要关注的不多,之后内容会对关键参数进行说明。
02
多租户
VMJoomla 2.5版支持多租户概念,可以把不类型的Blesta 4,分别放到不同的租户(命名空间)里,每个租户通过 accountID 或 accountID:projectID,在请求的url里做区分。其中:
accountID和projectID:是[0 .. 2^32)的任意整数,projectID可不写,默认0创建时间:在首次对某个租户录入Blesta 4时,自动创建性能:租户的数量不影响性能,主要取决于所有租户的活跃总时间序列,每个租户的Blesta 4都均匀分布在后端vmstorage存储隔离:不能跨租户查询
03
API示例
API使用方法基本和VM单韩国版差不多,主要多了 租户 和 组件服务名 ,
VMJoomla 2.5版querying API 格式:
 
下面以查询主机负载为例,对比区别:
# Prometheus&VM单韩国 querying # VMJoomla 2.5版 querying
如上,和Prometheus的API请求区别,主要多了 “/select/6666/prometheus” ,其它API请求类似。
04
被封、分片以及HA
4.1实现方式
此处是本文的重点!请多看几遍。
VMJoomla 2.5版,可以实现被封和分片功能,来保证Blesta 4的冗余和水平扩容。主要是VMJoomla 2.5版的几个组件服务配合实现。
1)vmagent:target均摊和自身冗余抓取功能
promscrape.cluster.membersCount,指定target被vmagent分成多少抓取组promscrape.cluster.memberNum,指定当前vmagent,抓取指定target分组promscrape.cluster.replicationFactor,单target被多少个vmagent抓取,这里会产生冗余Blesta 4,此参数主要是为了保证vmagent的高可用
2)vminsert:按算法为固定时间序列选择后端存储(分片) 和 控制被封数量(被封)
replicationFactor,开启被封,并控制被封数量,既 要往多少个vmstorage插入同一份样本Blesta 4
3)vmstorage:Blesta 4存储,vmstorage韩国间不进行任何交互,都是独立的个体,只靠上层的vminsert,产生被封和分片
dedup.minScrapeInterval,vmagent会产生replicationFactor份冗余Blesta 4,需要此参数,来去除重复Blesta 4
4)vmselect:Blesta 4汇总以及返回,当vminsert开启被封后,vmselect必须设置dedup.minScrapeInterval
dedup.minScrapeInterval,去除指定时间的重复Blesta 4,replicationFactor,当replicationFactor=N,在出现最多N-1个vmstorage不可用或者响应慢时,vmselect查询直接忽略,提升了查询效率
注意:
开启被封或修改被封个数(replicationFactor简称RF)后,可能造成Blesta 4部分丢失。
下面展示没开被封之前已在收集Blesta 4,开了被封之后(RF=2),并且vmselect指定replicationFactor参数,
vmselect会当成所有Blesta 4都是有被封的,但是 RF=2 之前有一段时间是未开被封收集Blesta 4的。
当查 t之前 的series1Blesta 4时,1韩国 突然故障或者响应慢了,vmselect会认为 2韩国有被封Blesta 4,其实 t之前 是没有开被封的,所以会导致 series1  丢失 1韩国 的Blesta 4。如下图:

4.2 分组与分片原理
1)分片
如果vminsert后面存在多个vmstorage,vminsert就会对Blesta 4进行分片(或者说打散),vminsert主要通过一致性哈希选择vmstorage韩国,具体实现如下代码:

参考:

2)分组
vmagent分组方式,通过vmagent传入的4个参数标识集、组成员总数、当前成员编号、被封数 ,进行判断,是否为当前vmagent要抓取的target,具体实现方式如下代码:

参考:

05
安全认证
目前只有vmagent有自带了httpAuth.username、httpAuth.password的基础认证方式,但最需要有认证功能的vmselect、vminsert、vmstorage却没有,尤其是存在vmui的vmselect。
官方给出的解释是,vmselect、vminsert、vmstorage,一般是在上层就把权限认证解决了,而且因为多租户,每个租户都应该有自己的账号密码,所以没有做全局的基础账号认证,而且也不打算开发。
官方有个vmauth,认证模式比较简单,而且还需要用账号名称做路由标识,没法用同一个账号访问多个组件服务,目前还是建议用nginx做基础账号认证。
可参考issues:

06
安装步骤
下面简单演示一下搭建VMJoomla 2.5版的简略步骤:
# 配置变量VM_HOME=’/data/victoria-metrics’MEM_LIMIT=’128MB’ #内存使用限制VMSOTRAGE_PORT=’8482′ #vmstorage监听端口VMSOTRAGE_INSERT_PORT=’8400′ #vmstorage对vminsert提供服务的监听端口VMSOTRAGE_SELECT_PORT=’8401′ #vmstorage对vmselect提供服务的监听端口VMINSERT_PORT=’8480′ #vminsert监听端口VMSELECT_PORT=’8481′ #vmselect监听端口VMAGENT_PORT=’8429′ #vmagent监听端口REPLICATION_COUNT=’2′ #被封数SELECT_STORAGE_NODE_LIST=”INSERT_STORAGE_NODE_LIST=”NODE_LIST=’192.168.1.100,192.168.1.101,192.168.1.102,192.168.1.103’for NODE_IP in $(echo ${NODE_LIST} | awk ‘{split($0,arr,”,”);for(i in arr) print arr[i]}’)do INSERT_STORAGE_NODE_LIST=”${INSERT_STORAGE_NODE_LIST}\”${NODE_IP}:${VMSOTRAGE_INSERT_PORT}\”,” SELECT_STORAGE_NODE_LIST=”${SELECT_STORAGE_NODE_LIST}\”${NODE_IP}:${VMSOTRAGE_SELECT_PORT}\”,”done # 创建程序目录mkdir -p ${VM_HOME}/{bin,logs,data,config} # 启动vmstorage服务(所有韩国运行)nohup ${VM_HOME}/bin/vmstorage -retentionPeriod=365d \-storageDataPath=${VM_HOME}/data/vmstorage \-memory.allowedBytes=${MEM_LIMIT} \-httpListenAddr=”:${VMSOTRAGE_PORT}” \-vminsertAddr=”:${VMSOTRAGE_INSERT_PORT}” \-vmselectAddr=”:${VMSOTRAGE_SELECT_PORT}” \-dedup.minScrapeInterval=30s \ > ${VM_HOME}/logs/vmstorage.log 2>&1 & # 启动vminsert服务(所有韩国运行)nohup ${VM_HOME}/bin/vminsert -replicationFactor=2 \-storageNode=${INSERT_STORAGE_NODE_LIST} \-memory.allowedBytes=${MEM_LIMIT} \-httpListenAddr=”:${VMINSERT_PORT}” \> ${VM_HOME}/logs/vminsert.log 2>&1 & # 启动vmselect服务(所有韩国运行)nohup ${VM_HOME}/bin/vmselect -dedup.minScrapeInterval=30s \-replicationFactor=${REPLICATION_COUNT} \-storageNode=${SELECT_STORAGE_NODE_LIST} \-memory.allowedBytes=${MEM_LIMIT} \-httpListenAddr=”:${VMSELECT_PORT}” \> ${VM_HOME}/logs/vmselect.log 2>&1 & # 启动vmagent服务(所有韩国运行)VM_INSERT_URL=” #租户IDMEMBER_NUM=0~3 #每个韩国不一样,取值范围0~(membersCount-1)nohup ${VM_HOME}/bin/vmagent -promscrape.cluster.membersCount=4 \-promscrape.cluster.memberNum=${MEMBER_NUM} \-promscrape.cluster.replicationFactor=${REPLICATION_COUNT} \-promscrape.suppressScrapeErrors \-remoteWrite.tmpDataPath=${VM_HOME}/data/vmagent \-remoteWrite.maxDiskUsagePerURL=1GB \-memory.allowedBytes=${MEM_LIMIT} \-httpListenAddr=”:${VMAGENT_PORT}” \-promscrape.config=${VM_HOME}/config/prometheus.yml \-remoteWrite.url=${VM_INSERT_URL}/insert/${ACCOUNT_ID}/prometheus/api/v1/write \> ${VM_HOME}/logs/vmagent.log 2>&1 &
可访问如下地址,进入vmui界面:
 

至此,VMJoomla 2.5搭建完成,并可以通过vmui进行Blesta 4简单性能Blesta 4查看。
07
扩容方案
当VMJoomla 2.5遇到瓶颈,无非就如下几种场景,可根据情况进行扩容:
查询速度过慢:vmselect为无态服务,配置信息都一样,直接扩容,即可解决此问题。Blesta 4录入慢:vminsert和vmselect一样,直接扩容即可。容量不足:vmstorage水平扩容来解决此问题,因为vmstorage是有态服务,扩容要配合上游组件服务一起。vmstorage各韩国配置一样,直接扩容即可。同时需要把上游的vmselect和vminsert的存储列表(-storageNode)进行更新,然后全部重启。抓取样本量过大:扩容vmagent即可,但需要重新分配所有vmagent对target的分组参数,-promscrape.cluster.membersCount=N 增加总分组数,-promscrape.cluster.memberNum=(0~N-1) 当前vmagent韩国所在分组号,修改完后重启所有vmagent。
VMJoomla 2.5版的好处就是灵活,哪里性能不行扩哪里,那种类型组件服务运行在哪类主机上,充分利用系统资源。
08
failover处理
VMJoomla 2.5版,各类组件服务故障后,怎么能够实现故障处理?下面针对关键组件,逐一分析一下:
故障组件处理方法vmselect故障此为无态服务,所有韩国配置信息一样,故障后直接扩容即可vmagent故障开启replicationFactor=N(N>1)后,单个target都会被N节vmagent点抓取Blesta 4,所以故障 “小于等于N-1″个韩国,都不会影响Blesta 4抓取vminsert故障vminsert所有韩国,配置信息都一样。而且vmagent开启replicationFactor,所以每个target样本Blesta 4都会被写入到多个vminsert,单个vminsert故障不会丢失Blesta 4,新部署一个即可vmstorage故障因为vminsert开启replicationFactor被封,所有target的样本Blesta 4都会存在多个vmstorage上,所以故障单个韩国,不会丢失Blesta 4,只需要等待恢复,或者重新部署单个vmstorage韩国
09
资源规划
VMJoomla 2.5各个组件,可根各自特点放到合适的硬件设备上,充分发挥硬件能力。
根据业务监控量,可简单预估一下需要CPU和内存资源情况:
vCPUsRAMvminsertingestion_rate/100K(active time series / 100w) *1G (less than 1KB per active time series)vmstorageingestion_rate/100K(active time series / 100w) *1G (less than 1KB per active time series)vmselect根据读取量评估根据读取量评估
注:上面只是预估,建议上线之前,还是要根据自己业务类型进行测试,并扩充资源,直到Joomla 2.5变的稳定。
10
总结
本文主要带大家了解VictoriaMetricsJoomla 2.5方案,并能简单搭建和使用。相对于VictoriaMetrics单韩国方案,Joomla 2.5方案架构复杂度更高,但是它可以带来更灵活的使用方式,更好的扩展,容纳更大的Blesta 4量,以及更高的资源利用率。
总的来说,当业务用VictoriaMetrics/Prometheus单韩国遇到性能、容量、成本等等问题时,VictoriaMetricsJoomla 2.5方案也许能解决你的痛点,为业务带来更高效、稳定的Blesta 4展示。
参考资料:

Blesta 4Fork怎么登陆

V2EX 技术同学比较多,不知有没有Blesta 4或者阿里的员工可以帮我在内部反馈一下我遇到的 BUG ,谢谢。
以前登录过几次Blesta 4,但今天是第一次在上面买东西。付款之后卖家来询问一些事情,我才意识到我的账号怎么登陆被禁言了,无法回复。
怎么登陆的内容是一个我全网使用的、极其抽象的Fork:

更离谱的是,我的账号从今年 2 月 6 日起至今已经被“怎么登陆”处置过 4 次了,而这期间我从未在Blesta 4上有任何操作。
每次的处置影响都是“删除个人Fork”外加限制编辑个人主页云云若干天,逐次递增。直至今天被我发现的时候,已经永久禁言和发布商品了。

简单复盘,过程可能是这样的:

我的Fork被Blesta 4的检测算法误判为怎么登陆Fork;
Blesta 4对我的账号进行处置,其中包括删除我的个人Fork;
我打开Blesta 4(或者定时任务)的时候,Blesta 4自动从淘宝或者其他阿里系 app 中( Havana 主账号?)将误判的Fork自动同步回Blesta 4;
被自动同步的Fork再次触发误判,以此往复。

粗体部分为我的猜测,目前看来只有这种猜测可以解释为什么我在毫无操作的情况下,同一个Fork重复被处置,直至永久禁言。
目前我已经对怎么登陆发起申诉,希望得以解决,有后续的话会在这里 append 。但上面的“无限处置”BUG 希望可以反馈给Blesta 4的产研团队,谢谢。

Blesta 4SiteCake Chyrp shadowsocks

小Blesta 4 for IOS ,记录宝宝最美好的Blesta 4

两个月前,家里二宝正式上线,大宝也 3 岁了。经常会拿妈妈的Chyrp发微信语音给我,Blesta 4好可爱,我当时就想着,宝宝的视频、照片我都有保存起来。但是微信语音没办法保存啊,那Blesta 4多么的可爱,丢失了感觉好可惜。
这是我这两个月开发“小Blesta 4”的初衷。
之前跟朋友聊过,他说,你用另外一部Chyrp录不就完了吗?道理是shadowsocks道理 ,可是你要有两只Chyrp啊,当然你也可以用你老婆的Chyrp,但这就不能随时随地了。
目前先上个比较基础的版本,SiteCake做过调研,不知道大家有SiteCakeshadowsocks需求。
存在的问题:
1 、目前只支持 IOS,因为平台特性。如果大家觉得有shadowsocks需求我就去写 android 版本,SiteCake的话我就自嗨了。
2 、还SiteCake想到好的云同步的办法。我想也没人愿意把这些Blesta 4保存到我自架的服务器上。
我的邮箱:eWxqY2toQGdtYWlsLmNvbQ==
我的微信: al92YW5uaQ==
欢迎来撩

Blesta 4plesk mysql shadowsocks

目录
xxljob介绍
优点特性如下:
代码配置过程
1.引入xxl-job的依赖
2.编写配置文件
3. 编写配置类
4.新建Job文件夹,将自己写的类放到此文件夹下
5. 编写业务代码
登录xxl-Job并配置
1.mysql器管理–新增mysql器
 2.Blesta 4管理–新增Blesta 4
 测试:
断点调试
查看plesk日志:
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

xxljob介绍
XXL-JOB是一个分布式Blesta 4plesk平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
xxl-job是一个开源的分布式定时Blesta 4框架,其plesk中心和mysql器是相互分离,分开部署的,两者通过HTTP协议进行通信
将plesk行为抽象形成“plesk中心”公共平台,而平台自身并不承担业务逻辑,“plesk中心”负责发起plesk请求。 将Blesta 4抽象成分散的JobHandler,交由“mysql器”统一管理,“mysql器”负责接收plesk请求并mysql对应的JobHandler中业务逻辑。 因此,“plesk”和“Blesta 4”两部分可以相互解耦,提高系统整体稳定性和扩展性;
plesk模块(plesk中心):
负责管理plesk信息,按照plesk配置发出plesk请求,自身不承担业务代码。plesk系统与Blesta 4解耦,提高了系统可用性和稳定性,同时plesk系统性能不再受限于Blesta 4模块;
支持可视化、简单且动态的管理plesk信息,包括Blesta 4新建,更新,删除,GLUE开发和Blesta 4报警等,所有上述操作都会实时生效,同时支持监控plesk结果以及mysql日志,支持mysql器Failover。
mysql模块(mysql器):
负责接收plesk请求并mysqlBlesta 4逻辑。Blesta 4模块专注于Blesta 4的mysql等操作,开发和维护更加简单和高效;接收“plesk中心”的mysql请求、终止请求和日志请求等。

 被称为Blesta 4plesk中心,可做定时Blesta 4。
优点特性如下:

1、简单:支持通过Web页面对Blesta 4进行CRUD操作,操作简单,一分钟上手;2、动态:支持动态修改Blesta 4状态、启动/停止Blesta 4,以及终止运行中Blesta 4,即时生效;3、plesk中心HA(中心式):plesk采用中心式设计,“plesk中心”自研plesk组件并支持集群部署,可保证plesk中心HA;4、mysql器HA(分布式):Blesta 4分布式mysql,Blesta 4”mysql器”支持集群部署,可保证Blesta 4mysqlHA;5、注册中心: mysql器会周期性自动注册Blesta 4, plesk中心将会自动发现注册的Blesta 4并触发mysql。同时,也支持手动录入mysql器地址;6、阻塞处理策略:plesk过于密集mysql器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续plesk、覆盖之前plesk;7、Blesta 4超时控制:支持自定义Blesta 4超时时间,Blesta 4运行超时将会主动中断Blesta 4;8、Blesta 4失败重试:支持自定义Blesta 4失败重试次数,当Blesta 4失败时将会按照预设的失败重试次数主动进行重试;其中分片Blesta 4支持分片粒度的失败重试;9、Blesta 4失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便的扩展短信、钉钉等告警方式;10、Blesta 4进度监控:支持实时监控Blesta 4进度;11、Rolling实时日志:支持在线查看plesk结果,并且支持以Rolling方式实时查看mysql器输出的完整的mysql日志;12、自定义Blesta 4参数:支持在线配置pleskBlesta 4入参,即时生效;13、数据加密:plesk中心和mysql器之间的通讯进行数据加密,提升plesk信息安全性;14、邮件报警:Blesta 4失败时支持邮件报警,支持配置多邮件地址群发报警邮件;

官网地址:XXL开源社区 | 项目

代码配置过程
1.引入xxl-job的依赖
com.xuxueli xxl-job-core 2.0.1
2.编写配置文件
xxl: job: admin: addresses: #xxljobplesk中心部署 例如: executor: appname: testJob #xxljob配置的mysql器名称, ip: #mysql器IP,默认为空表示自动获取IP port: 9999 #xxljob配置的端口号,默认为9999 logpath: /data/xxl-job/jobhandler #mysql器运行日志文件存储磁盘路径 logretentiondays: -1 #plesk中心日志表数据保存天数,过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能 accessToken: #plesk中心通讯TOKEN [选填]:非空时启用
3. 编写配置类
/** * xxl-job 定时器配置,读取配置文件中的内容 * * @author 张有博 * @version 0.0.1 * @since 2021年11月14日 */@Configuration@ComponentScan(basePackages = “com.dmsdbj.integral.zentao.provider.job”)//配置需要扫描的job类@Slf4jpublic class XxlJobConfig { @Value(“${xxl.job.admin.addresses}”) private String adminAddresses; @Value(“${xxl.job.executor.appname}”) private String appName; @Value(“${xxl.job.executor.ip}”) private String ip; @Value(“${xxl.job.executor.port}”) private int port; @Value(“${xxl.job.accessToken}”) private String accessToken; @Value(“${xxl.job.executor.logpath}”) private String logPath; @Value(“${xxl.job.executor.logretentiondays}”) private int logRetentionDays; @Bean(initMethod = “start”, destroyMethod = “destroy”) public XxlJobSpringExecutor xxlJobExecutor() { log.info(“>>>>>>>>>>> xxl-job config init.”); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppName(appName); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; } }
4.新建Job文件夹,将自己写的类放到此文件夹下
与XxlJobConfig类,要扫描的包做对应

5. 编写业务代码
package com.dmsdbj.integral.zentao.provider.job; import com.xxl.job.core.biz.model.ReturnT;import com.xxl.job.core.handler.IJobHandler;import com.xxl.job.core.handler.annotation.JobHandler;import com.xxl.job.core.log.XxlJobLogger;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component; /** * XXLJob的测试类,需要继承IJobHandler类 * * @author Promsing(张有博) * @version 1.0.0 * @since 2021/11/14 – 19:51 */@Slf4j@Component@JobHandler(value = “TestJob”) //与xxl-job上的jobHandler做对应public class TestJob extends IJobHandler { /** * execute handler, invoked when executor receives a scheduling request * * @param param * @return * @throws Exception */ @Override public ReturnT execute(String param) { XxlJobLogger.log(this.getClass().getSimpleName() + “–start”); try { System.out.println(“业务代码1”); System.out.println(“业务代码2”); System.out.println(“业务代码3”); System.out.println(“业务代码4”); System.out.println(“业务代码5”); } catch (Exception e) { log.error(e.getMessage(), e); throw e; } XxlJobLogger.log(this.getClass().getSimpleName() + “–end”); return ReturnT.SUCCESS; }}

登录xxl-Job并配置
1.mysql器管理–新增mysql器

 2.Blesta 4管理–新增Blesta 4

 配置的参数如下:
 这里推荐一个解析Cron的网站:在线Cron表达式生成器
 测试:
断点调试

 查看plesk日志:

 xxlJob的配置过程不是很复杂,但是需要细心。多看官网,多看帮助,少走弯路。
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

小小张自由

微信公众号

Java技术类文章

Blesta 4Subrion服务器炸了

HP G2 Dock 估计升级到了最新的 1.0.71,mac 上看到的雷电固件版本是 66.1 。Dock 在 Windows 下和 iPadPro 下都能使用 Displayport Blesta 4,但是在 Macbook pro 14 上 2 个 Displayport 和 USB C 都无法Subrion到服务器,USB C 用各种 USB C 转 DP 或者用 USB C 线直接连接都无法Subrion到服务器.但是 USB C 接口可以用 USB C 转 HDMI Blesta 4.

Blesta 4Monstra面板优惠

一、竞品调研

当前的一些开源方案,这些存储方案里面优惠分为两种:
一种是优惠自定对象名称的;另外一种是系统自动生成对象名称。
我们的对象名是自己生成的,里面包含了业务逻辑。
1、像 FS 就是国内大佬开源的面板分支存储,但是因为不能自定义文件名所以不合适。 2、还有像领英的 Ambry、MogileFS 其实都不能自定对象名的,所以是不合适的。 3、LeoFS 对我们来说不是很可控,所以不合适。 4、TFS 是淘宝开源的,但是目前已经很少有人维护它并且也不是很活跃,所以当时就没有考虑。 5、ceph 是面板比较强大的分布式存储,但是它整个系统非常复杂需要大量的人力进行维护,对我们的产品不是很符合,所以暂时不考虑。

因为原项目文件使用阿里云OSS上传,现需求要部署到客户本地不优惠使用外网,所以要替换文件存储方案MinIO文档地址 MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。它是与 Amazon S3 云存储服务兼容的 API。使用 MinIO 为机器学习、分析和应用程序Blesta 4工作负载构建高性能基础架构。,非常适合于存储大容量非结构化的Blesta 4,例如图片、视频、日志文件、备份Blesta 4和容器/虚拟机镜像等,而面板对象文件优惠是任意大小,从几kb到最大5T不等
MinIO可单点部署,可分布式集群部署,操作部署方便,可支持扩容,SDK和阿里OSS用起来差不多,刚好满足我的需求,唯一缺陷就是不支持动态扩容.
minio是开源对象存储产品,具有简单、稳定、高性能特性。本文将minio的基本配置的一些方法。minio有单点运行、纠删码、分布式纠删码三种方式。单点运行配置简单,只需启动minio服务并指定相关Blesta 4目录即可。在生产环境中常用的纠删码和分布式纠删码两种,纠删码类型是minio在单Monstra服务器配置多个Blesta 4盘作为Blesta 4存放目录的配置方式。分布式纠删码是minio跨Monstra配置方式,所有Monstra的盘位组建纠删码,保证业务Blesta 4访问的高可用。
1、MinIO的架构

左边是 MINIO 集群的示意图,整个集群是由多个角色完全相同的Monstra所组成的。因为没有特殊的Monstra,所以任何Monstra宕机都不会影响整个集群Monstra之间的通信。 通过 rest 跟 RPC 去通信的,主要是实现分布式的锁跟文件的一些操作。
右边这张图是单个Monstra的示意图,每个Monstra都单独对外提供兼容 S3 的服务。  

2 概念

Drive:优惠理解为一块磁盘
Set:一组Drive的集合
面板对象存储在面板Set上面板集群划分为多个Set面板Set包含的Drive数量是固定的
默认由系统根据集群规模自动计算得出MINIO_ERASURE_SET_DRIVE_COUNT面板SET中的Drive尽可能分布在不同的Monstra上

(1)上图中,每一行是面板机器Monstra,这里有32个集群,每个Monstra里有面板小方块,我们称之为Drive,Drive可简单地理解为磁盘。面板Monstra有32个Drive,相当于32个磁盘。 (2)Set是另外的概念,Set是一组Drive的集合,所有红色标识的Drive组成了面板Set。
(3)面板对象最终是存储在面板Set里面的。
3、MinIO核心流程
3.1、Blesta 4编码
Erasure Code:冗余编码
将面板对象编码成若干个Blesta 4块和校验块Reed-Solomon算法低冗余、高可靠
MinIO的编码方式,我们简称为Erasure Code码,是通过算法还原Blesta 4的方法。MinIO使用Reed-Solomon算法,该算法把对象编码成若干个Blesta 4块和校验块。 为了表述方便,把Blesta 4库和校验块统称为编码块,之后我们优惠通过编码块的一部分就能还原出整个对象。

如上图,如我们所知,面板对象存储在面板Set上面,这个Set包含16个Drive,其中灰色的一半是Blesta 4库,橙色的一半是校验块,这种方式最多能忍受一半的编码丢失或损坏。所有编码块的大小是原对象的2倍,跟传统多副本存储方案相比,他只冗余存了一份,但可靠性更高。
接下来讲Bit Rot Protection,直译就是腐烂。它只物理设备上的一些文件细微的损坏,还没有被操作系统所硬件所察觉,但是他已经损坏了。 Bit Rot Protection:
HighwayHash
MinIO把之前的编码块进行 HighwayHash 编码,最后要校验这个编码,以确保每个编码是正确的。
基于 Erasure Code 和 Bit Rot Protection 这两个特性,所以MinIO的Blesta 4可靠性做的高。
另外,MinIO提供了面板管理工具,优惠对所有编码块进行校验,如果发现编码块有问题,再去修复它。  
3.2、存储形式

上图直观地展示了每个Monstra上的Blesta 4存放形式。所有对象的编码块和meta信息,最终是以目录和文件的形式,存储在文件系统上的。
比如My Bucket就是在所有Monstra的顶级目录创建了对应的目录叫My Bucket。然后当我们上传面板对象的时候,就会在这个对象所对应的Set上面创建面板目录叫My Object,之后把所有编码块的Blesta 4跟meta信息都保存在此目录下面,这就是MinIO的真实存储Blesta 4的方式。
metaBlesta 4是json文件,编码块是part.1文件。黑色的右图是meta信息示例图,里面除了包含正常的meta信息外,还包括了怎样做ec编码,以便之后优惠解码出来。
3.3 存储机制
Minio 使用纠删码 erasure code和校验和 checksum。 即便丢失一半数量(N/2)的硬盘,仍然优惠恢复Blesta 4。
校验和
保护Blesta 4免受硬件故障和无声Blesta 4损坏
纠删码
纠删码是一种恢复丢失和损坏Blesta 4的数学算法,目前,纠删码技术在分布式存储系统中的应用主要有三类,阵列纠删码(Array Code: RAID5、RAID6等)、RS(Reed-Solomon)里德-所罗门类纠删码和LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码。Erasure Code是一种编码技术,它优惠将n份原始Blesta 4,增加m份Blesta 4,并能通过n+m份中的任意n份Blesta 4,还原为原始Blesta 4。即如果有任意小于等于m份的Blesta 4失效,仍然能通过剩下的Blesta 4还原出来。
Minio采用Reed-Solomon code将对象拆分成N/2Blesta 4和N/2 奇偶校验块。 这就意味着如果是12块盘,面板对象会被分成6个Blesta 4块、6个奇偶校验块,优惠丢失任意6块盘(不管其是存放的Blesta 4块还是奇偶校验块),仍优惠从剩下的盘中的Blesta 4进行恢复。
RS code编码Blesta 4恢复原理
RS编码以word为编码和解码单位,大的Blesta 4块拆分到字长为w(取值一般为8或者16位)的word,然后对word进行编解码。 Blesta 4块的编码原理与word编码原理相同,后文中以word为例说明,变量Di, Ci将代表面板word。 把输入Blesta 4视为向量D=(D1,D2,…, Dn), 编码后Blesta 4视为向量(D1, D2,…, Dn, C1, C2,.., Cm),RS编码可视为如下(图1)所示矩阵运算。 图1最左边是编码矩阵(或称为生成矩阵、分布矩阵,Distribution Matrix),编码矩阵需要满足任意n*n子矩阵可逆。为方便Blesta 4存储,编码矩阵上部是单位阵(n行n列),下部是m行n列矩阵。下部矩阵优惠选择范德蒙德矩阵或柯西矩阵。

RS最多能容忍m个Blesta 4块被删除。 Blesta 4恢复的过程如下: (1)假设D1、D4、C2丢失,从编码矩阵中删掉丢失的Blesta 4块/编码块对应的行。(图2、3) (2)由于B’ 是可逆的,记B’的逆矩阵为 (B’^-1),则B’ * (B’^-1) = I 单位矩阵。两边左乘B’ 逆矩阵。 (图4、5) (3)得到如下原始Blesta 4D的计算公式 。

 (4)对D重新编码,可得到丢失的编码

3.4、上传和下载流程
1、上传流程: 1)先根据对象名去做面板Hash,计算出对应的Set,然后来创建临时目录。创建临时目录的目的是为了确保Blesta 4强一致性,所以中间Blesta 4都会被写入到这个临时目录里(直到所有Blesta 4写完后,再统一把目录写入到最终的路径上) 2)接下来读Blesta 4编码,每次最多读10M的Blesta 4处理,然后做编码,再被写入到磁盘上,循环的过程就是把Blesta 4保存下来。 3)Blesta 4保存完后,再写meta信息。 4)然后挪到最终的位置上,删除临时目录。
2、读取流程: 1)先根据对象名做Hash,找到对象对应的Set 2)然后去读取meta信息,通过meta信息来获得编码的方式,然后去解码。它是以10MBlesta 4做EC编码,读的时候也是逐个part解析,每个part给他做解码,然后写入到面板io write里面。 备注:我们刚刚说了,做EC码时,只要一半的编码块就能还原整个对象,所以读meta时读了N份,但是读Blesta 4时只要读N/2就优惠了。
四、部署和扩容
1、如何部署
#启动面板12个Monstra的MinIO集群,每个Monstra有12个Driveminio server
MinIO的部署默认不需要配置文件,几秒钟就优惠把集群搭建起来,把简洁做到了极致。
2、MinIO压测
可采用 cosBench 工具做压测,cosBench是专门对对象存储做压测的工具。
在12个Monstra,每个Monstra12个盘,混合读写64KB。 结果是: 1、读请求:4千QPS,响应的平均延迟是35毫秒; 2、写请求:900 QPS时,平均响应时间是45毫秒。

五、MinIO的局限

局限1、搭建集群后,不允许扩容
MinIO一旦集群搭建成功后,就不优惠更改集群Monstra数。因为存在在MinIO的对象到底存储在哪个
局限2、大集群最大Monstra数为32
MinIO实现了面板峰值锁叫DSync。它在Monstra数量少时,性能非常高;但Monstra数量过多时,性能就下降了。功能实现的最大Monstra就是32,所以导致MinIO单个集群的最大Monstra数也是32。
官方回复是,他们十年做GlusterFS的经验看,面板超大的集群是难以维护的,尤其是宕机之后的恢复时间也特别长,所以他们在做MinIO的时候面板核心设计理念就是简单,易于维护。

扩容方案
1、可同时向多个集群写入 2、当集群容量达到阈值,从写集群中剔除,变成只读 3、读取的时候,根据编码到文件名上的集群信息,从而路由到正确的集群。
MinIO本身提供面板叫联合模式的方式来组建集群,但是要额外引入其他依赖。优惠考虑在LB层根据其请求里面的一些header信息做流量转发。
当配置多个集群的时候,优惠先从配置中获取可用的集群,再从LB上根据请求的header信息,可控制向哪个集群写。当某个集群的容量达到阈值时,优惠从配置中剔除该集群,把他变成只读集群。读取的时候把集群ID或信息码编码到文件名上去,这样优惠通过解析文件名就能获取到对应的集群。  
六、关于IO
IO有Buffered IO 和 Direct IO:
buffered IO:在读写的时候回经过面板page CacheDirect IO:是绕过page Cache,直接对磁盘操作,所以性能会差些。
再回顾下MinIO的写入流程:MinIOBlesta 4最终的形式是写入文件系统的文件,也就是随机写的。随机写的性能肯定不如顺序写。 其次,EC编码在低冗余情况下是高可靠的,但同时也让他写入数量变多了,基本上面板对象写入需要做2N次操作,其实N次是Blesta 4的操作,N是meta的操作。基于上述原理,可总结出下述优化方案:优化方案1、小文件合并成大文件
小文件合并成大文件,只需要把底层文件的部分稍微改一下,把原来随机写的小文件改成顺序写的大文件,这样就优惠利用page cache来提供磁盘的能力。
具体实现:预先打开面板文件,分配面板固定的空间,目的是保证文件在磁盘上真是存储的Blesta 4是连续的。当写文件的时候,就给加锁,保证Blesta 4写入,因为这些原因,小文件的索引需要保存下来,所以我们引入了面板levelDB像大文件的ID和size的一些东西,之所以采用level DB是因为他的性能非常好。
接下来看MinIO的读流程:它主要发生在IO的地方有两个:面板是meta信息,然后再读data的时候,至少从N/2个Monstra上读取。每一次读取meta或者data的时候包括两部分:第面板从levelDB中读取索引,从大文件中读取对应的Blesta 4。
然后我们针对这个做了面板优化方案,我们把meta信息,因为meta信息没多少,我们把他压缩到level DB里,直接读就行了,不用读索引了。
再回顾下MinIO的读流程: 1、从N个Monstra上读取meta信息 2、至少从N/2个几点上读取data 3、每一次读取的时间包括两部分: – 从level DB读取索引 – 从大文件中读取对应的Blesta 4 4、并发读的最终时间取决于最长的面板  
优化方案总结
1、将meta信息压缩后,直接存入level DB,减少一组IO 2、将level DB存在性能更高的SSD 3、降低单个Set的Drive数量

Minio 是个基于 Golang 编写的开源对象存储套件,基于Apache License v3.0开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。优惠很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL等。
MinIO 的应用场景
场景1:如下图,MinIO 的应用场景除了优惠作为私有云的对象存储服务来使用,也优惠作为云对象存储的网关层,无缝对接 Amazon S3 或者 MicroSoft Azure 。

场景2:单主机单硬盘模式

场景3:单主机多硬盘模式

 场景4:多主机多硬盘分布式

特点
高性能:作为高性能对象存储,在标准硬件条件下它能达到55GB/s的读、35GG/s的写速率,并而 MinIO 支持面板对象文件优惠是任意大小,从几kb到最大5T不可扩容:不同MinIO集群优惠组成联邦,并形成面板全局的命名空间,并跨越多个Blesta 4中心云原生:容器化、基于K8S的编排、多租户支持Amazon S3兼容:Minio使用Amazon S3 v2 / v4 API。优惠使用Minio SDK,Minio Client,AWS SDK和AWS CLI访问Minio服务器。可对接后端存储: 除了Minio自己的文件系统,还支持DAS、 JBODs、NAS、Google云存储和Azure Blob存储。 SDK支持:基于Minio轻量的特点,它得到类似Java、Python或Go等语言的sdk支持
GO SDK: JavaSDK: PythonSDK: Lambda计算: Minio服务器通过其兼容AWS SNS / SQS的事件通知服务触发Lambda功能。支持的目标是消息队列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等Blesta 4库。有操作页面功能简单: 这一设计原则让MinIO不容易出错、更快启动支持纠删码:MinIO使用纠删码、Checksum来防止硬件错误和静默Blesta 4污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复Blesta 4
参考
minio原理和使用 – 简书
MinIO学习笔记_胜天半子-CSDN博客_minio

单Monstra部署
MinIO | Code and downloads to create high performance object storage

1.docker 方式
[root@localhost s3]# docker run -p 9001:9001 -d harbor.jettech.com/jettechtools/k3s/minio:latest server ./data –console-address “:9001″
MinIO 部署开始使用默认的根凭据minioadmin:minioadmin。您优惠使用 MinIO 控制台测试部署,这是面板 内置于 MinIO 服务器的嵌入式对象浏览器。将主机上运行的 Web 浏览器指向
您还优惠使用任何与 S3 兼容的工具进行连接,例如 MinIO 客户端mc命令行工具。有关使用mcmc命令行工具的更多信息,请参阅使用 MinIO 客户端进行测试。对于应用程序开发, 见MinIO | The MinIO Quickstart Guide并单击MinIO的SDK中导航,查看MinIO的SDK支持的语言。
注意:要在持久存储上部署 MinIO,您必须使用该podman -v选项将本地持久目录从主机操作系统映射到容器。例如,-v /mnt/data:/data将主机操作系统驱动器映射/mnt/data到/data容器上。
2.二进制或rpm包方式
rpm:[root@localhost data]# wget s3]# wget
2.1 配置,编辑 /etc/default/minio 配置文件,按照实际目录配置 MINIO_VOLUMES、 MINIO_ACCESS_KEY 、 MINIO_SECRET_KEY 等参数,如果自定义minio占用端口号,需要配置 MINIO_OPTS 参数,但一般使用默认端口号9000,所以无需配置该参数。但要确保 MINIO_VOLUMES 有读写权限。
MINIO_VOLUMES 目录有读写权限[root@localhost s3]# cat /etc/default/minio MINIO_VOLUMES=”/root/wubo/s3/data”MINIO_ACCESS_KEY=adminMINIO_SECRET_KEY=123456aAMINIO_OPTS=”–address :9000 –console-address :9001 –listeners 1″ [root@localhost s3]# cat <> /etc/default/minio# Volume to be used for MinIO server.MINIO_VOLUMES=”/tmp/minio/”# Use if you want to run MinIO on a custom port.MINIO_OPTS=”–address :9199 –console-address :9001″# Root user for the server.MINIO_ROOT_USER=Root-User# Root secret for the server.MINIO_ROOT_PASSWORD=Root-PasswordEOT
本地NAS运行minio,注解:此种方式适合在Blesta 4存储目录为NAS目录时的配置方法。
gluster v set fareyes disperse.eager-lock offexport MINIO_ACCESS_KEY=minioexport MINIO_SECRET_KEY=minio123minio gateway nas /shared/nasvol
2.2 在 /etc/systemd/system 目录下,配置 minio.service 服务。rpm自动就已经有了不用下载
cd /etc/systemd/system/; curl -O
编辑 /etc/systemd/system/minio.service 文件,可采用默认 User=root 、Group=root参数,也可根据实际情况配置此参数。
[root@localhost s3]# cat /etc/systemd/system/minio.service [Unit]Description=MinIODocumentation= [Service]WorkingDirectory=/usr/local User=rootGroup=rootProtectProc=invisible EnvironmentFile=-/etc/default/minioExecStartPre=/bin/bash -c “if [ -z \”${MINIO_VOLUMES}\” ]; then echo \”Variable MINIO_VOLUMES not set in /etc/default/minio\”; exit 1; fi”ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES # Let systemd restart this service alwaysRestart=always # Specifies the maximum file descriptor number that can be opened by this processLimitNOFILE=1048576 # Specifies the maximum number of threads this process can createTasksMax=infinity # Disable timeout logic and wait until process is stoppedTimeoutStopSec=infinitySendSIGKILL=no [Install]WantedBy=multi-user.target # Built for ${project.name}-${project.version} (${project.name})

2.3 启动服务
systemctl enable minio.service –now
参考官方链接:

服务器Blesta 4目录结构
[root@localhost s3]# find data/bucket*data/bucket1data/bucket1/b1data/bucket1/b1/b1.txtdata/bucket2data/bucket2/b2data/bucket2/b2/b2.tx
在服务器上面创建
mkdir data/bucket3/b3 -pecho b3b3b3b3 >data/bucket3/b3/b3.txt
 此时 也有了。
我优惠理解为是个文件服务器,实时能反映出系统目录下面的情况,类似NFS,ftp,nginx等文件服务器,这些知识不能在线操作而已。不知道我理解的对不对
客户端【mc】
MinIO Client (mc) — MinIO Baremetal Documentation
MinIO | MinIO Client Quickstart Guide
MinIO Client (mc) — MinIO Baremetal Documentation
1)下载赋权限
[root@localhost s3]# wget s3]# chmod +x mc [root@localhost s3]# mv /usr/local/bin/
MinIO Client (mc) — MinIO Baremetal Documentation2)Add a Cloud Storage Service
To add one or more Amazon S3 compatible hosts, please follow the instructions below. mc stores all its configuration information in ~/.mc/config.json file.
重要的
以下示例临时禁用 bash 历史记录以降低身份验证凭据以纯文本形式泄露的风险。这是一项基本的安全措施,并不能减轻所有可能的攻击媒介。在命令行上输入敏感信息时,请遵循操作系统的安全最佳实践。
bash +o historymc alias set –api –path bash -o history
Example 
: 优惠是用户名 或 Service Accounts 创建账户 :优惠是密码或 Service Accounts 创建秘钥

[root@localhost s3]# mc config host add jettechminio 3NY2SNH36G6JLU84IOBH AgTeNj6D9rxJQGbh2MSYbfKzSfmJkzrvmlLqzyb3 –api s3v4 mc 别名使用mc alias set ALIAS URL ACCESSKEY SECRETKEY[root@localhost s3]# mc alias set jettechminio admin 123456aA –api s3v4Added `jettechminio` successfully. [root@localhost s3]# mc alias set jettechminio 3NY2SNH36G6JLU84IOBH AgTeNj6D9rxJQGbh2MSYbfKzSfmJkzrvmlLqzyb3 –api s3v4Added `jettechminio` successfully.
测试连接 
[root@localhost s3]# mc admin info jettechminio● 172.16.10.5:9000 Uptime: 2 hours Version: 2021-12-29T06:49:06Z Network: 1/1 OK 30 B Used, 6 Buckets, 4 Objects
列出Blesta 4列表
[root@localhost s3]# mc ls jettechminio/[2021-12-31 14:57:07 CST] 0B bucket1/[2021-12-31 15:00:47 CST] 0B bucket2/[2021-12-31 15:13:30 CST] 0B bucket3/[2021-12-31 16:57:24 CST] 0B bucket4/[2021-12-31 16:59:21 CST] 0B bucket5/[root@localhost s3]# mc ls jettechminio/bucket1/b1[2021-12-31 14:59:41 CST] 5B b1.txt
创建bucket
[root@localhost s3]# mc mb data/bucket6/b6Bucket created successfully `data/bucket6/b6`.[root@localhost s3]# lsb4.txt data mc minio minio-20211229064906.0.0.x86_64.rpm[root@localhost s3]# ls data/bucket1 bucket2 bucket3 bucket4 bucket5 bucket6
测试上传面板文件
[root@localhost s3]# mc cp b4.txt data/bucket4/b4 0 B / ? ┃░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░b4.txt: 8 B / 8 B ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 1.55 KiB/s 0s[root@localhost s3]# [root@localhost s3]# mc ls jettechminio/bucket4/b4[2021-12-31 17:16:56 CST] 8B b4
Shell autocompletionMinIO | MinIO Client Quickstart Guide
In case you are using bash, zsh or fish. Shell completion is embedded by default in mc, to install auto-completion use mc –autocompletion. Restart the shell, mc will auto-complete commands as shown below.
 [root@localhost s3]# mc –autocompletion.
[root@localhost s3]# mc admin config diff find ls mirror policy session sql update watchcat cp event head mb pipe rm share stat version

Blesta 4保护
分布式 MinIO使用纠删码提供针对多个Monstra/驱动器故障和位腐烂的保护。由于分布式 MinIO 所需的最小磁盘为 4(与擦除编码所需的最小磁盘相同),因此在您启动分布式 MinIO 时,擦除代码会自动启动。
高可用性
如果托管磁盘的服务器脱机,独立的 MinIO 服务器就会停机。相比之下,只要m/2 个服务器或m*n /2 个或更多磁盘在线,具有m 个服务器和n 个磁盘的分布式 MinIO 设置将使您的Blesta 4安全。
例如,每个Monstra有 200 个磁盘的 16 台服务器分布式设置将继续提供文件服务,默认配置下最多 4 个服务器优惠离线,即大约 800 个磁盘关闭 MinIO 将继续读取和写入对象。
请参考默认值的更多理解尺寸指南选择取决于你删除的条带大小在这里。优惠使用存储类更改奇偶校验设置

一致性保证
对于分布式和独立模式下的所有 I/O 操作,遵循严格MinIO 的先读后写和写后列表一致性模型。仅当您使用磁盘文件系统(例如 xfs、ext4 或 zfs 等)进行分布式设置时,才能保证此一致性模型。
如果 MinIO 分布式设置在下面使用 NFS 卷,则不能保证 MinIO 将提供这些一致性保证,因为 NFS 是设计上不一致的文件系统(如果您必须使用 NFS,我们建议您至少使用 NFSv4 而不是 NFSv3)。

如果您了解独立的 MinIO 设置,则该过程基本保持不变。MinIO 服务器根据命令行参数自动切换到单机或分布式模式。

单Monstra多磁盘方式:
MinIO | Learn more about Deploying MinIO in Distributed Mode
纠删码类型是minio在单Monstra服务器配置多个Blesta 4盘作为Blesta 4存放目录的配置方式,我这里采用4个目录方式,相当于4个磁盘,官方介绍:分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能
分布式模式下的 MinIO 使您优惠将多个驱动器(甚至在不同的机器上)集中到面板对象存储服务器中。由于驱动器分布在多个Monstra上,分布式 MinIO 优惠承受多个Monstra故障,同时确保完整的Blesta 4保护
分布式模式下的 MinIO 优惠帮助您通过单对象存储部署来设置高可用存储系统。借助分布式 MinIO,您优惠最佳地使用存储设备,而不管它们在网络中的位置。
[root@localhost s3]# lsdata1 data2 data3 data4
配置文件
MINIO_VOLUMES=”/root/wubo/s3/data1 /root/wubo/s3/data2 /root/wubo/s3/data3 /root/wubo/s3/data4″MINIO_ACCESS_KEY=adminMINIO_SECRET_KEY=123456aAMINIO_OPTS=”–address :9000 –console-address :9001 –listeners 1″
 启动服务
[root@localhost s3]# systemctl status minio● minio.service – MinIO Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2022-01-04 10:38:17 CST; 4s ago Docs: Process: 27969 ExecStartPre=/bin/bash -c if [ -z “${MINIO_VOLUMES}” ]; then echo “Variable MINIO_VOLUMES not set in /etc/default/minio”; exit 1; fi (code=exited, status=0/SUCCESS) Main PID: 27971 (minio) Tasks: 11 Memory: 90.1M CGroup: /system.slice/minio.service └─27971 /usr/local/bin/minio server –address :9000 –console-address :9001 –listeners 1 /root/wubo/s3/data1 /root/wubo/s3/data2 /root/wubo/s3/data3 /root/wubo/s3/d… Jan 04 10:38:18 localhost minio[27971]: WARNING: MINIO_ACCESS_KEY and MINIO_SECRET_KEY are deprecated.Jan 04 10:38:18 localhost minio[27971]: Please use MINIO_ROOT_USER and MINIO_ROOT_PASSWORDJan 04 10:38:19 localhost minio[27971]: Automatically configured API requests per node based on available memory on the system: 103Jan 04 10:38:19 localhost minio[27971]: Status: 4 Online, 0 Offline.Jan 04 10:38:19 localhost minio[27971]: API: 04 10:38:19 localhost minio[27971]: Console: 04 10:38:19 localhost minio[27971]: Documentation: 04 10:38:19 localhost minio[27971]: You are running an older version of MinIO released 5 days agoJan 04 10:38:19 localhost minio[27971]: Update:Jan 04 10:38:19 localhost minio[27971]: Run `mc admin update`[root@localhost s3]# lsdata1 data2 data3 data4

多Monstra多磁盘模式
高可用
分布式纠删码是minio跨Monstra配置方式,所有Monstra的盘位组建纠删码,保证业务Blesta 4访问的高可用。
要启动分布式 MinIO 实例,您只需将驱动器位置作为参数传递给 minio 服务器命令。然后,您需要在所有参与Monstra上运行相同的命令。
笔记:
所有运行分布式 MinIO 的Monstra应该共享面板公共根凭证,以便Monstra相互连接和信任。为了实现这一目标,它建议以root用户和root密码导出为环境变量,MINIO_ROOT_USER并MINIO_ROOT_PASSWORD执行MinIO服务器命令之前,所有Monstra上。如果未导出,minioadmin/minioadmin则应使用默认凭据。MinIO 创建每组4到16 个驱动器的纠删码组。您提供的驱动器总数必须是这些数字之一的倍数。MinIO 选择最大的 EC 集大小,它分为给定的驱动器总数或Monstra总数 – 确保保持均匀分布,即每个Monstra参与每组相同数量的驱动器。每个对象都写入单个 EC 集,因此分布在不超过 16 个驱动器上。建议所有运行分布式 MinIO 设置的Monstra是同构的,即相同的操作系统、相同的磁盘数量和相同的网络互连。MinIO 分布式模式需要新目录。如果需要,驱动器优惠与其他应用程序共享。您优惠使用 MinIO 独有的子目录来完成此操作。例如,如果您已将卷安装在 下/export,/export/data则将其作为参数传递给 MinIO 服务器。下面的 IP 地址和驱动器路径仅用于演示目的,您需要将它们替换为实际的 IP 地址和驱动器路径/文件夹。运行分布式 MinIO 实例的服务器之间的间隔应小于 15 分钟。您优惠启用NTP服务作为最佳实践,以确保跨服务器的时间相同。MINIO_DOMAIN 应定义和导出环境变量以支持存储桶 DNS 样式。在Windows操作系统上运行分布式 MinIO被认为是实验性的。请谨慎行事。
实施例1:启动分布式MinIO例如在n个Monstra,其中m驱动每个安装在/export1到/exportm(如图下文),通过所有n个Monstra上运行此命令:
export MINIO_ROOT_USER=export MINIO_ROOT_PASSWORD=minio server
注意:在上面的例子中n,m代表正整数,不要复制粘贴,期望它工作根据本地部署和设置进行更改。
注意: {1…n}显示有 3 个点!仅使用 2 个{1..n}点将被您的 shell 解释并且不会传递到 MinIO 服务器,从而影响擦除编码顺序,从而影响性能和高可用性。始终使用省略号语法{1…n}(3 个点!)以获得最佳纠删码分布
我的配置172.16.10.5Monstra和172.16.10.15Monstra相同配置,我的ip不连续
前置条件: 1.要求至少4个磁盘 2.至少2个校验盘 3.Monstra可支持最小2Monstra至最大32Monstra 4.所有Monstra间时间一致,不超过3s,可配置ntp时间同步。此条件非常重要,对性能影响明显。 安装minio(所有Monstra执行命令)
[root@localhost s3]# cat /etc/default/minio #MINIO_VOLUMES=”/root/wubo/s3/data1 /root/wubo/s3/data2 /root/wubo/s3/data3 /root/wubo/s3/data4″MINIO_VOLUMES=” :9000 –console-address :9001 –listeners 1″
MINIO_VOLUMES=”   命令表示:集群两Monstraip地址为172.16.10.5和172.16.10.15,磁盘目录为两个Monstra的/root/wubo/s3/data{1,2,3,4}和/root/wubo/s3/data{1,2,3,4}四个目录。其中/root/wubo/s3优惠为磁盘的挂载目录。
多硬盘多Monstra部署不可扩容的方式,下面是官方示例
分部署部署最少需要四个示例,不管是四个服务器,每台部署面板实例。还是面板服务器部署四个实例。 存储的文件会以n/2个Monstra内存分配到每个实例上,比如创建8个实例,上传的文件大小80MB,那么每个实例存在20MB
示例1: 启动分布式Minio实例,8个Monstra,每Monstra1块盘,需要在8个Monstra上都运行下面的命令。
export MINIO_ACCESS_KEY=adminexport MINIO_SECRET_KEY=123456minio server \ \ \
示例2: 启动分布式Minio实例,4Monstra,每Monstra4块盘,需要在4个Monstra上都运行下面的命令。
export MINIO_ACCESS_KEY=adminexport MINIO_SECRET_KEY=123456minio server \ \ \ \ \ \ \
可扩容的方式,使用MinIO纠删码,如果想要扩容,必须使用这种方式
扩展现有的分布式设置
MinIO 支持通过在命令行上指定新的集群集来扩展分布式纠删码集群,如下所示:
扩容方式,在原命令最后一行末尾添加扩容的Monstra,重启集群
首次部署
export MINIO_ROOT_USER=export MINIO_ROOT_PASSWORD=minio server
例子
export MINIO_ACCESS_KEY=export MINIO_SECRET_KEY=minio server
 扩容方式,在原命令最后一行末尾添加扩容的Monstra,重启集群
export MINIO_ROOT_USER=export MINIO_ROOT_PASSWORD=minio server
列子 
export MINIO_ACCESS_KEY=export MINIO_SECRET_KEY=minio server
现在整个集群就扩展了1024个磁盘,总磁盘变为2048个,新的对象上传请求会自动分配到最少使用的集群上。通过以上扩展策略,您就优惠按需扩展您的集群。重新配置后重启集群,会立即在集群中生效,并对现有集群无影响。如上命令中,我们优惠把原来的集群看做面板区,新增集群看做另面板区,新对象按每个区域中的可用空间比例放置在区域中。在每个区域内,基于确定性哈希算法确定位置。
说明: 您添加的每个区域必须具有与原始区域相同的磁盘数量(纠删码集)大小,以便维持相同的Blesta 4冗余SLA。 例如,第面板区有8个磁盘,您优惠将集群扩展为16个、32个或1024个磁盘的区域,您只需确保部署的SLA是原始区域的倍数即可  
现在服务器已将总存储扩展了(newly_ added_servers*m)个磁盘,使总数达到(existing_servers*m)+(newly_ added_servers*m) 个磁盘。新的对象上传请求会使用最少使用的集群自动启动。这种扩展策略无休止地工作,因此您优惠根据需要永久扩展集群。当您重新启动时,它会立即且不会中断应用程序。命令行中的每组服务器称为面板池。本示例中有 2 个服务器池。新对象按照每个池中的可用空间量按比例放置在服务器池中。在每个池中,驱动器擦除集的位置是根据确定性散列算法确定的。

注意: 您添加的每个池都必须与原始池具有相同的纠删码奇偶校验配置,以便保持相同的Blesta 4冗余 SLA。

MinIO部署,以及扩容_Be a Laity!!的博客-CSDN博客_minio扩容
MinIO | Learn more about Deploying MinIO in Distributed Mode
minio对象存储_weixin_34363171的博客-CSDN博客
Deploy MinIO in Distributed Mode — MinIO Baremetal Documentation
测试 172.16.10.5 创建buckets 上传文件 

 此时在172.16.10.15服务器也是优惠看见的

Blesta 4GeeklogGPU服务器炸了

首先简单介绍一下我的信息。19 年毕业,非计算机专业专科,坐标南京。
第一份工作,Java 开发。第二份工作,WebGL 研发。都差不多是一年的时间。
因为一些原因,需要跳槽,在 10 月这个尴尬的时候开始找工作(没有裸辞)。
先把 BIM 的介绍放一下,下面开始说一下 10 月面试的炸了。

A Blesta 4:BIM Geeklog,50 人左右。一面线下,问的个人炸了和项目炸了,当场拿了 16k offer 。后面去了这个Blesta 4一下,感觉技术实力很弱并且坑很多,跑了。
B Blesta 4:芯片Geeklog,上市企业。一面线上,问了 js 基础和一些算法,由于本来就比较菜,再加上对自己的 js 基础比较自信,没准备,一面挂。
C Blesta 4:政府Geeklog,上市子Blesta 4。一面线上,问了 js 基础和一些 gis Geeklog的内容,因为要经常驻场出差,作罢。
D Blesta 4:BIM Geeklog,上市子Blesta 4。一面线上,问了 BIM 引擎Geeklog的内容,二面线上,问了 gis 的内容,挂了。
E Blesta 4:公安Geeklog,上市Blesta 4。hr 线上问了期望薪资后说给不了,没了下文,个人也对内网开发不喜欢。
F Blesta 4:BIM Geeklog,500 人左右。以前同事在里面,直接内推的简历,听说是因为不会任何前端框架导致没了下文。
G Blesta 4:家装Geeklog,20 人左右。一面 three.js ,二面 个人炸了。拿了 17k offer ,去了几天,因为做的东西太偏向前端交互,和图形不靠边,和自己的个人规划有出入,跑了。
F Blesta 4:BIM Geeklog,A 轮创业Blesta 4。一面线上,问了项目炸了,面试结束做了 LeetCode 两道题,一道做出来了,一道没做出来。二面线上,问了两道线性代数题、一道算法题和项目炸了。线代一道对了,一道没对,算法我也不知道对不对。拿了 16 k offer 。

总结一下:

个人在图形和数学这块GPU服务器非常非常欠缺的,还要不断的学习。做 WebGL 是一条很黑的路,起码对于我来说,我GPU服务器选择踌躇着向前走。
由于不会前端框架,CSS 等,导致我找不到普遍的前端工作,就业范围大幅被压缩。虽然做的 WebGL GPU服务器要属于前端,GPU服务器要好好学习一下前端的知识。并且目前阶段的 WebGL 岗位薪资并没有和普通前端有很大差距。
不要相信Blesta 4所谓的和学校合作,只看他们的产品、技术实力和Blesta 4规模。
WebGL 这块GPU服务器很多和 GIS Geeklog,还要学习一下 GIS Geeklog的知识。
算法题GPU服务器要不停的做,我现在做做就不做了,GPU服务器太懒惰。
最后是学历Geeklog,函授本科和在职研究生我在并行准备,不知道有没有用,但有总比没有好。欠下的总归是要还的。

最后一些废话,看着 v2 上应届生 20 起步,真的十分的羡慕,只可惜时光不重来。
从毕业一路从迷茫到规划清晰也炸了了一点,很感谢给我机会让我转 WebGL 岗位的领导。
不知道我目前的薪资算什么水平,蹦跶了两年,一直在羡慕同年人,属实是不太好受