Vanish搭建CDN的节点集群

前言:

         在不同地域的用户访问网站的相应速度存在差异,为了提高用户访问的相应

速度,优化现有internet中的信息流动,需要在用户和服务器之间加入中间层CDN,

是用户能以最快的速度从最近的地方获得所需的信息,加速解决网络的拥塞,提高

响应的速度,是目前大型互联网站使用的流行应用方案。

使用·Vanish实现CDA的节点集群

vanish的工作原理如下:

 

Vanish搭建CDN的节点集群_第1张图片

Varnish处理请求流程大致可以分为如下几个步骤

1、首先当请求到达时,接受vcl_recv函数的检查,在这个函数中,可以执

行pass、pipe、lookup、error操作

 

2、如果在vcl_recv函数执行lookup操作,则会在缓存中查看是否有该缓存对象。

如果有,则表示缓存命中,则在接受vcl_hit函数的检 查。在该函数下可以将缓

存对象直接返回给客户端,即执行deliver操作。也可以不使用本地缓存对象,

从后端服务器获取请求对象,即执行pass操作。 如果本地没有该缓存对象,则表

示缓存丢失,则会接受vcl_miss函数检查。该函数会从后端服务器获取最新资源,

即将会执行pass或fetch操作。

 

3、如果在vcl_recv函数执行pass操作,则表示不再本地缓存查找,直接从后端服务器

进行获取,即将会接受vcl_pass函数的检查。

 

4、如果在vcl_recv函数处执行pipe操作,则表示不再本地缓存中查找,并且客户端和

后端服务器建立管道,后续客户端的keep-alive连 接中的请求数据传输将在管道中进行,

并且请求数据接受vcl_pipe函数的检查。直到数据传输完成时关闭该管道连接。

 

5、当需要从后端服务器获取资源或数据时,需要调用vcl_fetch函数,并且根据某种条

件判断该数据或资源是否缓存在本地,即执行deliver操 作;或者直接将该资源返回给客

户端,不缓存在本地,即执行hit_for_pass操作 最后,不管是从本地缓存中响应的数据

还是从后端原始服务器获取到的数据返回给客户端都需要调用vcl_deliver函数来完成。

 

 

正文:

这里我们使用一台物理机和三台虚拟机进行实验

主机:172.25.68.250

server1:172.25.68.1  (使用varnish工具实现CDN的节点集群)

server2 172.25.68.2 (充当后台的服务器)

server3 172.25.68.3 (充当后台的服务器)

在varnish的缓存原理简单分为以下两种:

当varnish上灭有用户想要请求数据的缓存时

--------------------------------------------------------

Client -> dns -> cdn -> server -> cdn -> cache -> Client

 

当varnish 上具有用户的缓存时

--------------------------------------------------------

Client ->dns ->cdn ->cache -> Client

 

一、对Vatnish进行软件的下载和相关服务的配置

1、进行varnish软件的安装

yum install varnish-*  -y         ###进行varnish相关软件的安装

Vanish搭建CDN的节点集群_第2张图片

Vanish搭建CDN的节点集群_第3张图片

 

 

2、进行varnish监听端口的设定

vim /etc/sysconfig/varnish         ###进行varnish监听端口的修改

Vanish搭建CDN的节点集群_第4张图片

 

 

3、进行主机安全限制文件的修改(保证流量大时,服务器可以正常工作)

打开文件的最大数:有如下关系:内核操作>操作系统>软件

内核允许的打开文件的最大数:

 

(1)、进行varnish打开文件数的查看

Vanish搭建CDN的节点集群_第5张图片

 

(2)、进行内存的修改,时内核打开的文件数大于varnish打开的软件数

Vanish搭建CDN的节点集群_第6张图片

 

(3)、进行主机安全的限制

vim /etc/security/limits.conf        ###进行主机安全文件的配置

Vanish搭建CDN的节点集群_第7张图片

 

 

4、默认配置文件的修改和服务的开启和服务端口是否开启

vim /etc/varnish.default.vcl                ###进行默认配置文件的编辑
/etc/init.d/varnish  start                  ###进行服务的开启
netstat  -tnlp                              ###进行端口的查看

Vanish搭建CDN的节点集群_第8张图片

Vanish搭建CDN的节点集群_第9张图片

 

 

二、在后台服务器进行相关的配置

在server2主机上进行httpd 软件的安装和服务的开启和默认发布文件的编辑

1、进行软件的安装和服务的启动

yum install httpd -y      ###进行httpd 软件的安装
/etc/init.d/httpd start   ###进行软件服务的开启

Vanish搭建CDN的节点集群_第10张图片

Vanish搭建CDN的节点集群_第11张图片

 

 

2、进行默认发布文件的编辑

vim /var/www/html/index.html      ###进行默认发布文件的编辑

Vanish搭建CDN的节点集群_第12张图片

 

 

三、在真机上进行相应的测试(判断varnish是否完成代理功能)

Vanish搭建CDN的节点集群_第13张图片

 

 

四、进行缓存是否名命中的查看

在server1中:

1、在配置文件中进行相应的设定进行服务的重新加载

vim /etc/varnish/default.vcl     ###进行配置文件的编辑
/etc/init.d/varnish   reload     ###进行varnish的重新加载

Vanish搭建CDN的节点集群_第14张图片

 

 

2、进行是否击中的测试

curl -I 172.25.68.1     ###进行是否击中的查看
varnishadm ban.url .*$  ###进行缓存的清除

当用户进行第一次访问时:没有缓存(可以看到没有进行击中)

Vanish搭建CDN的节点集群_第15张图片

 

当用户进行第二次访问时:此时具有缓存,(可以看到被击中)

Vanish搭建CDN的节点集群_第16张图片

 

 

3、在真机上进行本地解析的设定,查看使用域名是否击中的测试

vim /etc/hosts            ###进行本地解析的设定
curl -I www.westos.org    ###通过域名进行服务器的访问,查看是否击中

Vanish搭建CDN的节点集群_第17张图片

第一次进行访问时,没有缓存,没有击中:

Vanish搭建CDN的节点集群_第18张图片

 

进行第二次访问时,已经具有了缓存,结果击中

Vanish搭建CDN的节点集群_第19张图片

注意的是:缓存存在的时间为120s,我没可以在配置文件可以进行设定

我们可以通过varnishadm进行手动清除缓存

在varnish服务端(server1)进行缓存的清除,然后在客户端进行测试

varnishdam ban.url .*$  :清除所有的缓存

varnishdam ban.url /index.html    :清除页面的缓存

 

 

五、定义多个不同域名站点的后端服务器

1、进行Varnish配置文件的编辑

vim /etc/varnish/default.vcl     ###进行配置文件的编辑
/etc/init.d/varnish reload       ###进行服务的重新加载

Vanish搭建CDN的节点集群_第20张图片

 

2、在真机上进行本地解析的设定

Vanish搭建CDN的节点集群_第21张图片

 

3、在server3上进行apache软件的安装和默认发布文件的编辑

yum install httpd -y           ###进行apache软件的安装
vim /var/www/html/index.html   ###进行默认发布文件的编辑
/etc/init.d/httpd start        ###进行apache软件的启动

Vanish搭建CDN的节点集群_第22张图片

Vanish搭建CDN的节点集群_第23张图片

 

4、在真机上进行相关的测试:

Vanish搭建CDN的节点集群_第24张图片

当访问其他的页面时进行报错:

Vanish搭建CDN的节点集群_第25张图片

我们可以观察到:通过不同的域名进行访问时,varnish会根据不同的

域名访问不同的服务器

 

 

六、实现负载均衡的轮番

1、在Varnish配置文件中进行相关的设定

Vanish搭建CDN的节点集群_第26张图片

Vanish搭建CDN的节点集群_第27张图片

 

2、在server3进行相关的配置

(1)进行apache配置文件的修改

vim /etc/httpd/conf/httpd.conf    ###进行apache配置文件的编辑

Vanish搭建CDN的节点集群_第28张图片

 

(2)进行发布目录和文件的建立

mkdir /www   /bbs                 ###进行发布目录的建立
vim /www/index.html               ###进行发布文件的编辑
vim /bbs/index.html               ###进行发布文件的编辑

 

(3)进行服务的重启和Varnish服务的重新加载

/etc/init.d/httpd restart          ###进行服务的重启
/etc/init.d/varnish reload         ###进行服务的重新加载

 

3、在真机上进行相关的测试

Vanish搭建CDN的节点集群_第29张图片

通过测试我们可以看到:在主机进习www.westos.org时,实现负载均衡的轮询

,当访问bbs.westos.org时,访问指定的服务器的特定的资源,与配置文件所设定的

一致。

 

 

七、使用bansys.zip进行批量推送清除缓存

在server1中

1、进行相关软件的下载

Vanish搭建CDN的节点集群_第30张图片

Vanish搭建CDN的节点集群_第31张图片

 

2、进行压缩包的解压(这里我们不介绍解压过程)

unzip bansys.zip -d /var/www/html    ###进行压缩包的解压
ls /var/www/html     ###进行压缩包解压之后结果的查看

 

3、对配置文件进行编辑

vim /rvar/www/html/config.conf       ###进行配置文件的编辑

 

Vanish搭建CDN的节点集群_第32张图片

 

4、进行httpd服务端口的改变(因为varnish已经占用了80端口)

vim /etc/httpd/conf/httpd.conf         ###进行httpd配置文件的编辑

Vanish搭建CDN的节点集群_第33张图片

 

5、对varnish配置文件进行编辑

 

vim /etc/varnish/default.vcl           ###进行varnish配置文件的编辑

Vanish搭建CDN的节点集群_第34张图片

 

6、进行httpd服务的重启和varnish服务的重新加载

/etc/init.d/httpd    restart          ###进行httpd服务的重启
/etc/init.d/varnish   reload          ###进行服务的重新加载

Vanish搭建CDN的节点集群_第35张图片

 

7、进行测试

在真机的浏览器中:172.25.68.1:8080

Vanish搭建CDN的节点集群_第36张图片

Vanish搭建CDN的节点集群_第37张图片

(1)这里我们选择httpd进行推送,设定的为8080端口

推送内容为:.*$(用于缓存的清除)

查看缓存信息是否被清除:通过curl  www.westos.org 进行是否击中测定,

通过测试,可以看到缓存已经被清除

 

(2)如果选择talnet模式,则需要如下配置

telnet 模式需要关闭 varnish 服务管理端口的验证,

注释掉/etc/sysconfig/varnish 文件中的 “ -S ${VARNI

SH_SECRET_FILE}”这行,重启 varnish 服务即可

 

8、在真机上进行相关的测试

Vanish搭建CDN的节点集群_第38张图片

通过推送清除进行再次访问时,可以看到缓存已经被清除

 

你可能感兴趣的:(Vanish搭建CDN的节点集群)