文件/视频服务 - 服务器集群配置

文件/视频服务 - 服务器集群配置

我目前有 5 台服务器。1 台服务器用作主服务器,用于保存所有视频文件,其他 4 台服务器是复制服务器,并使用 rsync 从主服务器获取视频。视频通过 nginx 伪流通过 HTTP 传送。

我想问的是,是否有更好的方法?如果 1 个特定服务器仅保存该文件,会更好吗?例如:file1.mp4 将不会复制到所有服务器,而只会保留在一台服务器上?这种方法会减轻 IO 负载吗?

因为目前,观众在观看视频时会被随机转发到这些服务器中的任何一个。由于所有这些服务器都保存着相同的文件,我估计搜索需要时间,因为每个服务器都有近 13,000 个视频。

另外,是否可以对 TCPIP/sysconf 进行调整以优化此视频服务?

服务器配置:

  • 所有服务器均配置raid 10 4x2TB 12GB内存。
  • 1GBPS 不限流量(100tb.com)
  • CentOS
  • Nginx 伪流

答案1

我会将它们复制到您的服务器上,如果您的视频广为流传,您将在一台服务器上承受巨大的负载。如果您复制它们,您可以将负载分散到其他服务器上。

如果它继续这样增长,我建议您研究 SAN 等特殊存储选项。

答案2

最重要的是,开始收集指标。收集所有可以收集的指标并存储起来。找出哪些文件被访问、访问频率、访问哪些服务器、收到什么样的请求、请求来自哪里、带宽使用情况、网络延迟、I/O 访问。您的系统是否在等待文件系统?或者等待 Nginx 处理请求?不要依赖直觉,认为您的架构速度因某个方面而受到阻碍。也可能是另一个方面。话虽如此,这里有一些您可以改变的小细节。

atime如果尚未关闭文件系统的更新,您可能需要关闭它。由于这是某种 Web 系统,因此您最好使用日志,而不是依赖文件系统的访问时间概念。这将避免对磁盘进行不必要的额外写入。

我唯一想改变的 TCP 选项是打开显式拥塞通知。虽然它还没有普及,但我认为随着时间的推移,它会变得越来越流行。随着它的传播,它将有助于减少服务器和用户之间的链接拥塞。

ECN 的一个缺点是,一些有缺陷的旧路由器会忽略带有 ECN 的数据包。如果您愿意承担这个风险,请将其打开。

您可能还想调查缓冲区膨胀如果可能的话。虽然实际的流媒体并不太在意缓冲区(只要视频数据包在本地缓冲区用完之前到达,视频播放器就不会太在意),但初始GET请求会很在意。这只是需要注意的事情,因为视频流媒体肯定会造成网络拥塞。

相关内容