CDN
简介:
CDN(Content Delivery Network)内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
优势:
CDN能几乎涵盖国内所有线路。而在可靠性上, CDN 在结构上实现了多点的冗余,即使某一个节点由于意外发生故障,对网站的访问能够被自动导向其他的健康节点进行响应。CDN能轻松实现网站的全国铺设,不必考虑服务器的投入与托管、不必考虑新增带宽的成本、不必考虑多台服务器的镜像同步、不必考虑更多的管理维护技术人员。
CDN推送平台
作用
更快更有效的实现后端服务器的某些页面的更新(只需要把更新的内容进行推送即可),让网络信息更加快速更新
实验操作
一、环境:
server1:172.25.66.1 安装varnish、apache服务
server2:172.25.66.2 安装apache服务
server3:172.25.66.3 安装apache服务
二、配置varnish服务器server1
1:安装httpd
yum install httpd -y
2:修改httpd默认端口为8080(因为varnish的默认端口也是80,为避免端口冲突,所以修改httpd默认端口为8080)
vim /etc/httpd/conf/httpd.conf
第136行修改:Listen 8080
3:开启httpd服务,查看端口
3:下载PHP(CDN是用php语言写的,所以要下载php,用来打开cdn推送平台界面)
yum install php -y
4:yum install unzip -y
unzip -x bansys.zip(这个包里面目录中放的都是php文件)
5:mv bansys/* /var/www/html/
因为我们要打开CDN推送界面,所以要把这些php文件都放在apache默认发布目录中
6:vim /var/www/html/config.php
<?php
//varnish主机列表
//可定义多个主机列表
$var_group1 = array(
'host' => array('172.25.66.1'),
'port' => '80',
);
//varnish群组定义
//对主机列表进行绑定
$VAR_CLUSTER = array(
'www.westos.org' => $var_group1,
);
//varnish版本
//2.x和3.x推送命令不一样
$VAR_VERSION = "3";
?>
7:重启httpd服务/etc/init.d/httpd restart
8:在物理机浏览器测试,物理机中一定要做解析
vim /etc/hosts
在浏览器中测试:
输入:172.25.66.1:8080
在推送平台界面中我们选择HTTP模式
9:HTTP模式需要对varnish主机做以下设置
vim /etc/varnish/default.vcl
##添加如下
acl westos { #设置访问控制,即白名单
"127.0.0.1";
"172.25.66.0"/24;
}
backend web1 {
.host = "172.25.66.2";
.port = "80";
}
backend web2 {
.host = "172.25.66.3";
.port = "80";
}
director lb round-robin {
{ .backend = web1; }
{ .backend = web2; }
}
sub vcl_recv {
if (req.request == "BAN") {
if (!client.ip ~ westos) {
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
#return(pass); ##还原缓存,这一句需要注释了
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {
error 404 "westos cache";
}
}
#查看缓存命中情况
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from test cache";
}
else {
set resp.http.X-Cache = "MISS from test cache";
}
return (deliver);
}
10:重启varnish服务
/etc/init.d/varnish restart
二、配置apache服务器server2与server3
#保持Varnish负载均衡中server2与server3的配置:https://blog.csdn.net/gd0306/article/details/83957611#t8
三、推送测试
未推送之前:
推送:
推送之后再次测试:
可以看到,访问已经更新