|
|
缓存服务器varnish,squid,
sandow的博客新地址http://gsandow.com/
varnish 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主页
squid
补充
Varnish和Squid的对比
Varnish和Squid在完成相同负载的工作时,Squid服务器发生故障的几率要高于Varnish,因此Squid需要经常重启。
Varnish访问速度更快,Varnish采用了 Visual Page Cache技术,所有缓存的数据都直接从内存读取,而Squid从硬盘读取缓存的数据,Varnish在访问速度方面会更快一些。
Varnish可以支持更多的并发连接,因为Varnish的TCP连接与释放比Squid快,所以在高并发连接情况下可以支持更多的TCP连接。
Varnish可以通过管理端口来管理缓存,使用正则表达式就可以批量清除部分缓存,而Squid做不到这一点。
安装与部署varnish
主机环境:
$ uname -r
2.6.32-573.el6.x86_64
$ cat /etc/redhat-release
CentOS release 6.7 (Final)
varnish官网
安装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
/etc/init.d/varnish start
[iyunv@varnish ~]# netstat -tanp|grep varnish
tcp 0 0 0.0.0.0:6081 0.0.0.0:* LISTEN 1640/varnishd
tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 1639/varnishd
tcp 0 0 :::6081 :::* LISTEN 1640/varnishd
这里要注意一下,有可能会报错
[iyunv@nginx01 varnish]# /etc/init.d/varnish start
Starting Varnish Cache: [FAILED]
那么就查看下日志吧
[iyunv@nginx01 lib]# varnishlog
Can't open VSM file (Cannot open /var/lib/varnish/nginx01/_.vsm: No such file or directory
)
什么情况,为什么没有这个目录,既然没有那么就手动创建一个呗然后再启动,发现还是不行,我擦
这是什么情况,好吧,那么手动执行一下试试。。。
[iyunv@nginx01 varnish]# varnishd -d -f /etc/varnish/default.vcl
Message from VCC-compiler:
Unused acl purge, defined:
('input' Line 20 Pos 5)
acl purge {
----#####--
Running VCC-compiler failed, exited with 2
VCL compilation failed
[iyunv@nginx01 varnish]# vim /etc/varnish/default.vcl
[iyunv@nginx01 varnish]# varnishd -d -f /etc/varnish/default.vcl
Platform: Linux,2.6.32-573.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
200 280
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,2.6.32-573.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
varnish-4.0.3 revision b8c4a34
Type 'help' for command list.
Type 'quit' to close CLI session.
Type 'start' to launch worker process.
我快崩溃不这是为什么呢。。。找了半天原因,原来是selinux没有半,我擦,看来不关的确会出很多问题啊,关闭后就没有出此问题啦。完美解决。
varnish 在github rackspace cookbook
selinux cookbook
接下来要做的,就是修改apache的监听端口,将varnish监听端口指向80,将apache监听端口指向一个其他端口,再将varnish出口端口指向apache指向的端口。这样,client–>端口80–>varinsh检测cache–>apache->client
$ vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80
$ vim /etc/varnish/default.vcl
backend default {
.host = "127.0.0.1";
.port = "8880";
}
$ vim /etc/httpd/conf/httpd.conf
Listen *:8880
<VirtualHost *:8880>
ServerAdmin gsandow.com
DocumentRoot /data/www/html/
ErrorLog logs/sample-error.log
CustomLog logs/sampleaccess_log common
</VirtualHost>
介绍下varnish配置信息:
查看varnish的各种命令
[iyunv@apache01 blog]# ll /usr/bin/varnish*
-rwxr-xr-x 1 root root 23656 Feb 18 2015 /usr/bin/varnishadm
-rwxr-xr-x 1 root root 29824 Feb 18 2015 /usr/bin/varnishhist
-rwxr-xr-x 1 root root 32576 Feb 18 2015 /usr/bin/varnishlog
-rwxr-xr-x 1 root root 45344 Feb 18 2015 /usr/bin/varnishncsa
-rwxr-xr-x 1 root root 32224 Feb 18 2015 /usr/bin/varnishstat
-rwxr-xr-x 1 root root 132544 Feb 18 2015 /usr/bin/varnishtest
-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 运行程序
|
|