一、varnish软件概述
- 1.varnish是一款高性能、开源的反向代理服务器和缓存服务器。varnish使用内存缓存文件来减少时间和网络宽带消耗;
- 2.varnish可以通过端口进行管理,使用正则语句做到清除指定缓存的功能。但是varnish在高并发的情况下,资源消耗较高,而且varnish服务进程一旦崩溃,重启后内存中的缓存数据将全部丢失;
- 3.在实际部署中,可以将缓存服务器与CDN来使用,在CDN的帮助下,用户的请求始终被分发到距离用户最近的一台缓存服务器上,如果当前的缓存服务器上没有找到缓存资源,当前的缓存服务器会请求上一级,若还是没有就找原始服务器,从而降低高并发下带给原始服务器的压力,同时可以加速用户请求的响应时间;
- 4.CDN和缓存服务器的使用主要目的是加速响应、减少原始服务器压力,但有些动态资源必须在原始服务器上获取。
二、在linux环境中varnish的一些实验
1.varnish调度器
(1)实验环境
server1:调度器(当用户访问server1时,将请求发给真实服务器server2)
server2:真实服务器,处理用户请求
server3:真实服务器,处理用户请求
server1和server2、server3都是rhel6.5版本的虚拟机
(2)具体操作
server1:
- 安装本次实验的3个软件
- 下载varnish服务
yum install varnish-* -y
- 可以看到varnish的配置文件在/etc/sysconfig/varnish里
vim /etc/sysconfig/varnish
- 修改端口号为80
同时在这个文档中可以看到
- 实际上我们的虚拟机是不符合上面的标准的
真实的虚拟机nfiles:
真实的memlock:
- 修改nfiles
- 修改memlock和nproc
vim /etc/security/limits.conf
在最后一行加上:
-
打开指向文件
vim /etc/varnish/default.vcl
将第8行的ip修改成真实主机server2的ip
-
开启服务
/etc/init.d/varnish start
server2:
- 安装httpd服务
yum install httpd -y
cd /var/www/html
vim index.html
编辑:<h1>www.westos.org - server2</h1>
- 开启服务
/etc/init.d/httpd start
- 在浏览器上查看
访问的是server1的ip,但是调度到服务器server2上了
2.CDN+varnish
server1:
- 打开配置文件
vim /etc/varnish/default.vcl
- 重启服务
/etc/init.d/varnish reload
- 测试
curl -I 172.25.18.1
第一次:出现了miss的结果
第二次:出现了hit的结果
- 清除所有缓存
清除后再次测试时发现结果变为miss
varnishadm ban.url .*$
- 清除部分缓存
varnishadm ban.url /index.html
3.负载均衡
我以两台虚拟机为例做调度轮询
- 先给测试机写解析
vim /etc/hosts
编辑:172.25.254.1 server1 www.westos.org bbs.westos.org
- 先配置server3
yum install httpd -y
cd /var/www/html
vim index.html
编辑:<h1>bbs.westos.org - server3</h1>
-
开启服务
/etc/init.d/httpd start
server1:
- 修改配置文件
vim /etc/varnish/default.vcl
测试:
curl www.westos.org
curl bbs.westos.org