Linux服务器反向代理软件varnish

丨看著妳說謊于

丨看著妳說謊于

2016-03-31 16:27

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

Linux服务器反向代理软件varnish

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

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

一、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 ($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定时刷新

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/fuwuqi/)
展开更多 50%)
分享

猜你喜欢

Linux服务器反向代理软件varnish

服务器
Linux服务器反向代理软件varnish

使用反向代理技术保护Web服务器

电脑网络
使用反向代理技术保护Web服务器

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

高效配置Linux代理服务器Squid介绍

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
高效配置Linux代理服务器Squid介绍

RedHat打造代理服务器

电脑网络
RedHat打造代理服务器

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用Apache反向代理设置对外的WWW和文件服务器

Web开发
用Apache反向代理设置对外的WWW和文件服务器

Squid -- Linux下的一个优秀代理服务器软件使用详解

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Squid -- Linux下的一个优秀代理服务器软件使用详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

火狐浏览器打不开百度怎么办

火狐浏览器打不开百度怎么办

iPhone6设置Apple ID教程 更换注销方法

iPhone6设置Apple ID教程 更换注销方法
下拉加载更多内容 ↓