varnish squid 简单介绍
挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好
Varnish是一款高性能、开源的反向代理服务器和缓存服务器.其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一。Varnish采用全新的软件体系结构,和现在的硬件体系配合比较紧密。Varnish采用VCL的配置,而且具有强大的管理功能,如top、stat、admin、lis,管理方式比较灵活。Varnish的状态机设计不仅巧妙,结构也很清晰,利用二叉堆管理缓存文件,即可达到随时删除的目的。。目前Varnish3.0版本解决了服务器重启后Varnish缓存消失的问题,性能优化上有了更大的提升。
Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。
varnish主页
Varnish和Squid的对比
Varnish和Squid在完成相同负载的工作时,Squid服务器发生故障的几率要高于Varnish,因此Squid需要经常重启。
Varnish访问速度更快,Varnish采用了 Visual Page Cache技术,所有缓存的数据都直接从内存读取,而Squid从硬盘读取缓存的数据,Varnish在访问速度方面会更快一些。
Varnish可以支持更多的并发连接,因为Varnish的TCP连接与释放比Squid快,所以在高并发连接情况下可以支持更多的TCP连接。
Varnish可以通过管理端口来管理缓存,使用正则表达式就可以批量清除部分缓存,而Squid做不到这一点。
安装与部署varnish
主机环境:
1.$ uname -r
2.2.6.32-573.el6.x86_64
3.$ cat /etc/redhat-release
4.CentOS release 6.7 (Final)
安装varnish
$ rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.0.el6.rpm
$ yum install varnish
对于是Ubuntu系统,可以执行以下命令来安装:
curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -echo “debhttp://repo.varnish-cache.org/ubuntu/ precise varnish-3.0” | sudo tee -a /etc/apt/sources.listsudo apt-get updatesudo apt-get install varnish把文件备份
$ cp /etc/varnish/default.vcl /etc/varnish/default.vcl.backup
$ cp /etc/sysconfig/varnish /etc/sysconfig/varnish.backup开启varnish
1./etc/init.d/varnish start
2.[root@varnish ~]# netstat -tanp|grep varnish
3.tcp 0 0 0.0.0.0:6081 0.0.0.0:* LISTEN 1640/varnishd
4.tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 1639/varnishd
5.tcp 0 0 :::6081 :::* LISTEN 1640/varnishd
这里要注意一下,有可能会报错
1.[root@nginx01 varnish]# /etc/init.d/varnish start
2.Starting Varnish Cache: [FAILED]
那么就查看下日志吧
1.[root@nginx01 lib]# varnishlog
2.Can't open VSM file (Cannot open /var/lib/varnish/nginx01/_.vsm: No such file or directory
3.)
什么情况,为什么没有这个目录,既然没有那么就手动创建一个呗然后再启动,发现还是不行,我擦
这是什么情况,好吧,那么手动执行一下试试。。。
1.[root@nginx01 varnish]# varnishd -d -f /etc/varnish/default.vcl
2.Message from VCC-compiler:
3.Unused acl purge, defined:
4.('input' Line 20 Pos 5)
5.acl purge {
6.----#####--
7.
8.Running VCC-compiler failed, exited with 2
9.
10.VCL compilation failed
11.[root@nginx01 varnish]# vim /etc/varnish/default.vcl
12.[root@nginx01 varnish]# varnishd -d -f /etc/varnish/default.vcl
13.Platform: Linux,2.6.32-573.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
14.200 280
15.-----------------------------
16.Varnish Cache CLI 1.0
17.-----------------------------
18.Linux,2.6.32-573.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
19.varnish-4.0.3 revision b8c4a34
20.
21.Type 'help' for command list.
22.Type 'quit' to close CLI session.
23.Type 'start' to launch worker process.
我快崩溃不这是为什么呢。。。找了半天原因,原来是selinux没有半,我擦,看来不关的确会出很多问题啊,关闭后就没有出此问题啦。完美解决。
接下来要做的,就是修改apache的监听端口,将varnish监听端口指向80,将apache监听端口指向一个其他端口,再将varnish出口端口指向apache指向的端口。这样,client–>端口80–>varinsh检测cache–>apache->client
1.$ vim /etc/sysconfig/varnish
2.VARNISH_LISTEN_PORT=80
3.
4.$ vim /etc/varnish/default.vcl
5.backend default {
6..host = "127.0.0.1";
7..port = "8880";
8.}
9.
10.$ vim /etc/httpd/conf/httpd.conf
11.Listen *:8880
12.<VirtualHost *:8880>
13.ServerAdmin gsandow.com
14.DocumentRoot /data/www/html/
15.ErrorLog logs/sample-error.log
16.CustomLog logs/sampleaccess_log common
17.</VirtualHost>
介绍下varnish配置信息:
查看varnish的各种命令
1.[root@apache01 blog]# ll /usr/bin/varnish*
2.-rwxr-xr-x 1 root root 23656 Feb 18 2015 /usr/bin/varnishadm
3.-rwxr-xr-x 1 root root 29824 Feb 18 2015 /usr/bin/varnishhist
4.-rwxr-xr-x 1 root root 32576 Feb 18 2015 /usr/bin/varnishlog
5.-rwxr-xr-x 1 root root 45344 Feb 18 2015 /usr/bin/varnishncsa
6.-rwxr-xr-x 1 root root 32224 Feb 18 2015 /usr/bin/varnishstat
7.-rwxr-xr-x 1 root root 132544 Feb 18 2015 /usr/bin/varnishtest
8.-rwxr-xr-x 1 root root 41632 Feb 18 2015 /usr/bin/varnishtop
varnish命令:
varnishadm
管理Varnish后端的工具 telnet也可以(下面详细介绍)varnishhist
查看Varnish命中的工具 运行可以看到一张柱状描绘图,|表示缓存命中,#表示未命中,横向代表时间。 【非常有用】varnishlog
实时显示varnish的请求日志varnishncsa
以Apache标准的格式combined输出日志varnishstat
查看状态、参数等,具体查阅百度。【非常有用】varnishtop
类似top工具,查看varnish相关进程的资源、运行等状况。
文件位置:
/etc/varnish/ 存放varnish VCL配置文件
/etc/sysconfig/varnish 【CentOS】 存放varnish服务器运行的参数
/etc/default/varnish 【Ubuntu】 存放varnish服务器运行的参数
/usr/sbin/varnishd varnish服务器执行文件
/etc/init.d/varnish 运行程序