`
奔跑的羚羊
  • 浏览: 570611 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

varnish 4.0的安装

阅读更多
1.安装依赖
yum install -y automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
yum install install -y libedit*


2.下载varnish
wget https://repo.varnish-cache.org/source/varnish-4.0.0.tar.gz


3.安装
tar zxvf varnish-4.0.0.tar.gz
cd varnish-4.0.0
./configure --prefix=/usr/local/varnish
make
make install


4.copy配置文件
cp ./etc/example.val /opt/conf/varnish/default.vcl

配置文件内容:
backend default {
    .host = "127.0.0.1";
    .port = "8081";
}

这块配置定义了一个 varnish默认访问的后端服务器,当varnish 需要从后端
服务器获取内容的时候,它就会访问自己(127.0.0.1)的8081端口。 Varnish 可以定义多个后端服务器而且可以通过定义多个后端服务器达到负载均衡的目的。


5.启动
/usr/local/varnish/sbin/varnishd -f /opt/conf/varnish/default.vcl -T 127.0.0.1:2000 -a 0.0.0.0:80 -s file,/tmp,200M

-f 指定varnish的配置文件
-s 选项用来确定varnish使用的存储类型和存储容量
-T 指定监听本地端口
-a 0.0.0.0:80 用来制定 varnish 监听所有 IP 发给 80 端口的 http 请求,如果在生产环境下,您应该让varnish监听80,这也是默认的

6.关闭varnish
pkill varnishd



7.工具介绍
varnishtop
varnishtop -i rxurl    可以看到客户端请求的 url次数。 
varnishtop -i txurl    可以看到请求后端服务器的url次数。 
varnishtop -i Rxheader –I Accept-Encoding 可以看见接收到的头信息中有有多少次包含Accept-Encoding。

varnishhist
varnishhist工具读取varnishd的共享内存段日志,生成一个连续更新的柱状图,显示最后 N 个请求的处理情况。这个 N 的值是终端的纵坐标的高度,横坐标代表的是对数,如果缓存命中就标记“|”,如果缓存没有命中就标记上“#”符号。
varnishsizes
varnishsizes  和varnishhist相似,除了varnishsizes现实了对象的大小,取消了完成请求的时间。这样可以大概的观察您的服务对象有多大。   
varnishstat
varnish 有很多计数器,我们计数丢失率,命中率,存储信息,创建线程,删除对象等,几乎所有的操作。Varnishstat将存储这些数值,在优化varnish的时候使用这个命令。


8.配置文件详解
Varnish使用区域配置语言,这种语言叫做“VCL”(varnish configuration language)在执行vcl时,varnish 就把VCL转换成二进制代码。

vcl_recv在请求的开始被调用,在接收、解析后,决定是否响应请求,怎么响应,使用哪个后台服务器,vcl_recv中只有请求的目标,req is available。

vcl_fetch 在一个文件成功从后台获取后被调用,通常他的任务就是改变 response headers,触发ESI进程,在请求失败的时候轮询其他服务器。
在 vcl_fetch 仍然包含的请求有object,req,available,他们通常是backend response,beresp。beresp 将会包含后端服务器的HTTP 的头信息

actions 主要有以下动作 :
pass  当一个请求被pass后,这个请求将通过varnish转发到后端服务器,但是它不会被缓存。
lookup 当一个请求在vcl_recv中被lookup后,varnish将从缓存中提取数据,如果缓存中没有数据,将被设置为pass,不能在 vcl_fetch中设置lookup。
deliver 请求的目标被缓存,然后发送给客户端

在VCL 中,有3 个重要的数据结构
request 从客户端进来
responses 从后端服务器过来
object 存储在cache 中

req 请求目标,当 varnish 接收到一个请求,这时 req object 就被创建了,你在vcl_recv中的大部分工作,都是在 req object上展开的。
beresp 后端服务器返回的目标,它包含返回的头信息,你在vcl_fetch中的大部分工作都是在beresp object上开展的。
obj 被 cache 的目标,只读的目标被保存于内存中,obj.ttl 的值可修改,其他的只能读。

VCL 支持以下运算,
=     赋值运算符 
==   对比
~    匹配,在ACL中和正则表达式中都可以
!      否定
&&   逻辑与
||     逻辑或


9.启动参数
-n vcache \     #临时文件实例名.如果以"/"开头,就必须是一个可用的路径.
-a :80 \        #服务所在端口.":80"是默认所有网络都建立80端口,":"前面是服务器IP.
-T :5000 \      #管理端口.
-s file,/data1/vcache,80g \      #虚拟内存文件映射类型,路径以及容量. 包括两种类型"malloc"和"file"
-s file,/data2/vcache,80g \      #malloc是内存+swap交换模式.很简单.没得说.
-s file,/data3/vcache,80g \      #file是mmap的文件内存映射机制.(具体情况,参阅"mmap"函数说明)
-s file,/data4/vcache,80g \
-f /usr/local/varnish/etc/varnish.vcl \           #VCL文件路径.
-P /var/run/varnish.pid \        #PID文件地址.
-w 100,2000,10 \                 #工作进程数.三个参数分别是:<min>,<max>,<timeout>
-h classic,16383 \               #hash列表类型,以及长度.默认长度是16383.
-p user=www-data \               #"-p"是变量配置参数
-p group=www-data \              #服务运行用户和用户组配置.
-p thread_pools=8 \              #进程connections pools的个数,数量越多,越耗用cpu和mem,但是处理并发能力越强.
                                 #系统手册上说,一个cpu用一个.但是,我觉得,如果机器性能足够好,每个cpu分2个也不为过.
-p listen_depth=1024 \           #TCP队列长度.默认是512.

/usr/local/varnish/sbin/varnishd -u www -g www -f /opt/conf/varnish/default.vcl -a 0.0.0.0:80  -s file,/opt/workspace/varnish/varnish_cache.data,4G  -t 3600 -T 192.168.1.236:3500 -p thread_pool_max=40000 -p thread_pools=8 -p listen_depth=1024 



-w 1024,51200,10
-s malloc,4G

10.日志设置
/usr/local/varnish/bin/varnishlog

Varnish一个特别的优点就是它如何记录数据的。使用内存段代替普通的日志文件,当内存段使用完以后,又从头开始,覆盖最旧的记录。这样就可以非常快的记录数据,,并且不需要磁盘空间。 缺点就是您没有把数据写到磁盘上,可能会消失。

-b    只显示varnish和backend server 之间的日志
-c    只显示varnish和 client端的通信
-i tag  只显示某个 tag,比如“varnishlog –i SessionOpen”将只显示新会话
-I    通过正则表达式过滤数据,比如“varnishlog -c -i RxHeader -I Cookie”将
显示所有接到到来自客户端的包含 Cookie 单词的头信息。
-o    聚合日志请求 ID

日志提供方式:
1)通过自带的varnishlog得到详细的系统工作日志
varnishlog -n vcache

vcache 为启动时指定的临时文件实例名,如未指定,默认为hostname
2)通过varnishncsa得到apache的combined格式的日志
varnishncsa -n vcache

"-f"参数可以用"X-Forwarded-For"来替换"client.ip".
"-w"参数可以把日志写入指定的文件中.
varnishncsa -n vcache -f -w /opt/logs/varnich/varnish.log 

3) 用管道把日志导入"rotatelogs"中,实现日志翻滚
varnishncsa -n vcache -f |/usr/sbin/rotatelogs /opt/logs/varnich/varnish.log.%Y.%m.%d.%H.%M.%S.log 60 480
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics