cdn的全称是Conten Delivery Network,即内容分发网络,其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向到离用户最近的服务节点上。其目的是使用户可以就近取得所需内容,解决Internet网络拥挤的状况提高用户访问网站的响应速度。
一 通过ip的访问
1. 创建子盘:
在/var/lib/libvirt/images目录下,通过制作的虚拟机母盘制作三个子盘test1、test2和test3,用来生成三个虚拟机:
2. 通过制作的子盘生成新的虚拟机:
在virt-manager指令的操作界面下选择从已有硬盘导入:
选择系统和虚拟机版本:
3.在安装好的虚拟机里配置好ip和并修改主机名后,在真机里使用ssh指令连接虚拟机。如果出现以下问题,在/root/.ssh/known_hosts文件中删除想要连接ip的相关内容即可:
4. 在安装好的test虚拟机里安装varnish服务的rpm包,并修改主机名为server1:
5. 安装完成之后在/etc/security/limits.conf文件中写入对打开文件个数、地址空间、最大进程数的配置:
6. 在/etc/sysconfig/varnish文件中修改varnish端口为80:
7. 在 /etc/varnish/default.vcl文件中写入默认配置。意思是当别的主机访问本机ip时,将通过80端口将服务导向172.25.17.2这台主机的httpd发布界面,读取其中的内容:
8. 使用生成的子盘test2再制作一个虚拟server2,再server2这台主机设定ip为172.25.17.2,配置好yum源后安装httpd服务并在httpd服务的默认发布目录中编辑index.html文件并写入:www.westos.org,之后重启httpd服务:
9. 在server1端重新加载varnish服务:/etc/init.d/varnish reload
在真机端打开浏览器访问172.25.17.1,显示出172.25.17.2即server这台主机的httpd默认发布目录的内容:
二 域名解析
1. 在之前操作的基础上,从test3子盘制作一个新的虚拟机并改名为server3,设定ip为172.25.17.3,配置好yum源之后安安装httpd服务。
2. 为了便于区别,修改server2主机的httpd默认发布目录的index.html文件内容为:
在server3主机端的httpd,默认发布目录下的index.html文件内容为:
3. 在server1主机端编辑varnish服务的配置文件/etc/varnish/default.vcl:
配置172.25.17.2主机为后端服务器,设定名称为web1
配置172.25.17.3主机为后端服务器,设定名称为web2
测定缓存命中:
设定当访问www.westos.org域名时从web1上读取数据,访问bbs.westos.org时从web2上读取数据,访问其他域名时提示404错误:
4. 重启server2和server3端的httpd服务,重新加载server1端的varnish服务。在真机端的/etc/hosts文件中写入域名的解析:
5. 测试:
1) 打开真机的浏览器访问www.westos.org:
访问bbs.westos.org:
访问其他域名报错:
2)curl -I指令第一此解析域名显示MISS表示缓存未命中。因为第一次解析是从后端服务器读取的数据,server1端并没有缓存:
第二次解析由于产生了缓存,显示HIT表示缓存命中:
三 负载均衡
1.在之前的基础上,编辑server1端的/etc/varnish/default.vcl文件:
将web1和web2后端聚合成一个组,组名命名为westos。
当访问www.westos.org域名时,从westos组里读取数据。为方便测试,使用return (pass)指令表示不进行缓存:
2. 在server3端编辑httpd的配置文件/etc/httpd/conf/httpd.conf:
在990行打开虚拟主机的端口。
当其他主机访问www.westos.org域名时指向/www1发布目录;当其他主机访问bbs.westos.org域名时,指向/var/www/html发布目录。配置文件编辑完成之后,建立目录/www1,并在目录中写入index.html文件内容为:www.westos.org--server3。之后重启httpd服务并在server1端重新加载varnish服务。这样就为www.westos.org域名设定了两个服务端即server2和server3,在不进行缓存的情况下,从两台服务端交替进行对域名www.westos.org的解析,将一台服务器的压力由两个服务器分担,实现负载均衡。
3. 测试:
在真机端解析:
由server2、server3两台服务器交替解析。这样就为www.westos.org域名设定了两个服务端即server2和server3,在不进行缓存的情况下,从两台服务端交替进行对域名www.westos.org的解析,将一台服务器的压力由两个服务器分担,实现负载均衡。
四 通过 varnishadm 手动清除缓存
varnishadm ban.url .*$ #清除所有
varnishadm ban.url /index.html #清除 index.html 页面缓存
varnishadm ban.url /admin/$ #清除 admin 目录缓存
五 cdn推送管理
1. 在server1端安装php语言支持和unzip,为避免httpd与varnish端口冲突,将httpd端口改为8080。
准备bansys.zip压缩包,并将其指定解压到/var/www/html目录下:
2. 进入到bansys的解压目录,将里面的所有文件移动到/var/www/html目录里:
3. 编辑config.php文件:
将其余的内容删除:
4. 编辑varnish的配置文件default.vcl :
注释掉用来测试负载均衡时清楚缓存的指令return (pass);
5. 功能测试:
重新加载varnish服务,打开浏览器访问172.25.254.1:8080 :
在真机端使用命令curl -I www.westos.org/index.html解析www.westos.org域名使其产生一个缓存:
在默认的120s缓存自动清除的时间内,在浏览器中的cdn推送管理界面手动清除缓存并提交:
120s内再次解析显示MISS表示缓存清除成功: