具有多个后端的清漆在部署期间提供过时的内容

时间:2018-02-15 16:23:36

标签: deployment assets varnish varnish-vcl

我们在服务于HTML + CSS的10台Nginx服务器前使用Varnish。 CSS url的格式如下:" file-HASH.css" (使用HASH进行内容校验和)。

当我们部署(从版本A到B)应用程序时,这需要一些时间,在此期间(几秒钟),最终用户可以下载2个版本的HTML:

  • 版本A => "文件A.css" (已在清漆缓存中)
  • 版本B => "文件B.css" (仅在某些后端出现)

版本A没问题:缓存了file-A.css。

版本B的问题:Varnish可以从尚未部署的后端获取文件!然后返回404。

我看到了一些解决方案:

  • 重试,直到找到css文件=>可以创建ddos
  • 通过varnishadm
  • 禁用部署期间未部署的后端
  • 使用单个后端存储资产=>不是H.A。

任何输入?

1 个答案:

答案 0 :(得分:0)

你可以做一些事情。您可以启动一组新的环境服务器,将负载均衡器置于Varnish后面,将新版本部署到其中一个服务器组,然后将流量路由到新组(绿蓝)。

然而,最简单的解决方案是解除部署版本。首先部署具有所有新css文件的版本,然后在数据库中转换标志或部署使用这些文件的代码。将您的版本拆分为两个部分可能有点原始,但是当Varnish要求时,它将确保资源存在。