例子:当西安的用户,想要去访问远在深圳的腾讯服务器时。如果每次都直接访问深圳腾讯服务器那么,效率会及其底下。如果西安有一个腾讯的代理服务器,西安用户只需要去访问西安的代理服务器,第一次,西安代理服务器,也需要去深圳腾讯服务器访问,只要西安的腾讯代理服务器缓存以后,其余的用户或者之后再访问相同的内容,速度会很快。

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

一:实验准备工作 1、修改主机名

vi /etc/sysconfig/network

server1 server2 server3 2、修改本地解析

vi /etc/hosts

172.25.85.1 server1

172.25.85.2 server2

172.25.85.3 server3 3、修改ip地址

vi /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/init.d/network restart

4、配置yum源

vi /etc/yum.repos.d/rhel-source.repo yum clean all yum repolist

5、安装vim,openssh 和 lftp

yum install vim openssh-clients lftp -y

6、删除70-persistent-net.rules文件    ##如果有这个文件,快照会报错,因为里面含有mac地址

   18  cd /etc/udev/    19  ls    20  cd rules.d/    21  ls    22  rm -rf 70-persistent-net.rules

7、关闭selinux

vi /etc/sysconfig/selinux

SELINUX=disabled

8、关闭防火墙并开机不启动

   13  /etc/init.d/iptables stop    14  /etc/init.d/ip6tables stop    15  chkconfig iptables off    16  chkconfig ip6tables off

2)利用快照安装三台虚拟机:

 cd /var/lib/libvirt/images/ qemu-img create -f qcow2 -b origin.qcow2 vm1.qcow2 qemu-img create -f qcow2 -b origin.qcow2 vm2.qcow2 qemu-img create -f qcow2 -b origin.qcow2 vm3.qcow2

1、复制三张虚拟机的vm1,vm2,vm3 2、安装三台虚拟机vm1,vm2,vm3 3、修改三台虚拟机的主机名和ip地址 vi /etc/sysconfig/network vi /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/init.d/network restart

二、varnish服务的安装

1)varnish的介绍 2)第一台服务器vm1安装varnish,并修改好配置文件

1、下载号安装包varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm,并安装

yum install varnish-* -y

2、修改配置文件    

rpm -qc varnish-     ##查看配置文件

配置文件一

 vim /etc/sysconfig/varnish      ##查看第一个配置文件

  8 NFILES=131072             ##最大可以开启的数量

 12 MEMLOCK=82000      ##占用的内存

 15 NPROCS="unlimited"    ##线程数量不限制 我们需要查看系统最多可以打开多少文件,要大于varnish的数量

sysctl -a | grep file ##查看系统可以开启的最大文件数量 free -m ##查看系统内存 sysctl -a | grep file 配置文件二

vim /etc/sysconfig/varnish     ##修改端口  66 VARNISH_LISTEN_PORT=80

修改系统内置的配置文件,使得达到varnish的要求。 vim /etc/security/limits.conf  51 varnish         -       nofile          131072        ##最大开启文件的数量  52 varnish         -       memlock         82000    ##占用的内存  53 varnish         -       nproc           unlimited    ##进程号是否限制 配置文件三:

[root@server1 ~]# vim /etc/varnish/default.vcl 7 backend default { 8 .host = "172.25.85.2"; 9 .port = "80"; 10 } 3)启动varnish

/etc/init.d//varnish start cat /etc/passwd              ##系统会多一个varnish的用户 ps aux | grep varnish    ##查看进程有两个,一个为root,一个为varnish cat /proc/1035/status     ##查看进程号的状态,root只有一个线程 ps aux | grep varnish at /proc/1036/status     ##varnishi有109个线程

4)第二台服务区vm2安装httpd服务

yum install httpd -y reboot cd /var/www/html/ ls vim index.html        ##编写默认发布目录 /etc/init.d/httpd start

测试:

在测试主机curl vm1的ip地址 5)实现varnish的缓存功能

在vim /etc/varnish/default.vcl编写如下 sub vcl_deliver{ if (obj.hits > 0){ set resp.http.X-Cache = "HIT from westos cache"; } else{ set resp.http.X-Cache = "MISS from westos cache"; } return (deliver); } 完成后,重新加载 /etc/init.d/varnish reload

测试结果

第一次 没有缓存 第二次 有缓存 清空缓存要在,varnish服务端进行。

清空缓存:varnishadm ban.url .*$                                        varnishadm ban.url /index.html  访问方式不同          要使用 curl -I 172.25.38.1/index.html 6)设置两个网页

在vim /etc/varnish/default.vcl编写如下 backend web1 {   .host = "172.25.85.2";   .port = "80"; }

backend web2 {   .host = "172.25.85.3";   .port = "80"; } sub vcl_recv{     if (req.http.host ~ "^(www.)?westos.org"){         set req.http.host = "www.westos.org";         set req.backend = web1; }elsif (req.http.host ~ "^bbs.westos.org"){         set req.backend = web2;     } else{         error 404 "westos cache";     } }

完成后,重新加载 /etc/init.d/varnish reload

在测试机,加入本地解析

vim /etc/hosts

172.25.85.1 server1 www.westos.org bbs.westos.org 测试结果 7)如何实现负载均衡(轮询访问web1和web2)

在vim /etc/varnish/default.vcl编写如下

director lb round-robin{      ##实现轮询     { .backend = web1; }     { .backend = web2; } }    sub vcl_recv {     if (req.http.host ~ "^(www.)?westos.org"){         set req.http.host = "www.westos.org";         set req.backend = lb;                ##访问www.westos.org 论寻         return (pass);                            ##不会缓存,否则看不到效果     }elsif ( req.http.host ~ "^bbs.westos.org" ){         set req.backend = web2;     }else{         error 404 "westos cache";     } } 完成后,重新加载 /etc/init.d/varnish reload 实验结果 8)虚拟主机的安装

在server2或者server3实现

1、编辑配置文件vim /etc/httpd/conf/httpd.conf

990 NameVirtualHost *:80

1004 <VirtualHost *:80> 1005     DocumentRoot /www 1006     ServerName www.westos.org 1007 </VirtualHost> 1008 1009 <VirtualHost *:80> 1010     DocumentRoot /bbs 1011     ServerName bbs.westos.org 1012 </VirtualHost> 2、创建目录

[root@server3 html]# mkdir /www [root@server3 html]# mkdir /bbs

3、编辑内容

[root@server3 html]# cd /www [root@server3 www]# vim index.html [root@server3 www]# cd /bbs/ [root@server3 bbs]# vim index.html 重启服务

/etc/init.d/httpd restart

测试

测试机vim/etc/hosts 172.25.85.2 server2 www.westos.org bbs.westos.org 结果 9)cdn推送管理,清除缓存

1、安装相关软件

yum install unzip httpd php -y 2、解压unzip bansys.zip -d /var/www/html/

3、编写bansys配置文件

cd /var/www/html/bansys/ vim config.php

编辑如下   4、修改端口号为8080

vim /etc/httpd/conf/httpd.conf  136 Listen 8080 启动http服务 /etc/init.d/httpd start

5、将所有bansys的配置文件移动到aphache目录下

mv * ../

测试:

测试机 vim /etc/hosts 172.25.85.1 server1 www.westos.org bbs.westos.org 使用测试机访问cdn(vm1)服务器,可以看到cdn推送管理 172.25.85.1:8080 6、编写varnish的配置文件            

vim /etc/varnish/default.vcl

编写 acl westos{ "127.0.0.1"; "172.25.85.0"/24;      ##85段的IP允许 }

sub vcl_recv {     if (req.request == "BAN"){         if (!client.ip ~ westos){             error 405 "Not allowed.";         }     ban("req.url ~ " + req.url);         error 200 "ban added";     } }

重新加载varnish /etc/init.d/varnish reload

测试:

测试机 访问 172.25.85.1:8080 发送模式:HTTP cdn www.westos.org 推送内容: .* ##清空缓存 在控制台