LB服务器下的清漆

时间:2014-04-03 13:50:44

标签: caching reverse-proxy varnish varnish-vcl

我们有2个文件服务器(Apache端口-82),它在Load Balancer下运行。我已经为2个服务器(端口-80)中的域(imgs.site.com)成功配置了清漆,并且当我为服务器添加主机条目时它正常工作但是当我全局访问它(通过LB)时它已中止请求。我想我的配置中缺少一些东西。请帮忙。

这是我的vcl配置,我在file1和file2服务器中都有相同的配置

backend default {
  .host = "127.0.0.1";
  .port = "82";
  .first_byte_timeout = 60s;
  .between_bytes_timeout = 60s;
}

sub vcl_recv {

    if (req.request != "GET" &&
         req.request != "HEAD" &&
         req.request != "PUT" &&
         req.request != "POST" &&
        req.request != "TRACE" &&
        req.request != "OPTIONS" &&
         req.request != "DELETE") {

  return (pipe);
 }



if (req.http.host == "imgs.site.com") {

       set req.http.host = "imgs.site.com";
       set req.backend = default;
       return (lookup);
  }

}

这可能是一个基本问题,因为我们不熟悉清漆,我们不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

因此,为了澄清,您有一个域imgs.site.com的负载均衡器将请求传递到两台计算机上的端口80。其中每个都在端口82上运行清漆和路由请求。如果某个新请求被路由到http服务器A,然后相同的请求再次进入并被路由到http服务器B,则第二个请求将为作为第一个慢,你最终会在两台机器上缓存相同的查找,因此如果你设置一个清单并将其用作{{3中的负载均衡器,那么你可以获得更好的缓存性能}}

但是要按原样解决问题,您可以通过在请求进入时运行round-robin configuration来获取有关清漆如何响应请求的诊断信息。您可以进一步验证来自清漆机的请求它的后端(在这种情况下,本身)通过从清漆机上的shell运行来工作:

$ telnet 127.0.0.1 82

如果您看到成功消息,请输入基本GET命令(之后返回两个):

GET / HTTP/1.0

您可以使用wget或curl命令测试需要身份验证或POST有效负载的更复杂请求。

当然,通过检查日志来验证http服务器是否正在接收请求。