CDN体系结构 – 最佳实践和devise

我是一个严重依赖静态内容的网站的开发者,例如图片,video等等。我们目前的设置非常简单,我们基本上有一台服务器作为我们的cdn,然后由web服务器通过rsync进行更新。 简单,如果这个设置有两个缺点,主要是我们也必须rsync在Web服务器之间的任何变化的事实。

我们现在正在寻找一个不那么脱节的build筑。 一个想法是使用可以在每个Web服务器上安装的NAS,这意味着我们不必依靠rsync,但会引入单点故障。

有没有人有任何成功,相当高的数量(约10tb一个月)CDN设置和架构的知识?

首先,您不使用“ 内容传送networking ”(CDN),您只有一个专用于静态内容的networking服务器。 如果您使用CDNsearchsearch词,那么您将得到错误的答案,因为这是错误的词。

您可以考虑使用真正的CDN,它将您的静态数据caching在全球各地,为您的terminal用户提供更快,更快的服务 。 由于CDN将数据caching到最终用户附近,所以它具有较低的networking延迟,从而加速下载。 它还提供了一个可扩展性的好处,几乎完全从您自己的服务器上卸载静态内容。 MaxCDN和Amazon CloudFront是常见的低成本select。

如果您的需求较小,您也可以使用一些Web服务器来提供您的静态内容。 这很简单。 在这种情况下,你的问题似乎是关于部署 ,即获得静态文件到Web服务器。 有很多方法可以做到这一点,这取决于你使用的是什么软件,以及你的内部工作stream程是怎样的,也许你应该用更精确的信息来打开另一个问题。

如果它是静态内容,为什么不使用大caching反向代理,无论是使用Apaches代理还是nginx甚至lighttpd,这是轻而快的。

另一个想法是在networking上使用RAID 1的DRBD。 2台服务器将镜像对方磁盘。 他们必须是主/主模式,但由于它主要是只读的,所以您可能不需要运行群集软件。 否则,你可以使用ocfs2(oracle磁盘集群)。 至less在这种情况下,任何服务器死亡都在另一个服务器磁盘上被镜像。

我认为rsync是好的,只是你需要使其可扩展。 例。 build立一个后端的dns结构,其中包括指向你的内容/networking主机的“clusterhost-1,clusterhost-2等”的CNAMES,主内容服务器进行DNS AXFR传输以获得一个域列表(清除什么不是clusterhost )并通过它们运行并rsync它们。 如果你有一个新的服务器,为它添加一个新的CNAME,它会在下一轮自动rsync ..你想要一个脱机不使用,删除该主机的CNAME,它不会被更新。 反向代理也是一样的,你可以通过制作多个CNAMES并将它们添加到代理列表来控制加载,并将logging更改为指向任何你想要的后端。

希望这给出一些想法。