Linux服务器反向代理软件varnish

2016-03-31 16:27 24 1 收藏

下面图老师小编要向大家介绍下Linux服务器反向代理软件varnish,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - 服务器 】

Linux服务器反向代理软件varnish

 Varnish作为反向代理软件,应用于Web 前端,其良好的Cache性能使得网站承载能力有很大提升,下面记录下最近使用在Varnish学习与应用中的实践体会,本篇主要内容:安装 配置 监控。

一、varnish安装
通常有两种方法:
1.下载安装文件,本地编译安装
2.连到官网,自动安装(比较简单)
https://www.varnish-cache.org/installation/redhat

二、配置文件
1、配置Varnish 启动运行参数,如指定对应执行脚本,即vcl文件
Varnish管理端口,默认为6082,可以改为自己定义的端口,如2000
VARNISH_ADMIN_LISTEN_PORT=2000
监听端口,默认为8080,一般改为80
VARNISH_LISTEN_PORT=80
指定缓存文件存放路径
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
缓存文件varnish_storage.bin在32位操作系统下,最大仅能支持2G,
如果需要更大缓存文件则需要安装64为Linux操作系统

2、配置varnish为服务形式运行
3.0以上版本,安装好varnish后自动配置好了,即直接可以使用service varnish start命令执行
3.0以下版本,需要手动配置一下相应的配置文件
1)找到对应版本的安装包下varnish.initr文件,如
C:/.../varnish-3.0.1/redhat/varnish-3.0.1/redhat/varnish.initrc
2) 更改varnish.initrc中配置项,主要执行参数
3) 若参数是默认的配置形式etc/sysconfig/varnish,可以省略第2)步
4) 将varnish.initrc改名为varnish
5) copy varnish 到 /etc/rc.d/init.d/下
6) 给varnish指定执行权限chmod 700 /etc/rc.d/init.d/varnish
7) chkconfig --add varnish
三、查看Varnish运行状态
ps -aux|grep varnishd
正常结果如下

也可以通过top |grep varnishd查看
四、查看Varnish日志
1、使用varnishlog命令查看日志,可以加些参数,具体可通过-h获得参数说明
如varnishlog -i txurl 命令去查看是哪些URL导致回源的
2、将日志保存到一文件
需要用到varnishncsa指令,如
varnishncsa -w /var/lib/varnish/varnish.log 将varnishlog 保存在一个文件里
文件格式为文本格式,比较方便查看
五、查看Varnish缓存情况
1、通过varnishstat 查看当前及自启动以来的请求及缓存命中情况
 

结果数据的含义:

第一行显示的是varnish自启动到现在运行了多长时间,如上图显示的是45天0小时11分27秒
第二行显示的是启动这个命令的时间,这个三数字最终会变为10,100,1000;分别代表10秒,100秒,1000秒
第三行显示的是命中率,分别对象上面的时间,分别是10秒内的命中率,100秒内的命中率,1000秒内的命中率
从第四行开始下面的数据就分为4列
第一列为总数值,第二列为每秒中的数值,第三列自命令(varnishstat)启动以来的平均值,第四列是描述

其中几个比较重要的是

Client connections accepted:表示客户端向反向代理服务器成功发送HTTP请求的总数量
Client requests received:表示到现在为止,浏览器向反向代理服务器发送HTTP请求的累积次数,由于可能会使用长连接,所以这个值一般会大于Client connections accepted
cache-hit :代表缓存命中次数
miss-hit :代表未命中次数
worker threads :代表当前工作线程的数量
expired objects :代表过期对象的个数
LRU nuked objects :代表缓存可使用的内存以达上线而不得不移除的对象个数
LRU moved objects :代表LRU策略被移动的对象个数
Total header bytes :代表缓存的请求头对象的大小
Total body bytes:代表缓存的请求体对象大小

命中率公式:cache-hit / Client requests received

2、若每次查看varnish当前缓存情况都要登录Server,有点麻烦
可以用php(可以用其它语言)编写一段程序,远程查看
代码可以参考如下,3.0以下的版本可以通过Socket连接到Varnish管理端口,通过stat命令查看,3.0以上没有stat命令,只能通过下面的方法解决

?php 
 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/fuwuqi/)
$outfile=shell_exec("/usr/bin/varnishstat -x ");$xml=simplexml_load_string($outfile);echo $xml-getName() . "br /";foreach($xml-children() as $child)  {  //$tmpName="";  foreach($child-children() as $subChild)  {if ($subChild-getName() =="name" ) {$tmpName=$subChild;}else  if ($subChild-getName() =="value" ){if ($tmpName!=""){ $arys["$tmpName"]=$subChild; $tmpName="";}}else {continue;}  }  }  function byteReduce($bytes)  {  if ($bytes1099511627776)  {  return round($bytes/1099511627776)."TB";  }  else if ($bytes  1073741824)  {  return round($bytes/1073741824)."GB";  }  else if ($bytes1048576)  {  return round($bytes/1048576)."MB";  }  else if ($bytes1024)  {  return round($bytes/1024)."KB";  }  else  {  return $bytes."B";  }  }  echo "client_conn: ".$arys["client_conn"] . "br /";  echo "client_req: ".$arys["client_req"] . "br /";  echo "cache_hit: ".$arys["cache_hit"] . "br /";  echo "cache_miss: ".$arys["cache_miss"] . "br /";  echo "Cache hit rate: ".round(($arys["cache_hit"]/$arys["client_req"])*100)." % br/";  echo "LRU nuked objects: ".$arys[n_lru_nuked]."br/";  echo " ".byteReduce($arys["s_bodybytes"]+$arys["s_hdrbytes"])." Acc Content (".byteReduce($arys["s_hdrbytes"])." header ".byteReduce($arys["s_bodybytes"])." Body)";?

页面效果如
 

当然为了查看实时情况,可以在这监控页加个html定时刷新

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/fuwuqi/)

若已经部署了专业的监控工具如catic ,则可以通过配置,在catic中查看Varnish 运行状态

3.0以上版本,需要一个php页面输出结果echo shell_exec("/usr/bin/varnishstat -x ");然后catic中配置下即可

来源:http://www.tulaoshi.com/n/20160331/2052504.html

延伸阅读
标签: 服务器
Linux系统下配置squid代理服务器的过程详解   简单记录一下Squid透明代理服务器的配置 环境:VirtualBox + CentOS 6.0 + squid-3.1.4-1.el6.i686 0、检查squid是否默认安装,没有安装的先安装 代码如下: [root@Slyar ~]# rpm -qa squid squid-3.1.4-1.el6.i686 1、虚拟机添加双网卡,全部设置桥接,配...
代理/防火墙 1.iptables规则表 Filter(针对过滤系统):INPUT、FORWARD、OUTPUT NAT(针对地址转换系统):PREROUTING、POSTROUTING、INPUT、OUTPUT Mangle(针对策略路由和特殊应用):OUTPUT、POSTROUTING 2.安装包 iptables-1.2.7a-2 3.配置防火墙 1) 命令语法 Usge: iptables [-t table] -[ADC] chain rule-specification [option...
标签: 浏览器
查看IE是否设置代理服务器   1、打开IE浏览器---点击工具选择Internet选项; 2、点击连接选项卡局域网设置,查看是否设置了代理服务器,请选择自动检测设置。
上网了,不免会遭到种种攻击,有时还碰到一些网站无法访问,或者访问速度特别慢等现象,面对这些现象,代理服务器作为网络访问的纽带就应运而生了。通过使用代理服务器可以将我们的真实IP地址隐藏起来,而且在一定程度上还可以提高网络访问的范围和速度。代理服务器的存在一般是不公开的,可以从聊天室或BBS站点上获得,此外还可以借助专门...
标签: 服务器
服务器软件的安全“隐患”   在常用的服务器软件有,Apache、Alt-NMDaemon、WebEasyMaiLMySQL、SQLServer、Serv-U,等等。通过安装这些组件,才能把各种类型的网站所需的初始化环境准备好。比方说,可以通过MySQL程序完成数据库环境的准备,等等。通常,是否需要安装这些服务器程序,主要看我们需要架设什么样类型的网站,如: &b...

经验教程

238

收藏

9
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部