varnish配置及原理

varnish配置及原理


varnish是一个缓存调取技术,即第二次访问的时候,如果有缓存信息,则直接从缓存中掉用。

varnish server端部署在lamp的主节点,可以对前端的访问做出后端的调度.


Varnish单节点配置:

Server :192.168.122.9

varnish-后端:192.168.122.188


download: varnish-3.0.3-1.el6.x86_64.rpm varnish-libs-3.0.3-1.el6.x86_64.rpm


yum localinstall -y varnish-3.0.3-1.el6.x86_64.rpm varnish-libs-3.0.3-1.el6.x86_64.rpm


vi /etc/varnish/default.vcl :


backend web1 {

.host = "192.168.0.188"; #这个是后端要调度的web的服务器地址

.port = "80";

}

...

###查看缓存命中情况

sub vcl_deliver {

if (obj.hits > 0) { #命中的时候

set resp.http.X-Cache = "HIT from westos cache";

}

else { #没命中的时候

set resp.http.X-Cache = "MISS from westos cache";

}

return (deliver);

}


###配置varnish 服务端口

###这个对应了你后端服务开启的端口

###就是说,后端的服务开启了什么端口,这里就要开启什么端口


# vi /etc/sysconfig/varnish

VARNISH_LISTEN_PORT=80


service varnish reload


curl -I 192.168.122.9 #前端的web调度主节点


varnish后端的负载均衡

varnish-server:192.168.122.9

varnish-loadbalancer:192.168.122.174 192.168.122.15


#注意varnish不适宜把内存设太小,不然可能导致varnish无法启动.


###定义多个不同域名站点的后端服务器

backend web1 {

.host = "192.168.122.15";

.port = "80";

}

backend web2 {

.host = "192.168.122.174";

.port = "80";

}


#合并为一个组-方便健康检查

director lb round-robin {

{.backend = web1;}

{.backend = web2; }

}



sub vcl_recv {

if (req.http.host ~ "^(www.)?westos.org") {

set req.http.host = "www.westos.org";

set req.backend = lb;

return (pass);

#为了测试方便,不进行缓存。

} elsif (req.http.host ~ "^bbs.westos.org") {

set req.backend = web2;

} else {

error 404 "westos cache";

}

}



之后客户端:设定DNS解析—192.168.122.9 www.westos.org

之后访问www.westos.org

或者用curl -I www.westos.org 来查看命中情况。


你可能感兴趣的:(varnish配置及原理)