在实际生活中, 提供同一个服务的服务器一定不会仅是一个主机的, 在客流量很大的情况下, 一定会在 varnish 这的后端服务器进行一个负载均衡, 以减少后端服务器的压力
我在提供 apache 服务的主机上设置了两个虚拟主机
server2 与 server3 均有提供 www.laozhao.com 服务对此进行一个负载均衡
vim /etc/varnish/default.vcl
- backend web1 {
- .host = "172.25.99.2";
- .port = "80";
- }
- backend web2 {
- .host = "172.25.99.3";
- .port = "80";
- }
- director lb round-robin { #定义一个对 web1 与 web2 进行轮循 lb
- {.backend = web1;}
- {.backend = web2;}
- }
- sub vcl_recv {
- if (req.http.host ~ "^(www.)?laozhao.com") {
- set req.http.host = "www.laozhao.com";
- set req.backend = lb; ## 在访问 www.laozhao.com 时, 分别从 web1,web2 进行掉去数据
- return(pass); ## 在实际生活中, 是不会进行这样的定义的, 因为有 ttl 时间, 在缓存中有响应的数据, 为了方便测试, 则使用到了这条语句
- } elsif (req.http.host ~ "^bbs.laozhao.com") {
- set req.backend = web1;
- } else {error 404 "zhao cache";
- }
- }
测试:
分别从 web1 与 web2 进行调取数据
来源: http://www.bubuko.com/infodetail-2492886.html