首页 技术 正文
技术 2022年11月18日
0 收藏 889 点赞 2,451 浏览 2259 个字

一、Varnish概述

  Varnish是一款高性能的、开源的反向代理服务器和缓存服务器,计算机系统的除了有内存外,还有CPU的L1、L2,甚至L3级别的缓存,Varnish的设计架构就是利用操作系统的缓存机制处理访问;VCL,即Varnish Configuration Language,是Varnish的配置语言。在执行VCL时,Varnish把VCL转换成二进制代码执行。

  Varnish与Squid的对比:

  优点:Varnish具有更好的稳定性、更快的访问速度、更多的并发连接支持数,可以通过管理端口管理缓存等优势

  缺点:在高并发状态下,Varnish消耗更多的CPU、I/O和内存资源。Varnish进程一旦挂起、崩溃或者重启,缓存的数据会从内存中释放,此时所有的请求都会转发到后端服务器上,给后端服务器造成很大压力。

二、Varnish的使用

(1)需要安装的依赖包有libtool、ncurses-devel、pcre-devel、libxslt、groff、pkgconfig

  libedit-devel-2.11-4.20080712cvs.1.e16.x86_64.rpm

  python-docutils-0.6-1.e16.noarch.rpm

  python-imaging-1.1.6-19.e16.x86_64.rpm

  varnish-4.0.1.tar.gz

(2)安装过程 

 ~]# bash autogen.sh  #解压后的源码包内有一个脚本,我们需要执行以下它
~]# ./configure --prefix=/usr/local/varnish --enable-debugging-symbols --enable-developer-warnings && make && make install
~]# ln -s /usr/local/varnish/sbin/varnishd /usr/lcoal/sbin
~]# ln -s /usr/local/varnish/bin/* /usr/local/bin
~]# cp /usr/local/varnish/share/doc/varnish/example.vcl /usr/local/varnish/default.vcl #配置文件模板拷贝出来用

(3)配置反向代理

 ~]# vim default.vcl
backend default {
  .host = "192.168.10.52"; #后端web服务器的地址
  .port = ""; #web服务器端口
}
~]# varnishd -f /usr/local/varnish/default.vcl -a 0.0.0.0:80 #指定监听的ip和端口
~]# varnishlog #查看日志,实时滚动方式
测试方法:访问varnishIP地址可以看到后端web服务器的默认首页,就说明我们配置的反向代理没有问题。

三、Varnish负载均衡配置

 ~]# vim default.vcl
import directors #在vcl 4.0;行下面定义一个负载调度器变量
backend web1 { #把default修改为web1,就是后面的web服务器,有几个web节点就复制几个backend域
  .host = "192.168.10.52"; #后端web服务器的地址
  .port = ""; #web服务器端口
}
然后再添加下列函数
sub vcl_init {
  new bar = directors.round_robin(); #让新的 bar 等于之前定义的变量directors,后面接轮询(rr)算法
  bar.add_backend(web1); #注意这里有几个backend就添加几个
  bar.add_backend(web2);
}
在sub vcl_recv {}函数中添加下列语句
set req.backend_hint = bar.backend();
~]# varnishd -C -f /usr/local/varnishd/default.vcl >/root/varnish #检查语法是否有误
~]# pkill varnish
~]# varnishd -f /usr/local/varnish/default.vcl #加载配置文件并启动varnish
测试方法:由于varnish缓存的原因,当我们访问varnish的时候,并没有像我们预期的那样根据rr算法各自访问后面两台web服务器的不同页面,这时我们让一台web服务器网络中断,这时varnish就会访问到另一台了。

四、Varnish高可用配置

  我所知道的Varnish高可用就是可以探测后端web节点的健康状况,检测到宕机后做记录,不再传递访问请求了。至于这种方法和负载均衡有什么不同,还需继续研究

~]# vim default.vcl 、
backend web1 { #把default修改为web1,就是后面的web服务器,有几个web节点就复制几个backend域
  .host = "192.168.10.52"; #后端web服务器的地址
  .port = ""; #web服务器端口
  .probe = { #添加健康检查段,每个backend都要添加
    .url = "/" ;
    .interval = 5s ;
    .timeout = 1s ;
    .window = 5 ;
    .threshold = 3 ; #检测3次
}
}
~]# varnishd -f /usr/local/varnish/default.vcl #加载配置文件并启动varnish
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295