我正在尝试为CDN设置冗余的原始服务器,以便按需提供video文件。 目前的设置是,我有两个“媒体”服务器具有较大的存储容量,并运行nginx。 在这两台服务器的前面是另一个nginx服务器,它被设置为一个反向代理,将请求分解到每个服务器。
每个媒体服务器上存储了每个video的副本。 它们被复制到每个媒体服务器,但可能稍有不同。 因此,nginx会为video请求返回略微不同的LastModified标题,具体取决于nginx服务器提供的服务。
问题是,caching数据的CDN有时会向源服务器发送IMS(If Modified Since)请求,并使用该信息来确定是否需要刷新其caching中的video。 CDN为video提供字节范围请求,这些请求可以在两台服务器之间轻松拆分。 如果字节范围请求继续得到不同的最后修改标题,一切都搞砸了。
这是一个可解决的问题? 我是否需要使用其他一些机制来保持两台服务器之间的数据“同步”? 也许我可以使用rsync将数据从一个存储服务器复制到另一个存储服务器,并传入一个保留所有创build/修改时间的选项?
你只是复制文件? 任何用于复制的程序都有一些复制时间戳的方法,这样它们对于两个副本都是相同的。
例如,在Linux上使用GNU cp程序:
cp --preserve=timestamps source destination
当然,因为这是默认的行为…检查文件,无论你用什么来复制文件。