【问题标题】:Varnish with multiple backends serves stale content during deploy具有多个后端的清漆在部署期间提供陈旧的内容
【发布时间】:2018-07-26 11:32:57
【问题描述】:

我们在服务 HTML+CSS 的 10 个 Nginx 服务器前使用 Varnish。 CSS url 的格式如下:“file-HASH.css”(带有 HASH 内容校验和)。

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

  • 版本 A => “file-A.css”(已在清漆缓存中)
  • 版本 B => “file-B.css”(仅存在于某些后端)

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

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

我看到了一些解决方案:

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

任何输入?

【问题讨论】:

    标签: deployment assets varnish varnish-vcl


    【解决方案1】:

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

    不过,最简单的解决方案是将部署与发布分离。首先部署一个包含所有新 css 文件的版本,然后在数据库中打开一个标志或部署使用这些文件的代码。将你的发布分成两部分可能有点原始,但它会确保当 Varnish 请求资源时资源就在那里。

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 1970-01-01
      • 2021-05-09
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      相关资源
      最近更新 更多