我正在尝试寻找一个网络缓存的最佳机器配置,以便为几千名并发观众提供 HTTP 分段视频。
内容由定期更新的几个字节(100 - 500 字节)大小的文本文件(称为清单)和一组数千字节大小(52,000 - 250,000 字节)的视频片段文件组成。
我的设置有一个实时视频源服务器,可将这些文件放到支持 WebDAV 的服务器(该服务器将是经过适当配置的 Apache 或 Nginx)。我希望使用标准硬件和开源软件在多个位置部署此“源”设置,以便为用户群体提供服务。
我的问题是:
- 我正在考虑在边缘缓存中使用 Nginx + Varnish 的组合。这听起来合理吗?
- 什么是好的机器配置?我正在考虑 3X2TB 7200RPM HDD(RAID5 和 24GRAM),1 个四核 CPU。这对 Varnish 有用吗?我需要优化某个特定参数才能充分利用 Varnish 吗?
- 在 HA 对中设置 Varnish 是否有意义,还是通常单独设置?
答案1
Nginx 可以使用 proxy_cache 模块自行执行缓存,尽管 Varnish 具有更多功能(您可能不需要)。执行此任务时,您可能会受到 IO 限制,而不是 CPU 限制。因此,我建议使用大量 RAM 或 SSD 进行缓存。RAID5 是一个糟糕的想法(小规模的随机写入是非常对于 RAID5 来说,其写入速度很慢),SATA 驱动器对于高 IO 任务来说也是如此(它们每个磁盘只能执行大约 70 IOPS,对于 RAID5 写入则除以 4)。
即使有 10000 个并发流和 5 秒的视频片段,最坏情况下也只有 2000 个随机 IOP。任何 SSD 都可以处理这种情况(假设它足够大),如果数据集足够小,文件系统缓存将帮助您实现这一点。