文件/video服务 – 服务器群集configuration

我目前有5台服务器。 1台服务器作为主服务器,存放所有video文件,另外4台服务器使用rsync从主服务器复制并提取video。 video通过HTTP通过nginx伪stream传送。

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

因为现在,观看者在观看video时被随机地转发到任何这些服务器。 由于所有这些服务器都拥有相同的文件,因此我认为需要花费时间来search,因为每个video都有近13000个video。

另外,是否有调整TCPIP / sysconf优化这个video服务?

服务器configuration:

  • 所有的服务器都configuration了raid 10 4x2TB 12GB的内存。
  • 1GBPS未计量(100tb.com)
  • CentOS的
  • Nginx伪stream媒体

我会复制他们在你的服务器上,如果你有一个video病毒,你会得到一个服务器上的巨大负载。 如果复制它们,则可以将该负载分发到其他服务器上。

如果它保持这样的增长,我build议你看看像SAN这样的特殊存储选项。

最重要的是,开始收集指标。 度量所有可以存储的东西。 找出哪些文件正在被击中,多久,哪些服务器,请求是什么types,来自哪里,带宽使用,networking延迟,I / O访问。 你的系统正在等待文件系统吗? 还是让Nginx来处理请求? 不要依靠预感,并认为你的架构的速度由于某个方面而被阻止。 它可能是另一个容易。 话虽如此,以下是一些你可以改变的小东西。

如果您还没有这样做,您可能需要closures文件系统的atime更新。 由于这是某种Web系统,所以最好使用日志而不是依赖文件系统的访问时间概念。 这将避免额外的不必要的写入磁盘。

我试图改变的唯一TCP选项是打开显式拥塞通知 。 虽然不是很普遍,但我认为随着时间的推移,它会变得更加普遍。 随着扩展,它将有助于减less服务器和用户之间的链接拥塞。

一个与ECN的警告是一些越野车古代路由器忽略与ECN的数据包。 如果你愿意冒这个险,那就把它打开。

如果可能的话,你也可能想调查缓冲区溢出 。 尽pipe实际的stream媒体对缓冲区不太感到困扰(只要在本地缓冲区用完之前video数据包到达那里,video播放器不介意太多),那么最初的GET请求将会是。 这只是一个需要注意的事情,因为videostream是networking拥塞的必然方式。