varnish主要用于缓存服务器,还有一些其他软件也能实现缓存功能,例如memcached但是它主要缓存的是数值数据,适用于缓存mysql的数据;而nginx也有缓存功能,也可在反代时为后端主机提供缓存,但是nginx常用于反代服务器使用,也不建议一个主机承载多任务工作,这样会代理性能降低;而varnish正是常作为http协议的反代工作的。
现代互联网服务,为了提供用户良好的体验,访问网站打开页面的速度要求非常快,所以各网站基本都把资源尽量放在客户端最近的访问节点上,即常说的把资源推送到用户的家门口。实现方式常用的有两种方式:一种是使用CDN,另一种就是把用户请求都指向一个入口,在客户请求的入口处部署缓存服务器,把热点资源都放在离用户最近的缓存服务器上。varnish就工作在第二种方式中,当做缓存服务器给用户带来良好的访问体验的。
同样功能的还有一款软件squid,与varnish的关系,相当于httpd与nginx的关系;squid出现比较早,但面临较大负载时工作非常稳定,且功能丰富,同时支持正向、反向代理;varnish是比较轻量,主要用来实现反代;但超过承受的负载时,可能很不稳定;
安装varnish:
]# yum install varnish
安装varnish的文档包
]# yum -y install varnish-docs
varnish主机:172.18.11.111
后端web主机:
RS1:172.18.11.11
RS2:172.18.11.12
varnish主机:
]# vim /etc/varnish/default.vcl
]# vim /etc/varnish/varnish.params
启动varnish专用命令行:
]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
vcl.load test1 default.vcl
显示:
没问题后,再输入:
vcl.use test1
显示:
没问题后,可浏览器测试。
分别在后端两web服务器提供测试页:
]# vim /var/www/html/index.html
<h1>RS1 172.18.11.11</h1>
]# vim /var/www/html/index.html
<h1>RS2 172.18.11.12</h1>
浏览器输入:http://172.18.11.111/
刷新后交替显示:
停掉后端一台web服务器,继续访问仍能提供web服务。