冗余Web静态内容存储 – 有哪些技术? (小规模)

我们的静态Web服务器的现状:

  • 2个2U服务器,全部用于存储数据的SSD(raid5)
  • 数据只能通过我们的应用程序写入(*)
  • 大量的小图像文件(一个图像是〜50kB)
  • stream量负载平衡2 DNSlogging+ keepalived /心跳在服务器之间
  • 在峰值时间内〜4Gbps的总stream量(每台服务器〜2Gps)
  • 用户通过nginx访问文件,通过ftp访问内部应用程序
  • 我们使用的只是获取,删除,放 – 我的意思是,没有文件追加和其他posix调用使用,我们只操作整个文件(甚至HTTP范围请求是不允许的)

(*)只有我们的内部应用程序通过ftp写入两台服务器。 如果其中一个失败,整个操作失败=>当其中一个服务器closures时上传不起作用。 但是,向Web客户端提供静态内容仍然有效。

我们已经达到了磁盘容量的50%,我们开始寻找更好的解决scheme。 因为我们不需要标准的posix调用,所以我正考虑迁移到对象存储。

我发现OpenStack Swift非常有名,可能会有用。 我害怕的是:

  • 我们将仅在下一个半年运行在两台服务器上
  • 我们有很多networkinghttpstream量,我不确定迅速可以处理

另一个问题是更具体一点。 我们希望为用户提供通过一些上传表单(例如eshop中的图片产品)上传内容的能力。 所以问题是 – 是否有任何直接上传进度条的方式,…? 或者我们必须把它上传到没有处理任何静态内容(=不在git中的内容)的标准Web服务器,然后将其上传到对象存储。

随意张贴您的意见,甚至更好的最佳做法。

还有一件重要的事情 – 我们不想使用任何CDN提供商。

更新#1:

好了朋友们。 还有一些我发现的技术:

  • GlusterFS:不幸的是非常慢,并不稳定。
  • HDFS:我没有经验。 你什么事?

估计您的存储上的实际负载将非常有用。

使用提供的参数进行原始计算可以获得大约10KGets / sec(4Gbps / 50KB)。 但是它没有考虑到cachingfunction。

我想SWIFT设置能够承担这个负载需要大量的投资。 我们的同事试图使用SWIFT来存储需要SWIFT的数千IOPS性能的特殊用途数据库块。 但是我没有听说他们取得了很好的成绩。 最后我知道它还是试验台。 另外,我没有发现其他人报告的很好的结果。

我同意你的理由,即减lessPOSIX需求的共享存储当然是有益的。 但SWIFT是在高层实施的,这为操作带来了巨大的开销。 另外它有一个相当复杂的架构。 所以,我不确定SWIFT是否适合于IOPS负载较重的小型安装。

另外,考虑到SWIFT的使用使得我们可以考虑使用经典的本地文件系统从“盒子”中获得的RAMcaching层的实现。

最后的SWIFT冗余是通过全面的数据复制来实现的。 因此,您的SSD空间效率将提供RAID5(4 + 1)的40%左右。

我发现经典的方法更具吸引力:专用的存储盒,冗余RAID控制器和集群文件系统GFS / OCFS2就可以了。