Varsion代理服务

什么是varsion?

Varnish是一款高性能的开源HTTP加速器,其主要用来做为反向代理中的缓存服务器使用,varnish的设计架构就是利用操作系统的缓存机制处理访问

varnish与squid的区别:
Varnish与Squid都是一个反向代理服务器,都可用作高性能的代理缓存服务器,并且都是开源软件

  • Varnish稳定性很高,squid相比varnish故障几率大
  • Varnish访问速度更快,所有缓存数据都直接从内存读取,而Squid从硬盘读取缓存数据
  • Varnish支持更多的并发连接,因为Varnish的TCP连接释放要比Squid快
  • Varnish可以通过管理端口,使用正则表达式批量清除部分缓存,而Squid不能
  • Varnish进程一旦挂起、崩溃或者重启,缓存数据都会从内存中完全释放,此时所有请求都会被发送到后端服务器,在高并发情况下,这会给后端服务器造成很大压力
  • Varnish配置相比Squid简单,监控接口丰富,性能好,但Squid资料多,功能丰富,支持对ACL的访问控制

TOC

Varsion反向代理

环境信息:
客户端:本机192.168.0.100
代理服务器:192.168.0.105
网页服务器:192.168.0.101
需要准备的varnish安装包:
安装包:varnish-4.0.5.tar.gz

1.安装相关支持包

yum -y install gcc readline-devel ncurses-devel pcre-devel python-docutils libtoollibxslt groff pkgconfig libedit-devel

2.编译安装varnish

tar zxf varnish-4.0.5.tar.gz
cd varnish-4.0.5
./configure --prefix=/usr/local/varnish --enable-debugging-symbols
make && make install

3.路径优化

ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
ln -s /usr/local/varnish/bin/* /usr/bin/

4.复制配置文件模板并使用修改配置文件

cp /usr/local/varnish/share/doc/varnish/example.vcl /usr/local/varnish/default.vcl

修改成代理的IP地址和端口

vim /usr/local/varnish/default.vcl
-----------------------------------
# Default backend definition.
backend default {
    .host = "192.168.0.101"
    .port = "8080";
}

5.启动服务访问代理服务器测试

varnishd -f /usr/local/varnish/default.vcl

squid.008

Varsion负载均衡

环境信息:
客户端:本机192.168.0.100
代理服务器:192.168.0.105
网页服务器1:192.168.0.101
网页服务器2:192.168.0.102

1.修改配置文件

vim /usr/local/varnish/default.vcl
----------------------------------------
#4.0版本后将director编写为varnish的模块
import directors;  #加载directors模块
#添加后端真实服务器
backend web1 {
    .host = "192.168.0.101";
    .port = "80";
}
backend web2 {
    .host = "192.168.0.102";
    .port = "80";
}
#初始化模块,定义director
sub vcl_init {
     new bar = directors.round_robin();  \\定义调度算法,  random   dns
     bar.add_backend(web1);   
     bar.add_backend(web2);
}
#设置缓存配置
sub vcl_recv {
    # Happens before we check if we have this in cache already.
    #
    # Typically you clean up the request here, removing cookies you don't need,
    # rewriting the request, etc.
    set req.backend_hint = bar.backend();    \\把流量转发给directors
    return(pass);  \\设置不进行缓存
}

访问代理服务器(192.168.0.105)查看是否成功
squid.009
点击刷新页面
squid.010
页面发生跳转,说明配置成功!!!
补充:添加健康检查配置
修改配置文件

vim /usr/local/varnish/default.vcl
----------------------------------------
backend web1 {
        .host = "192.168.0.101";
        .port = "80";
        .probe = { #开启健康检查
        .url = "/"; #请求的URL路径
        .interval = 5s; #查询间隔时间
        .timeout = 1s; #超时时间
        .window = 5;
        #varnish保持的结果滑动窗口,该滑动窗口是一种流量控制方法,允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发送一个分组就停下来等待确认,所有此协议可以加速数据传输
        .threshold = 3; #上次检查.window数量的多少,才代表后端是健康的
        }
        }