[文章作者:张宴 本文版本:v1.2 最后修改:2008.01.02 转载请注明出处:http://blog.zyan.cc]

  我曾经写过一篇文章──《初步试用Squid的替代产品──Varnish Cache网站加速器》,但当时仅仅是用着玩,没做深入研究。

  今天写的这篇关于Varnish的文章,已经是一篇可以完全替代Squid做网站缓存加速器的详细解决方案了。网上关于Varnish的资料很少,中文资料更是微乎其微,希望本文能够吸引更多的人研究、使用Varnish。

  在我看来,使用Varnish代替Squid的理由有三点:
  1、Varnish采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。
  2、Varnish的稳定性还不错,我管理的一台图片服务器运行Varnish已经有一个月,没有发生过故障,而进行相同工作的Squid服务器就倒过几次。
  3、通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存,这一点是Squid不能具备的。

  点击在新窗口中浏览此图片


  下面来安装Varnish网站缓存加速器(Linux系统):
  1、创建www用户和组,以及Varnish缓存文件存放目录(/var/vcache):
/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


  2、创建Varnish日志目录(/var/logs/):
mkdir -p /var/logs
chmod +w /var/logs
chown -R www:www /var/logs


  3、编译安装varnish:
wget http://blog.zyan.cc/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


  4、创建Varnish配置文件:
vi /usr/local/varnish/vcl.conf

  输入以下内容:
引用
backend myblogserver {
       set backend.host = "192.168.0.5";
       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 ~ "^blog.zyan.cc") {
               set req.backend = myblogserver;
               if (req.request != "GET" && req.request != "HEAD") {
                       pipe;
               }
               else {
                       lookup;
               }
       }
       else {
               error 404 "Zhang Yan 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 ~ "\.(txt|js)$") {
               set obj.ttl = 3600s;
       }
       else {
               set obj.ttl = 30d;
       }
}

  这里,我对这段配置文件解释一下:
  (1)、Varnish通过反向代理请求后端IP为192.168.0.5,端口为80的web服务器;
  (2)、Varnish允许localhost、127.0.0.1、192.168.0.***三个来源IP通过PURGE方法清除缓存;
  (3)、Varnish对域名为blog.zyan.cc的请求进行处理,非blog.zyan.cc域名的请求则返回“Zhang Yan Cache Server”;
  (4)、Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。之所以这样配置,是因为POST请求一般是发送数据给服务器的,需要服务器接收、处理,所以不缓存;
  (5)、Varnish对以.txt和.js结尾的URL缓存时间设置1小时,对其他的URL缓存时间设置为30天。

  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、启动varnishncsa用来将Varnish访问日志写入日志文件:
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/varnish.log &


  7、配置开机自动启动Varnish
vi /etc/rc.local

  在末尾增加以下内容:
引用
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
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log &


  8、优化Linux内核参数
vi /etc/sysctl.conf

  在末尾增加以下内容:
引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000    65000



  再看看如何管理Varnish:
  1、查看Varnish服务器连接数与命中率:
/usr/local/varnish/bin/varnishstat

  点击在新窗口中浏览此图片

  2、通过Varnish管理端口进行管理:
  用help看看可以使用哪些Varnish命令:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 help

引用
Available commands:
ping [timestamp]
status
start
stop
stats
vcl.load
vcl.inline
vcl.use
vcl.discard
vcl.list
vcl.show
param.show [-l] []
param.set
help [command]
url.purge
dump.pool


  3、通过Varnish管理端口,使用正则表达式批量清除缓存:
  (1)、例:清除类似http://blog.zyan.cc/a/zhangyan.html的URL地址):
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge /a/

  (2)、例:清除类似http://blog.zyan.cc/tech的URL地址:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge w*$

  (3)、例:清除所有缓存:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge *$


  4、一个清除Squid缓存的PHP函数(清除Varnish缓存同样可以使用该函数,无需作任何修改,十分方便):


  附1:Varnish官方网站:http://www.varnish-cache.org/

  附2:2007年12月10日,我写了一个每天0点运行,按天切割Varnish日志,生成一个压缩文件,同时删除上个月旧日志的脚本(/var/logs/cutlog.sh):
  /var/logs/cutlog.sh文件内容如下:
引用
#!/bin/sh
# This file run at 00:00
date=$(date -d "yesterday" +"%Y-%m-%d")
pkill -9 varnishncsa
mv /var/logs/youvideo.log /var/logs/${date}.log
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log &
mkdir -p /var/logs/youvideo/
gzip -c /var/logs/${date}.log > /var/logs/youvideo/${date}.log.gz
rm -f /var/logs/${date}.log
rm -f /var/logs/youvideo/$(date -d "-1 month" +"%Y-%m*").log.gz

  设置在每天00:00定时执行:
  
/usr/bin/crontab -e
  或者  
vi /var/spool/cron/root
  输入以下内容:
引用
0 0 * * * /bin/sh /var/logs/cutlog.sh



Tags: , , ,



技术大类 » Cache与存储 | 评论(8410) | 引用(0) | 阅读(715685)
charliewil3112 Email Homepage
2020-5-28 12:26
Charlie Wilson is an enthusiastic  writer and reviewer of internet and related devices based at Toronto, Canada.  When Charlie is free he loves to read about new technology products such as Software and recent changes and updates. His articles are mostly internet and applications related you can follow to read more articles.For more information visit on office.com/setup | Norton.com/setup | office.com/setup
SSC Result Homepage
2020-5-29 13:15
https://bdallresults.com/ssc-result . Thanks for share.
SSC Result Homepage
2020-5-29 13:16
Roberts Email Homepage
2020-5-29 13:45
This is a good article. The author did much justice for us the readers. I guess everybody has loved reading it just as i did. Be happy to find us at <a href="http://essayever.com/assignment-writing-service-near-me">write assignment for me</a> so that we can help you with your assignments. We have the best writers
jemasjaoin1 Email Homepage
2020-5-29 15:44
I use AOL emailing service for smooth and clear communication. But from the last three or four weeks, my AOL mail is not working, so I am extremely disappointed.
MATLAB Simulink Assignment help Email Homepage
2020-5-30 22:11
MATLAB Simulink Assignment helphttps://www.myassignmenthelp.net/simulinkI got very good MATLAB Simulink Assignment help for me urgent basis you can get the best assignment help online from one of the most trusted services myassignmenthelp.net they are offering world-class assignment help services on almost every subject. Then here is the best chance for you. Our assignment experts are accessible 24*7 hours.
sadiq Email Homepage
2020-5-31 02:34
I hope you continue to have such quality articles to share with everyone! I believe a lot of people will be surprised to read this article!http://www.legaladviceonline.in
SADIQ Email Homepage
2020-5-31 02:35
I hope you continue to have such quality articles to share with everyone! I believe a lot of people will be surprised to read this article!<a href="http://www.legaladviceonline.in/"> legal advice online </a>
SADIQ Email Homepage
2020-5-31 02:35
I hope you continue to have such quality articles to share with everyone! I believe a lot of people will be surprised to read this article!<a href="http://www.homesalon.in.in/"> legal advice online </a>
installvipreantivirus Email Homepage
2020-6-1 12:58
Install vipre on your device and protect it from cyber threats.<a href="https://installvipreantivirus.com/">install vipre using product key</a><a href="https://installvipreantivirus.com/vipre-download-with-product-key/">vipre download with product key</a><a href="https://installvipreantivirus.com/vipre-activation/">vipre activation</a>  <a href="https://installvipreantivirus.com/i-need-to-install-vipre/">i need to install vipre</a>  <a href="https://installvipreantivirus.com/install-vipre-with-key-code/">install vipre with key code</a>
Mcafee.com/activate Email Homepage
2020-6-1 20:08
Thank you for sharing your info. I really appreciate your efforts and Thanks a lot for sharing a piece of wonderful information which I am looking for a longer period of time.
darkvanilla39 Email Homepage
2020-6-1 21:38
Webroot antivirus wants their customer to become well aware of the pc virus and tell the way they might procure their data added to their apparatus from becoming hurt.visit@:-  router support number|webroot geek squad|email customer number
cbis Email Homepage
2020-6-2 20:38
If you are looking for lean six sigma certification in Australia then contact CBIS (Comprehensive Business Improvement Solutions) which provide world class training and study material for six sigma certification. We have a well experienced team of professionals from  academic and corporate  backgrounds.
avg Email
2020-6-3 15:18
AVG Anti-Virus puts a stronger push toward personal data management and privacy utilities that help prevent uninvited access to your files. AVG AntiVirus is now part of AVG Protection, a single anti-malware package that lets you protect an UNLIMITED number of Windows and Mac computers, as well as Android phones/tablets, from one easy-to-use dashboard.www.avg.com/retail |avg.com/retail
netgear extender setup Email Homepage
2020-6-3 16:49
A Netgear Wi-Fi extender is a device that is used for propagating the internet signal in those areas of the home where the message doesn't reach properly. Hence, by installing the Netgear range extender in the house is the correct way to deal with no internet signal issue. But, before installing the Netgear range extender, one must know the steps to setup Netgear extender. Therefore, for all users, we have here discussed the ways for completing the setup process.The methods provided here in this section, we have enrolled some simple and easy Netgear range extender setup steps that would be helpful to get out of the trouble. Thus, the users who are interested to learn how to set up Netgear extender, and then check out the details provided here in this content. The Netgear extender setup is the ultimate solution to spread the Wi-Fi signals to every corner of the house. Thus, the users who are not able to accomplish the  process, then they should not worry. As here we have provided some quick fixes to deal with the setup procedure.Netgear range extender setup
norton setup Email Homepage
2020-6-4 14:55
Norton.com/setup encompasses complete and easy guidelines that are necessary for setting up Norton Setup on your device and protect it from virus http://usa-norton.com/
shoptrendmicro Email Homepage
2020-6-4 18:12
Mobile repair near me Email Homepage
2020-6-5 16:29
I can see that you are an expert in this field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business. Vivo Service Center in Velachery My friend just emailed me a link to this article and I have to say that it's been a while since I read anything through from start to finish. Thanks. It was a brilliant way to begin my day. Mi Service Center in Velachery
Mobile repair near me Email Homepage
2020-6-5 16:34
I really enjoyed reading this post, big fan. Realme Service Center in Velachery  Keep up the good work and please tell me when can you publish more articles or where can I read more on the subject? Thank you very much for this valuable information and all of your worthwhile informative posts of the past! motorola service center in velachery
usakaspersky Email Homepage
2020-6-5 19:06
https://usakaspersky.org| How to install and activate kaspersky on multiple computers<a href="https://usakaspersky.org/find-kaspersky-on-my-computer">find kaspersky on my computer</a><a href="https://usakaspersky.org/download-kaspersky-with-activation-code">download kaspersky with activation code</a><a href="https://usakaspersky.org/usa-kaspersky-com-kisdownload">usa kaspersky com kisdownload</a><a href="https://usakaspersky.org/install-kaspersky-purchased-already-2020">install kaspersky purchased already-2020</a>
分页: 157/421 第一页 上页 152 153 154 155 156 157 158 159 160 161 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]