您的位置:首页 > 其它

varnish3.0的安装配置

2014-06-10 23:08 399 查看
1:varnish的安装:

#rpm --nosignature -i
http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm

其中:

--nosignature :想要略过数字证书的检查时,可以使用这个参数。

-i:install的意思。

#rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm 
其中:

-Uvh:后面接的软件如果没有安装过,则系统将予以直接安装;若后面的软件有安装过且是旧版本的,则系统自动更新到新版。

#yum install varnish

安装varnish后有两个重要的配置文件分别为:

/etc/sysconfig/varnish

varnish的启动调用环境参数脚本

/etc/varnish/default.vcl

varnish的默认配置文件

2:varnish指定其启动参数:

其中如下几个重要参数:

VARNISH_VCL_CONF=/etc/varnish/default.vcl

指定varnish的配置文件的位置

VARNISH_LISTEN_PORT=80

指定varnish服务监听的端口

VARNISH_ADMIN_LISTEN_ADDRESS=0.0.0.0

指定varnish的管理IP(telent时)

VARNISH_ADMIN_LISTEN_PORT=6082

指定varnish的telnet端口

VARNISH_SECRET_FILE=/etc/varnish/secret

共享密钥文件

VARNISH_MIN_THREADS=1

指定启动的最小的线程数

VARNISH_MAX_THREADS=2500

指定启动的最大的线程数

VARNISH_THREAD_TIMEOUT=30

指定varnish的线程超时为30s

##需说明:在varnish2.0版本以后,不能讲最小启动的线程数设定过大,如果设定过大,会导致Varnish运行异常缓慢。

VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin

指定varnish的缓存文件所在的位置

VARNISH_STORAGE_SIZE=2500M

指定缓存文件的大小

VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"

其中varnish的存储方式有file和malloc两种方式

1)Malloc 通过malloc获取内存。

2)Mmap file 创建大文件,通过二分法分段映射成1G以内的大块。

VARNISH_TTL=86400

指定默认的TTL值,超过这个值得数据包将被丢弃

##其中只为参考值,根据环境修改。

3:varnish的配置文件的讲解:

#vi /etc/varnish/default.vcl

backend nginxd01 {

.host = "192.168.2.96";

.probe = {

.url = "/control/HappyIndex";

.interval = 10s;

.window = 5;

.threshold = 3;

}

.first_byte_timeout = 15s;

}

##其中:

backend:定义一个名称为nginxd01的后端主机

.host:指定后端主机的IP地址或域名

.probe:定义判断后端主机的服务是否正常访问

.first_byte_timeout:指定接收第一个字节的timeout时间

backend nginxd02 {

.host = "192.168.2.82";

.probe = {

.url = "/control/HappyIndex";

.interval = 10s;

.timeout = 1s;

.window = 5;

.threshold = 3;

}

.first_byte_timeout = 15s;

}

##定义了另一台后端主机

director web random {

{ .backend = nginxd01;

.weight = 2;

}

{ .backend = nginxd02;

.weihet = 2;

}

}

##其中:

director:定义一个名称为web的负载均衡器;也就是有nginxd01,nginxd02两台后端服务器随机分担请求。

.weight:指定两台后端服务器的权值。权值高的处理请求的几率就高些。

acl purge {

"localhost";

"127.0.0.1";

"192.168.2.0"/24;

}

##其中:

这里设定清除缓存的规则,Varnish允许localhost,127.0.0.1和192.168.2.0/24三个来源IP通过purge的方法清除缓存。

sub vcl_recv {

if (req.restarts == 0) {

set req.http.Cdn-Src-Ip = client.ip;

if (req.http.x-forwarded-for) {

set req.http.X-Forwarded-For + ", "+ client.ip;

} else {

set req.http.X-Forwarded-For = client.ip;

}

}

##其中:

vcl_recv:VCL的内置函数,用于接收和处理请求。当请求到达并被成功接收后被调用,通过判断请求的数据来决定如何处理请求。

req.restarts:表示请求重启的次数,默认最大值为4

client.ip:表示客户端IP

if (req.request == "PURGE") {

if (!client.ip ~ purge) {

error 405 "Not allowed.";

}

return(lookup);

}

set req.backend = web;

##其中:

req.request:指定请求的类型,例如:GET,HEAD,POST等等

lookup:表示在缓存中查找被请求的对象,并且根据查找的结果把控制权交给函数vcl_hit或vcl_miss函数。

if (req.request != "GET" && req.request != "HEAD") {

return(pipe);

}

if (req.request == "GET" && req.url ~ "\.(txt|html|swf|flv|tiff|ico|css|gif|jpg|jpeg|png|bmp)$") {

unset req.http.cookie;

}

if (req.http.Authorization || req.http.Cookie) {

return(pipe);

}

else {

return(lookup);

}

}

##其中:

pipe:表示进入pipe模式,把请求控制权交给vcl_pipe函数

vcl_pipe:此函数在进入pipe模式时被调用,用于将请求直接传递至后端主机,在请求和返回的内容没有改变的情况下,将不变的内容返回给客户端,直到这个链接关闭。

req.url:指定请求的地址

unset req.http.cookie:清除url中有jpg|png|gif等文件的cookie

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.";

}

}

##其中:

vcl_hit:在执行lookup指令后,在缓存中找到请求的内容后将自动调用该函数。

obj.ttl:表示返回内容的生存周期,也就是缓存时间,单位是秒。

如果请求的类型是purge方法,Varnishd会将此请求的缓存周期设置为0,也就是使这个url的缓存失效,从而达到刷新Varnish缓存的目的。

vcl_miss:在执行lookup指令后,在缓存中没有找到请求的内容时自动条用该方法。此函数可以判断是否需要从后端主机获取内容。

4:varnish的启动:

/etc/init.d/varnish start

/etc/init.d/varnishncsa start

#ps -ef|grep varnish

root 23683 1 0 21:11 ? 00:00:00 /usr/sbin/varnishd -P /var/run/varnish.pid -a :80 -f /etc/varnish/default.vcl -T 0.0.0.0:6082 -t 86400 -w 1,2000,30 -u varnish -g varnish -S /etc/varnish/secret -s file,/var/lib/varnish/varnish_storage.bin,2500M

varnish 23687 23683 0 21:11 ? 00:00:00 /usr/sbin/varnishd -P /var/run/varnish.pid -a :80 -f /etc/varnish/default.vcl -T 0.0.0.0:6082 -t 86400 -w 1,2000,30 -u varnish -g varnish -S /etc/varnish/secret -s file,/var/lib/varnish/varnish_storage.bin,2500M

root 23705 1 0 21:12 ? 00:00:00 /usr/bin/varnishncsa -a -w /var/log/varnish/varnishncsa.log -D -P /var/run/varnishncsa.pid
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: