首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >同步多个Varnish缓存服务器

同步多个Varnish缓存服务器
EN

Stack Overflow用户
提问于 2011-08-17 23:13:03
回答 2查看 3.7K关注 0票数 4

我们有两个服务器,web1和web2,每个服务器都运行Apache和Varnish。它们是负载均衡的,持续时间为30分钟。

在我们的测试中,我们发现在某些情况下,页面被缓存在一个Varnish实例(比如web1)上,而不是缓存在web2上的Varnish上。

有没有办法让它们保持同步?所以当一个页面在web1中被缓存(或清除)时,它也会被加载到(或从) web2中,反之亦然?

EN

回答 2

Stack Overflow用户

发布于 2011-08-18 02:54:10

您可以使用一种清漆作为另一种清漆的后端。

你可以这样做:

// use random director so you can fall back to web
director varnish random {
    {
        .backend = varnish2;
        .weight  = 100000000;
    }
    {
        .backend = web;
        .weight = 1;
    }
}

acl othervarnish {
        "{hostname}";
}

sub vcl_recv {
  set req.backend = web;

  // switch backend to varnish only if you haven't come from there
  if (!client.ip ~ othervarnish) {
     set req.backend = varnish;
  }
}

但请注意,这看起来像是doesn't work with ESIs

票数 1
EN

Stack Overflow用户

发布于 2017-08-12 23:56:53

我也在寻找一个解决同样问题的解决方案,但还没有找到。

一种解决方法可能是:

在您的web服务器前放置一个HAProxy,并激活粘性会话。因此,用户只会被定向到他之前访问过的一个varnish服务器(并保存相同的缓存数据)。

要正确清除这两个varnish,您的脚本或应用程序应该遍历所有varnish服务器的列表并逐个清除它们。

在我看来,这个解决方案是不被推荐的。Varnish应该支持设置网格,所有服务器都可以随着时间的推移进行同步(最终保持一致)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7095153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档