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的访问控制
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

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)查看是否成功

点击刷新页面

页面发生跳转,说明配置成功!!!
补充:添加健康检查配置
修改配置文件
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数量的多少,才代表后端是健康的
}
}