Vainish是一款高性能且开源的反向代理服务器和http加速器。

与传统的squid相比,Varnish具有性能更高、速度更快等诸多优点。


Varnish服务器

--/etc/varnish      #配置文件目录

 /etc/init.d/varnish   #varnish的启动程序

 /etc/sysconfig/varnish #配置文件,varnish定义自身属性

 /etc/varnish/default.vcl #默认配置文件,定义后端节点

--/usr/bin/varnishadm    #客户端程序

--/usr/bin/varnishstat    #状态监控


使用Varnish加速Web
通过配置Varnish缓存服务器,实现如下目标:
1,使用Varnish加速后端Apache Web服务
2,使用varnishadm命令管理缓存页面
3,使用varnishstat命令查看Varnish状态
方案
1,通过源码编译安装Varnish缓存服务器
2,编译安装Varnish软件
3,复制启动脚本与配置文件

使用3台RHEL7虚拟机,其中一台作为varnish服务器,
  该服务器用来连接两个网段,因此需要配置两块网卡,
  地址分别为192.168.4.5和192.168.2.5
  一台作为客户端测试主机,IP地址为192.168.4.100。
  一台Web服务器,地址为192.168.2.100,
  该Web服务器为其他代理提供Web数据源。

步骤
步骤一:构建Web服务器
1)使用yum安装web软件包
[root@web1 ~]# yum -y install httpd
2)启用httpd服务,并设为开机自动运行
[root@web1 ~]# systemctl start httpd
[root@web1 ~]# systemctl enable httpd
3)为Web访问建立测试文件
[root@web1 ~]#echo "i am 192.168.2.100"
步骤二:部署Varnish缓存服务器
1)编译安装软件
[root@svr5 ~]#yum -y install gcc readline-devel pcre-devel    //安装软件依赖包
[root@svr5 ~]# useradd -s /sbin/nologin varnish               //创建账户
[root@svr5 ~]# tar -xzf varnish-3.0.6.tar.gz
[root@svr5 ~]# cd varnish-3.0.6
[root@svr5 varnish-3.0.6]# ./configure --prefix=/usr/local/varnish
[root@svr5 varnish-3.0.6]# make && make install
2)复制启动脚本及配置文件
[root@svr5 varnish-3.0.6]#cd redhat/
[root@svr5 redhat]# cp redhat/varnish.initrc /etc/init.d/varnish
[root@svr5 redhat]# cp redhat/varnish.sysconfig /etc/sysconfig/varnish
[root@svr5 redhat]# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
[root@svr5 redhat]# ln -s /usr/local/varnish/bin/* /usr/bin/
3)修改Varnish文件
[root@svr5 ~]# vim /etc/sysconfig/varnish
66行:VARNISH_LISTEN_PORT=80                              #默认端口
89行:VARNISH_STORAGE_SIZE=64M                            #定义缓存大小
92行:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"   #基于内存方式缓存
4)修改代理配置文件
[root@svr5 ~]# mkdir /etc/varnish
[root@svr5 ~]# cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/
[root@svr5 ~]# uuidgen > /etc/varnish/secret
[root@svr5 ~]# vim  /etc/varnish/default.vcl
backend default {
     .host = "192.168.2.100";
     .port = "80";
 }
[root@svr5 ~]# service  varnish  start
步骤三:客户端测试
[root@client ~]# curl http://192.168.4.5

其他操作
1)查看varnish日志
[root@svr5 ~]# varnishlog             //varnish日志
[root@svr5 ~]# varnishncsa            //访问日志,实时日志,在客户端访问才能看到日志
2)更新缓存数据,在后台web服务器更新页面内容后,
   用户访问代理服务器看到的还是之前的数据,
   说明缓存中的数据过期了需要更新(默认也会自动更新,但非实时更新)。
[root@svr5 ~]# varnishadm –S /etc/varnish/secret –T 127.0.0.1:6082 ban.url 页面文件名
#清空缓存数据,支持正则表达式(非交互)
[root@svr5 ~]#varnishadm stop #停止服务
[root@svr5 ~]#varnishadm start #启动服务
[root@svr5 ~]#varnishadm status #查看状态
[root@svr5 ~]#varnishadm ban.url / #清空缓存

缓存过期:
1)等待更新
2)手动更新(在/etc/sysconfig/varnish查看端口以及安全文件)(交互)
varnishadm –S /etc/varnish/secret –T 127.0.0.1:6082 #进入
backend.list #查看后端的信息
ban.url .* #所有更新