CDN加速对企业非常重要,体现在哪呢?举个例子,A企业的后端服务器在杭州,用户遍布全国,让全国的用户都去访问企业A在杭州的后端服务器你觉得可行吗?肯定不可行呀!第一,后端服务器承受不了全国这么巨大的访问量;第二,访问速度慢,要经过的陆游太多了,等太久用户体验也不好。这个时候就需要有更多的代理服务器来接受用户的访问,将用户经常访问的数据缓存起来,直接将缓存的数据扔给用户,从而缓解后端服务器的压力以及更快的给用户所需结果!
能实现反向代理的除了varnish还有squid,squid已经被varnish取代了。
目前,企业中大多用的还是企业6
server1 172.25.64.1 varnish端(CDN缓存) 版本企业6
server2 172.25.64.2 服务器(apache) 版本企业6
allen 172.25.64.x 客户端 版本企业7(无影响)
需要有varnish的安装包:
varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm
配置server1(CDN缓存端)
1、安装varnish相关软件
yum install varnish-3.0.5-1.el6.x86_64.rpm
yum install varnish-libs-3.0.5-1.el6.x86_64.rpm
2、将server1的Memory改成2048
varnish要求能打开的最大文件数为131072,Memory值为2048就能满足!
3、查看当前系统允许打开最大文件数
sysctl -a | grep file
vim /etc/sysconfig/varnish #/etc/sysconfig/varnish为varnish配置文件
66 VARNISH_LISTEN_PORT=80 ##66为66行
5、修改varnish的安全配置文件
vim /etc/security/limits.conf #varnish的安全配置文件
##########在文件最后加入################
varnish - nofile 131072
varnish - memlock 82000
varnish - nproc unlimited
6、修改varnish默认文件,配置单个后端服务器
vim /etc/varnish/default.vcl #/etc/varnish/default.vcl为varnish默认文件
backend default {
.host = "172.25.64.2"; #要访问的服务器IP
.port = "80"; #80端口
}
7、重启varnish服务,完成单个后端服务器的部署
/etc/init.d/varnish restart
配置server2(服务器)
1、安装阿帕其
yum install httpd -y
2、进入阿帕其默认发布目录,建立默认发布文件
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# vim index.html
####################内容
这里是服务器server2,ip为172.25.64.2!
3、启动阿帕其
[root@server2 html]# /etc/init.d/httpd start
客户端测试
客户端访问varnish端,访问结果为服务端给出的信息
[root@allen ~]# curl 172.25.64.1
这里是服务器server2,ip为172.25.64.2!
[root@allen ~]#
清除缓存可以达到及时使varnish端更新服务端的最新数据
配置server1(CDN缓存端)
[root@server1 ~]# vim /etc/varnish/default.vcl #编辑varnish默认配置文件
##########################################添加以下内容
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "--->varnish"; #显示--->varnish则为访问的是varnish端
}
else {
set resp.http.X-Cache = "--->http"; #显示--->http则为访问的是服务器端
}
return (deliver);
}
[root@server1 ~]# /etc/init.d/varnish restart #重启varnish
客户端测试
[root@allen ~]# curl -I 172.25.64.1 #第一次
可以看到第一次访问的是server2(服务器),因为varnish端还没有缓存!
[root@allen ~]# curl -I 172.25.64.1 #第二次
可以看到第二次访问的是varnish端,因为第一次访问的时候varnish端已经缓存了,第三次第四次访问依旧是varnish端!
在varnish端清除缓存:
varnishadm ban.url .*$ #清除所有缓存
varnishadm ban.url /index.html #清除网页的缓存