企业项目实战----CDN加速的实现

前言

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的安装包:
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就能满足!
企业项目实战----CDN加速的实现_第1张图片
3、查看当前系统允许打开最大文件数

sysctl -a | grep file

在这里插入图片描述
4、将varnish端口由6081改为80

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端缓存

清除缓存可以达到及时使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端还没有缓存!
企业项目实战----CDN加速的实现_第2张图片

[root@allen ~]# curl -I 172.25.64.1		#第二次

可以看到第二次访问的是varnish端,因为第一次访问的时候varnish端已经缓存了,第三次第四次访问依旧是varnish端!
企业项目实战----CDN加速的实现_第3张图片
在varnish端清除缓存:

varnishadm ban.url .*$	#清除所有缓存
varnishadm ban.url /index.html	#清除网页的缓存

在这里插入图片描述
客户端测试

可以看到又是访问的服务器server2
企业项目实战----CDN加速的实现_第4张图片

你可能感兴趣的:(运维)