使用Varnish替代Squid的体验

之前曾在Windows上使用了Squid作为图片服务器的缓存,效果还不错。

前几天看到张宴同学的一篇文章《使用Varnish代替Squid做网站缓存加速器的详细解决方案》,就决定试试Linux+Varnish。

 

-------------------------------------------

 

一:安装Varnish(Linux系统)

基本安装过程,包括目录结构的安排就是依葫芦画瓢的学张宴同学。

 

1. 创建 www 组和账户 , 缓存文件目录( /var/vcache ) ,日志目录( /var/logs ) :

/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www

mkdir
-p /var/vcache
chmod
+w /var/vcache
chown
-R www:www /var/vcache

mkdir -p /var/logs
chmod +w /var/logs
chown -R www:www /var/logs

系统有可能会提醒你,权限编号 48 被占用,改成 49 一样可以使用。也可以直接 vi /etc/passwd 修改。

 

 

2.下载Varnish 编译安装:(下载地址也是张宴同学的)

wget http://blog.s135.com/soft/linux/varnish/varnish-1.1.2.tar.gz
tar zxvf varnish
-1.1.2.tar.gz
cd varnish
-1.1.2
.
/configure --prefix=/usr/local/varnish
make
&& make install

将Varnish安装到 /usr/local/varnish 目录中。


 

3.创建Varnish配置文件(/usr/local/varnish/vcl.conf):

vi /usr/local/varnish/vcl.conf
进入VI界面,按Insert键修改文件,按Esc + :wq 保存退出。


4.配置文件内容(可以按照自己需求修改):
backend image1server {
set backend.host
= "222.73.×××.1";
set backend.port
= "80";
}

backend image2sserver {
set backend.host
= "222.73.×××.2";
set backend.port
= "80";
}


acl purge {
"localhost";
"127.0.0.1";
"192.168.1.0"/24;
}

sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error
405 "Not allowed.";
}
lookup;
}

if (req.http.host ~ "^image1.×××.com") {
set req.backend
= image1server;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
</span>else {
lookup;
}
}
elseif (req.http.host
~ "^image2.×××.com") {
set req.backend
= image2server;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
else {
lookup;
}
}

else {
error
404 "Picture Cache Server";
lookup;
}
}

sub vcl_hit {
if (req.request == "PURGE") {
set obj.ttl
= 0s;
error
200 "Purged.";
}
}

sub vcl_miss {
if (req.request == "PURGE") {
error
404 "Not in cache.";
}
}

sub vcl_fetch {
if (req.request == "GET" && req.url ~ "\.(html|asp)$") {
set obj.ttl
= 300s;
}
else {
set obj.ttl
= 7d;
}
}

(1)我是假设有2个域名指向本机器  image1.***.com 和 image2.***.com 。

(2)除了 image1.***.com 和 image2.***.com 其他的域名访问这台机器,都会返回404 Picture Cache Server。

(3).html 和 .asp 文件缓存时间为 300秒,其余的为 7 天。



5.启动Varnish:

ulimit -SHn 51200
/usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s file,/var/vcache/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on

 

 

6.记录Varnish日志:

/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/varnish.log &

 

 

设置开机启动,和切割日志文件,请看张宴同学的原文-=》 《使用Varnish代替Squid做网站缓存加速器的详细解决方案

 

 

 

 

二:管理Varnish

 

1.查看Varnish状态

/usr/local/varnish/bin/varnishstat -n /var/vcache/

 

2.查看访问最多的引用页面

/usr/local/varnish/bin/varnishtop -n /var/vcache/ -i rxheader -I Referer

 

3.查看本机器上被访问最多的元素

/usr/local/varnish/bin/varnishtop -n /var/vcache/ -i rxurl

 

 

 

刚刚学习,欢迎大家一起讨论讨论。

 

 

 

 

 

 

 


posted @ 2010-01-21 20:49  居小齐  阅读(1127)  评论(0编辑  收藏  举报