欢迎您来到懒之才-站长的分享平台!   学会偷懒,并懒出境界是提高工作效率最有效的方法!
首页 > 经验分享 > 服务器 > Linux服务器反向代理软件varnish安装、配置和监控教程

Linux服务器反向代理软件varnish安装、配置和监控教程

2018-08-06 573 收藏 0 赞一个 0 真差劲 0 去评论

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操作系统

1.jpg

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

正常结果如下

2.jpg

也可以通过top |grep varnishd查看

四、查看Varnish日志

1、使用varnishlog命令查看日志,可以加些参数,具体可通过-h获得参数说明

如varnishlog -i txurl 命令去查看是哪些URL导致回源的

2、将日志保存到一文件

需要用到varnishncsa指令,如

varnishncsa -w /var/lib/varnish/varnish.log 将varnishlog 保存在一个文件里文件格式为文本格式,比较方便查看

五、查看Varnish缓存情况

1、通过varnishstat 查看当前及自启动以来的请求及缓存命中情况
 

3.jpg

结果数据的含义:

第一行显示的是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 
 
$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 ($bytes>1099511627776)
      {
          return round($bytes/1099511627776)."TB";
      }
      else if ($bytes > 1073741824)
      {
          return round($bytes/1073741824)."GB";
      }
      else if ($bytes>1048576)
      {
          return round($bytes/1048576)."MB";
      }
      else if ($bytes>1024)
      {
          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)";
?>

页面效果如
 

4.jpg

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

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

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

一、推荐使用迅雷或快车等多线程下载软件下载本站资源。

二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。

三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!

四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.

五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。

六、如需转载本站资源,请注明转载来自并附带链接

七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com

大家评论