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 
 

$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 (".byteRedu
ce($arys["s_hdr
bytes"])." header ".byteReduce($arys["s_bodybytes"])." Body)";
?>

页面效果如
 

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

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索bytes
, 文件
, 缓存
, 配置
, varnish
, varnish缓存配置
, varnish配置
Varnish缓存
linux 服务器反向代理、varnish反向代理、反向代理服务器、什么是反向代理服务器、nginx反向代理服务器,以便于您获取更多的相关知识。

时间: 2024-10-28 14:15:24

Linux服务器反向代理软件varnish的相关文章

《高性能Linux服务器构建实战》——2.1节初识Varnish

2.1 初识Varnish 2.1.1 Varnish概述 Varnish是一款高性能且开源的反向代理服务器和HTTP 加速器,它的开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一.Varnish采用全新的软件体系机构,和现在的硬件体系配合紧密.在1975年时,储存媒介只有两种:内存与硬盘.而现在计算机系统的内存除了主存外,还包括CPU内的L1.L2,有的还包括L3快取,硬盘上也有自己的快取装置,因此Squid Cache自行处理数据替换的架构不可能得知这些情况而做到最

Linux Squid的反向代理

一.基本原理 1.公网中的客户机 client 200.168.10.2 2.squid反向代理服务器 eth0 200.168.10.2 eth1 192.168.10.1 3.内部web服务器 web 192.168.10.2 二.修改squid.conf文件 #配置虚拟80端口,防止数据报文直接丢失 http_port 200.168.10.1:80 vhost #重定向的web服务器 0表示不使用上一级缓存 cache_peer 192.168.10.2 parent 80 0 orig

《高性能Linux服务器构建实战》——第2章高性能HTTP加速器Varnish

第2章 高性能HTTP加速器Varnish 本章主要介绍Varnish的配置管理和使用技巧.Varnish是一个开源的反向代理软件和HTTP加速器,与传统的Squid相比,Varnish具有性能更高.速度更快.管理更方便等诸多优点,很多大型的运营网站都开始尝试用Varnish来替换Squid,这些都促使Varnish迅速发展起来.本章将详细介绍Varnish的安装.配置.管理和性能优化等几个方面,并将理论与实践经验贯穿其中.相信阅读完本章,读者就能够熟练使用Varnish了.

SWsoft公司推出Windows版Linux服务器软件_unix linux

天极网11月15日消息 SWsoft公司的业务是将Linux服务器再分成独立分区,该公司将开始测试自己产品的Widnows版. 该软件名为Virtuozzo,功能是将单一版本的操作系统进行拆分,使其看上去像是几个操作系统.该软件主要适用于那些托管低流量网站的公司. Virtuozzo软件这些公司一种分享服务器的方法,但是还向用户提供独立机器的某些优势. 迄今,SWsof公司仅销售用于Linux服务器的Virtuozzo软件.Windows版正在进行个别Beta版测试.该公司称,更广泛的测试计划在

ASP.NET 性能优化之反向代理缓存使用介绍_实用技巧

到目前为止,我们讨论了把缓存存放在ASP.NET的输出缓存中(内存和硬盘),以及浏览器缓存中,而大型站点的另一种常用做法是将缓存部署在反向代理服务器上,这类缓存我们通常称之为反向代理缓存,比如Squid和Varnish.这两款软件通常都部署在非WINDOWS平台上,对于Windows平台上的Asp.net来说,其实一样能使用,我们完全可以把反向代理软件部署在LINUX上,然后代理会路由到后台的WINDOWS WEB(IIS)服务器.总之,非WINDOWS的世界很精彩. 当然,无论是squid还是

代理服务器 详解 正向代理 反向代理

代理服务器(ProxyServer)是一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层,从而起到防火墙的作用.代理服务器大多被用来连接INTERNET(国际互联网)和INTRANET(局域网).有正向代理和反向代理之分,大家常说的负载均衡啊大都是指反向代理,反向代理是我们程序员要接触的最多的,需要了解的也很多. 正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理

《高性能Linux服务器构建实战》——2.8节本章小结

2.8 本章小结 本章主要介绍了高性能HTTP加速器Varnish的安装.配置.管理和使用技巧,同时还介绍了Varnish常用的指令以及Varnish的调优技巧和经验,最后通过两个实例介绍了Varnish的常见应用.通过本章的学习,读者可以对Varnish的结构和特点有一个清晰的认识,并且能够熟练安装.搭建和配置一套Varnish系统. Varnish是一个开源的反向代理软件和HTTP加速器,与传统的Squid相比,Varnish具有性能更高.速度更快.管理方便等诸多优点,很多大型的运营网站都开

Linux服务器下nginx的安全配置详解_nginx

Nginx是一个轻量级,高性能的Web服务器/反向代理和电子邮件 代理(IMAP/POP3),它可以运行在UNIX,GNU/Linux,BSD变种,MAC OS X,Solaris和Microsoft Windows上.根据Netcraft的调查数据显示,互联网上6%的域名都使用了Nginx Web服务器.Nginx是解决C10K问题的服务器之一,与传统服务器不一样,Nginx不依赖于线程处理请求,相反,它使用了一个更具扩展性的事件驱 动(异步)架构.Nginx在很多高流量网站上得到了应用,如W

Squid反向代理若干个后台的WEB实现说明

1.Squid反向代理单个后台WEB服务器 A.如果WEB服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网络).那么,应该修改下面的内容来设置反向代理服务. http_port 80 # squid监听的端口 httpd_accel_host 192.168.0.100 # 内部WEB服务器的IP地址 httpd_accel_port 80 # WEB服务器的IP地址 httpd_accel_single_host on # 转发为缓冲的请求到一台单独的机器