背景

最近对已搭建的 MinIO 做了一些性能测试。服务为单实例部署,服务器配置为阿里云 ECS 实例 2c8g 、100Mbps 外网带宽、ESSD Entry 硬盘。
在文件大小为 1000kb 、并发为 10 、持续时间 300s 、90%读文件的维度上,测试结果是(以读文件数据为例):平均响应时间是 606ms ,服务器处理时间是 29ms ,吞吐量是 16.35op/s ,服务器带宽被完全占满,cpu ,内存,硬盘各项指标均正常。
由此可见主要的瓶颈是服务器的外网带宽,于是想到组建 MinIO 集群的方法提高吞吐量。

疑问

问题随之而来。假设采用四台上述相同配置的 ECS 实例组成集群,使用单实例 Nginx (官方推荐的负载均衡器之一)做负载,理论上在 MinIO 层面带宽比单实例的带宽会高,吞吐量也会随之提高。但是否部署 Nginx 所在的服务器的带宽(假设也是 100Mbps )会是性能瓶颈?
如果是性能瓶颈,那我现在想到的办法是做成 Nginx 集群,然后使用更高层的负载均衡器(例如 DNS 轮询、F5 等)将流量分发到不同的 Nginx 服务器上。不知道我这种想法是否正确?
如果我的想法不正确,请不吝赐教。

minio 建公网上啊。。。 图啥?
minio 用 nginx 负载均衡啊? 图啥?

我觉得你要不想赐教可以不答,一味的反问衬托自己有多么精通只显得你素质低下。在这种社区有你这样的回答真是拉低档次。话都不会好好说吗?我图啥?我图明天多吃俩馍!

既然带宽是瓶颈,说了半天也没见你说是外网带宽被占满了还是内网带宽小猫了,内网占满多机器当然有效果,外网当然是花钱了,话说为啥不用七牛又拍或者 oss ?从带宽或者存储成本可用性都更便宜吧

  1. 假设只有一个 Nginx 做出口,Nginx 出口的带宽会成为新的瓶颈
  1. 第二个思路大体是正确的,不过需要注意的是如何尽可能均衡的将负载给到多个入口

    既然你不喜欢别人的回复,那你发出来问的意义何在?你自己都说了瓶颈是带宽,那用 Nginx 集群又有什么用?

    嗯嗯,在背景中的第三条中说明了是外网带宽是瓶颈。实际上目前是 OSS+MinIO 都使用了,OSS 中存储的一些热点资源、静态文件、小文件等,MinIO 存了一些大文件,比如动辄就几百 M ,一个 G 多。这么用的原因是当时我看到 OSS 忙时外网流出收费的价格是 0.50 元/GB ,比 ECS 的流量费贵。

    都用阿里云了为啥不直接用 OSS ?又方便可靠性肯定比自己搭的高,容量和速度也不用担心。MINIO 一般自己内网/有自己物理服务器搭比较适合。ECS 按流量 0.8/g ,OSS 0.5/g

    你的逻辑十分混乱。首先我从未说过不喜欢别人的回复,请看一下他回复的内容。社区指导规则中明确指出:友好互助,保持对陌生人的友善。用知识去帮助别人。他的回答既看不出友善,更谈不上帮助,短短两行充斥着不屑。就这种严重背离社区原则的回答你竟然还帮着说话,足见你没什么正确的价值观。 其次,“你自己都说了瓶颈是带宽,那用 Nginx 集群又有什么用?” 这句话感觉你基本没理解我的疑惑在哪,这很可能是我的语言表达能力有问题,不怪你。

    感谢回复,所以我现在的疑惑点是有哪些更高层的负载均衡器可以将流量分发到不同的 Nginx 服务器上,F5 在云服务器是貌似使用不了,DNS 轮询不能保证完全均匀。

    感谢回复,目前是 OSS 和 MinIO 都在使用,现在 MinIo 是在阶段性尝试,只有一小部分数据在上边。我刚才翻了一下文档,确实是 ECS 按流量 单价:0.80 元/GB 。

    我们之前用 Ceph 试过,并没有比云厂商的 OSS 服务更好。你节省的那点流量费,一次炸锅的人工和损失就全兜回来了。

主要是你要做多层负载均衡,这系统架构就简单不了。你这好几台 ECS 要搞监控,报警,维护,等等一系列东西下来成本并不低。而且这对于你们来说也不是核心系统,你也要考虑花大精力去调查维护这东西到底值不值。

我觉得你有精力折腾这个,只为了节省这么点流量费,不如花点时间去跟云厂商要点折扣。或者把这些大文件存储业务单独换到别的更便宜的厂商去做更靠谱一点。

另外 MiniIO 还有 License 问题,你要考虑你的情况是否适用他那个 AGPL 的 License 。因为你这种架构本质上是在云平台上使用 MiniIO 搭建了对象存储服务,并提供给你的客户(如果你客户是直接拿链接从这个服务里下载文件的话)。

那么根据 AGPL ,你需要公开相关的所有代码。

本身 AGPL 就不是个很严谨的 License ,MiniIO 选择它也就是看中了这点,好方便他们推自己的商用 License ,所以大家当时都在骂。如果你的公司比较看重法务合规这块,那还是别省这么点流量费了。

要做存储 可能带宽的单位要换成 G

#9 你需要的是云厂商的负载均衡( SLB )服务

搞 minio 又配上 nginx 确实很迷惑行为,但是人家说的没错,接受批评

一楼虽然冲了点,但还是有价值的.
存储放公网,你采取了什么安全措施吗?
对于存储来说,可靠、安全、冗余这些优先于性能瓶颈.
其次,一楼这种表达方式隐含的不理解,也是因为 op 没有说明原始需求. 目测 op 只是弄来学习研究的,如果是这样,那怎么折腾都可以了.

分享下我们在用的低成本自建 OSS 方案:
阿里云买 2 台轻量 200M 机器做前端入口,普通 ECS 带块大硬盘,两者之间走内网。
只需要几百块,就能得到不限流量大带宽(晚高峰限速)大空间的自建存储,比直接用 OSS 要买好几个套餐包划算很多。

社区就是这样,你是来提问的,大家不是你家长,不会惯着你。1 楼已经说的很明白了,你听不懂还嫌人家态度不好。

MinIO 、CephFS 之类的东西,本来就是低成本的线下内网部署,你在高溢价的云服务器上部署,根本不划算,而且这种云服务器最贵的就是外网带宽。就算要用云服务,直接去买云对象存储会更好,所以 1 楼才问你:图啥。

最近我一个项目确实在公网搭建了 minio ,原因是未来存在本地私有化的可能性,直接迁移数据即可,不用改项目代码引用的 SDK ,当然有可能 SDK 兼容我没科普过

直接 买 4 台 ECS 组集群测试就行,实践是检验真理的唯一标准

1 楼说的不明白吗

#10 另外,阿里云的 OSS 搭配阿里云的 CDN ,我记得价格最低可以节省到 0.15 左右。自建何必

一楼回复没问题,并没有恶意,只是调侃的方式建议你别这么搞。你又何必这么玻璃心呢。
你自己认真想一想,心里回答一下一楼的问题,难道不觉得人家的建议很有价值吗

MinIO 集群能在线扩容吗

#6 ECS 的流量费我没记错是 0.8 元/G 怎么也轮不到比 OSS 贵。而且为啥不套 CDN 呢

MinIO + CDN

云厂商的 oss 综合成本比自建的低,实在想不出自建的必要性,除非有特殊的定制业务?