[文章作者:张宴 本文版本: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与存储 | 评论(8743) | 引用(0) | 阅读(863125)
smithbill98 Email Homepage
2021-3-3 17:16
https://halleyroberts2061.wixsite.com/ios-app-developmenthttps://smithbill9870.medium.com/tips-to-choose-best-iphone-ios-app-development-company-6f089832e210https://halleyroberts2061.wixsite.com/hulu-activate
roku Email Homepage
2021-3-4 13:17
For Roku activation : roku.com/linkfor amazon :www.amazon.com/mytv enter code
roku Email Homepage
2021-3-4 14:55
Learn the basic and quick steps to access cbs.com/roku so that you can watch your favorite content online anytime anywhere. Make sure you follow the steps in order.
johnseena Email Homepage
2021-3-4 19:09
If you are facing issues while composing your academic papers because of being at home due to COVID-19 pandemic, take Assignment Help Australia. Take online services and stay at home in the Australia when you are bounded to avoid physical contact.
jameskrs Email Homepage
2021-3-5 14:21
Coursework is an inseparable a neighbourhood of the students. Students got to do the varied assignments that are entitled to be a neighbourhood of their coursework. Because of many reasons, they seem for Coursework Help to urge those assignments done.
kevin shaw Email
2021-3-5 15:55
Buy pain relief medicines at a cheap price in the USA, UK & Australia & get $25 OFF, Free Shipping, Fast + Free + Cash on Delivery (cod), $25 Discount, 100% Safe & Certified + FDA Approved drugs. Also find the complete details [Uses, Side Effects, Warnings, Precautions, Working Actions, Reviews, Price] of the medicines @Unitedmedicines.
AOL Mail Login Email Homepage
2021-3-5 16:57
Go to AOL Mail Login and click on the 'Login/join' option at the top. To sign up, enter your details or login directly if you are an existing user.https://sites.google.com/view/aolmailloginwwwmailaolcom/https://sites.google.com/view/aol-desktop-gold-login/https://sit...
AOL Mail Login Email Homepage
2021-3-5 17:01
https://sites.google.com/view/aolmailloginwwwmailaolcom/
Maxwell
2021-3-5 18:46
Our take my online exam for me makers understand all your demands and work in the asked direction to compose an accurate assignment. You must contact us for the best Assignment Help and get the best help. We offer excellent quality writing services that ensure high grades.take my online exam for me
bigpond email login Email Homepage
2021-3-5 20:01
BigPond email login services go suitably for business and personal use. BigPond email login helps to deliver emailing and entertainment services to users. They provide services with help of experts there is a list of services they provide like Entitlement to stay up-to-date with all your estimated call details and data usage, Ease to Pay bills, Effortless management of Pre-Paid bills, Set up Email invoice, Purchase movie tickets with BigPond.https://help-number-usa.com/bigpond-email-login/
installkaspersky Email Homepage
2021-3-5 20:03
install kaspersky with activation code | How to install and activate kaspersky on multiple computers

•  Each copy of a multiple-device license for Kaspersky Anti-Virus 2019 (for example, a 3 PCs license) is installed and activated in the same way on all computers you want to protect.
•  In conclusion to activate Kaspersky Internet Security 2019 on all computers, use one and the same activation code you purchased.

https://installkaspersky.com

<a href="https://installkaspersky.com/kaspersky-support-number/">kaspersky support number and Kaspersky Total Security Download</a>

<a href="https://installkaspersky.com/kaspersky-download-and-install">kaspersky installation</a>

<a href="https://installkaspersky.com/kaspersky-setup/">kaspersky setup</a>

<a href="https://installkaspersky.com">install kaspersky with activation code</a>

<a href="http://installkaspersky.com/kaspersky-code-activation">kaspersky code activation and kaspersky lab</a>

<a href="https://installkaspersky.com/geek-squad-kaspersky-activation-code">Geek squad kaspersky activation code</a>
Brajput123 Email Homepage
2021-3-8 14:17
Hulu is one of those apps that allow its customers to stream quality videos at a single platform. It comes up with thousands of video content that you can enjoy all day long. Moreover, it provides you access to on demand video streaming. But, what if Hulu activate not working correctly. What are you going to do in this case? Whether you will sit on the couch and relax or will try to resolve the issue. If you choose the former,If you are facing issues related to your Hulu activation, this article will be the best place where you can get all the solutions to your queries. Hulu activation is such an issue that most of the Hulu subscriber faces. hulu activate not working
Suddenlink email login Email Homepage
2021-3-8 14:52
For Suddenlink email login, either go to Suddenlinknet or go to the Suddenlinkcom page, enter your username and password, and tap on the 'SIGN IN' button.https://sites.google.com/view/suddenlinklogin/
Ajit Email
2021-3-9 00:47
Love to read this amazing and helpful post. I would like to thanks to you for this beautiful post. Satta King
Mcafee.com/Activate Email Homepage
2021-3-9 17:22
Mcafee.com/Activate – The danger presented by PC infections, malware, and cybercrimes isn’t obscure to us. Be that as it may, because of carelessness, numerous individuals avoid potential risk to manage it. Regardless of satisfactory information, we frequently disparage the way that nothing will ever happen to our gadgets. It’s a well-known axiom that “Counteraction is in every case superior to fix”. Mcafee.com/Activate
Mcafee.com/Activate Email Homepage
2021-3-9 17:24
McAfee is among the best security instrument that gives an assortment of security highlights to its clients. John McAfee built up the product and it offers different encryption and security apparatuses to give improved security to online just as disconnected information. In the midst of the expanding number of cybercriminals and online robberies, McAfee attempts to invest all its energy into making the product compelling. It is fit for examining and evacuating any most recent and new-showing up infections for corporate divisions and different foundations. It likewise cautions you if any destructive infections and spying eyes assault your information. One can visit the site Mcafee.com/Activate to know its highlights and procedure identified with download, establishment, and activation.Mcafee.com/Activate
mcafee.com/activate Email Homepage
2021-3-9 17:27
Visit McAfee Activate official site mcafee.com/activate in any program.Enter your 25 digits McAfee Activation Product Key.Sign in to your McAfee account with certifications.Snap Submit and Choose "Nation and language".When Logged in, Download your Setup in download envelope.Run application to introduce, You're good to go to go! mcafee.com/activate
mcafee.com/activate Email Homepage
2021-3-9 17:28
Visit McAfee Activate official site mcafee.com/activate in any program.Enter your 25 digits McAfee Activation Product Key.Sign in to your McAfee account with certifications.Snap Submit and Choose "Nation and language".When Logged in, Download your Setup in download envelope.Run application to introduce, You're good to go to go! mcafee.com/activate
mcafee.com/activate Email Homepage
2021-3-9 17:29
When you subscribe for any of such product designed by mcafee.com/activate, you’ll be complimented with a McAfee activate 25 digit code, which in r eality, is what you’re paying for. A unique 25-digit McAfee product key, commonly referred to as McAfee activation code, is mandatory to have in your inventory to proceed with download, activation, renewal process of McAfee subscriptions.mcafee.com/activate
分页: 208/438 第一页 上页 203 204 205 206 207 208 209 210 211 212 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]