Vanish可以让用户自己选择缓存数据是存于内存还是硬盘,存于内存一般基于二八法则即常访问的数据是磁盘存储的总数据五分之一,因此内存也应该是硬盘文件大概
五分之一。如果有多台vanish则,总内存满足即可,由前端代理服务器实现负载调度。最后由于缓存需要平凡的刷新,因此内存也不要过大,否则会浪费在内存调度算法上。
一般7500转每分的磁盘只能完成每秒80左右的随机io,为了增加磁盘io,则可以做raind0,固态硬盘擦写十万次,是指写满整个磁盘才算一次。
缓存的保持有两种方式为文档请求机制和时间过期机制,时间过期是指包含在客户端头部包括exprire(http1.0中)指缓存过期的绝对时间,cache-control(http1.1)
指缓存过期的相对时间。cache-control中有很多控制机制,其中用的最多的max-age,相对时间一般为具体值如200是,当expire和cache-control同时存在时,以cache-conrol
为中。
Vanish缓存的保持有三种方法.file Malloc persistent等,前两种在服务器重启后缓
存数据会丢失。vanish系统配置文件为/etc/sysconfig/vanish
1.首先去官网下载
wget https://repo.varnish-cache.org/source/varnish-5.0.0.tar.gz
cd varnish-5.0.0
2.解压缩 安装所需其他库文件
tar -zxvf varnish-5.0.0.tar.gz
编译安装过程可能会缺少以下包 libedit-devel pcre-devel ncurses-devel python-docutils
yum -y install libedit-devel
yum -y install pcre-devel
yum -y install ncurses-devel
yum install python-docutils
./configure --prefix=/usr/local/varnish
3.安装
make && make install
4.生成配置文件
[root@target varnish-5.0.0]# cp etc/example.vcl /usr/local/varnish/default.vcl
5.启动
使用-b命令添加后端主机:
[root@target varnish]# /usr/local/varnish/sbin/varnishd -a :80 -T 127.0.0.1:81 -b 172.18.109.239:80 -p thread_pool_max=1500 -p thread_pools=5 -p listen_depth=512
[root@target varnish]# netstat -tnlp |grep varnish
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 64952/varnishd
tcp 0 0 127.0.0.1:81 0.0.0.0:* LISTEN 64952/varnishd
tcp 0 0 :::80 :::* LISTEN 64952/varnishd
[root@target varnish]# bin/varnishadm #登录管理端口
200
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,2.6.32-573.el6.x86_64,x86_64,-jnone,-smalloc,-smalloc,-hcritbit
varnish-5.0.0 revision 99d036f
Type 'help' for command list.
Type 'quit' to close CLI session.
varnish> status
200
Child in state running
使用配置文件添加后端主机
配置文件示例:
vim /usr/local/varnish/default.vcl
# This is a basic VCL configuration file for varnish. See the vcl(7)
# man page for details on VCL syntax and semantics.
#
# Default backend definition. Set this to point to your content
vcl 4.0; #4.0以后的版本要添加,否则启动会报错
backend default {
.host = "172.18.109.235";
.port = "80";
.probe = {
.url = "/"; # 向后端主机获取这个页面
.interval = 1s; # 每隔1秒钟尝试一次
.window = 5; # 最多尝试5次,判断采样的样本
.threshold = 2; # 如果采样5次,如果有2次是错误的,就认为是失败的,上线也是一样
}
}
sub vcl_deliver {
if (obj.hits > 0){
set resp.http.X-Cache = "HIT ";
}
else {
set resp.http.X-Cache = "MISS";
}
}
注意:4.0以后的vcl命令参数有一些改变,所以不能直接把4.0以前的模板拿来用。
[root@target varnish-5.0.0]# /usr/local/varnish/sbin/varnishd -f /usr/local/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:80
[root@target varnish-5.0.0]# netstat -tnlp | grep varnish
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 63049/varnishd
tcp 0 0 127.0.0.1:2000 0.0.0.0:* LISTEN 63049/varnishd
浏览器中访问varnish测试:
请求参数:
Accept-Ranges:bytes
Age:37
Connection:keep-alive
Content-Length:15
Content-Type:text/html
Date:Sun, 18 Sep 2016 10:56:07 GMT
Last-Modified:Mon, 18 Jul 2016 12:20:24 GMT
Server:nginx/1.0.15
Via:1.1 varnish (Varnish/5.0)
X-Cache:HIT #名中缓存
X-Varnish:7 3
安装5.0以下的版本可以用yum
使用yum安装varnish-4.0.3 另外也可以yum安装,由于varnish存在于epel源中因此
yum install epel-release
yum clean all
yum list repo 更新并查看epel源是否已经存在
rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.0.el7.rpm
yum install varnish
yum 安装后varnish的配置文件为/etc/varnish/varnish.params 其中定义了varnish的默认acl为/etc/varnish/default.acl
systemctl start varnishd.service 启动varnish
varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 登录varnish的管理接口 默认的 varnish的管理端口为6082
|