例子:当西安的用户,想要去访问远在深圳的腾讯服务器时。如果每次都直接访问深圳腾讯服务器那么,效率会及其底下。如果西安有一个腾讯的代理服务器,西安用户只需要去访问西安的代理服务器,第一次,西安代理服务器,也需要去深圳腾讯服务器访问,只要西安的腾讯代理服务器缓存以后,其余的用户或者之后再访问相同的内容,速度会很快。
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
推送内容: .* ##清空缓存
在控制台