cdn原理与配置

背景:在传统的互联网架构中,用户要是访问一个网站,先得在浏览器中输入域名,浏览器将请求发往本地的DNS做解析,本地DNS将请求发往网站授权的DNS服务器接着由授权DNS将服务器的ip地址作为解析结果返回给本地DNS,本地DNS再将ip地址返回给用户同时将解析的结果保存在自己的缓存中,直到TTL过期。

很明显传统的网络访问模式在几个环节中存在着影响用户访问效率与质量的环节:

1.在授权DNS做解析时,不会检测服务器的状态,如果服务器已经宕机,在用户用解析返回的ip访问对应的网站时,就会造成服务中断。

2.互联网没有一个专门的管理机构,不同网络间的兼容问题以及不同网络运营商之间的传输瓶颈会使数据流通受到限制。

CDN网络是在用户和服务器之间增加Cache层最简单的CDN网络有一个负责全局负载均衡的DNS和各节点一台Cache,DNS支持根据用户源IP地址解析不同的IP,实现就近访问。当用户访问一个加入CDN服务的网站,所发送的请求都去交到全局负载均衡DNS进行处理,它会智能的选择一个当前离用户最近的节点来为用户提供服务,确保服务的高效率,同时它还会与世界各地的所有CDN节点保持通信,搜集各节点的服务状态,防止将用户的请求发送到不能服务的节点上。对于普通的Internet用户来讲,每个CDN节点就相当于一个放置在它周围的WEB。通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求。由于它离用户更近,因而响应时间必然更快。

实验环境:3台虚拟机(一台做varnish服务器,一台为源服务器)+一台真机(作为客户端)
实验原理:
client -->虚拟机1 --> 虚拟机2    ,用户通过虚拟机1去访问虚拟机2,如果虚拟机1有客户需要的资源,则返回给客户,若没有,则去虚拟机2去取资源,然后存入虚拟机1,这样提高了访问速度,降低了虚拟机2的压力。

实验步骤:
虚拟机1:
1、yum install gcc varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm -y        #安装软件

2、vim /etc/sysconfig/varnish

60    VARNISH_LISTEN_PORT=80        #更改默认端口

95    VARNISH_TTL=120        #缓存保留时间

3、vim /etc/varnish/default.vcl

backend default {        #配置后端服务器
  .host = "172.25.31.2";    #设置为虚拟机2的ip地址
  .port = "80";
}
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);
}
4、/etc/init.d/varnish restart         #重启服务

虚拟机2:
1、yum install httpd -y

2、写个html文件并发布

真机:
1、vim /etc/hosts
虚拟机1ip    www.wzw.com        #作解析

测试:
真机:
(1)ping www.wzw.com    #会显示虚拟机1的IP,所以对于用户来说是透明的
(2)curl -I www.wzw.com
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Sat, 20 Jan 2018 07:16:59 GMT
ETag: "9f8ff-1b-5632ffb9e7d4f"
Content-Type: text/html; charset=UTF-8
Content-Length: 27
Accept-Ranges: bytes
Date: Sat, 20 Jan 2018 07:39:07 GMT
X-Varnish: 639697508
Age: 0
Via: 1.1 varnish
Connection: keep-alive
X-Cache: MISS from westos cache
虚拟机1:
通过 varnishadm 手动清除缓存
varnishadm ban.url .*$        #清除所有
vanishadm ban.url /index.html    #清除 index.html 页面缓存
 varnishadm ban.url /admin/$    #清除 admin 目录缓存


冗余备份与对用多台不同服务器:
虚拟机1:
1、vim /etc/varinsh/default.vcl
backend web1 {
  .host = "172.25.31.2";
  .port = "80";
}
backend web2 {
  .host = "172.25.31.3";
  .port = "80";
}
director lb round-robin{    #轮转调度算法
{.backend  =  web1;}
{.backend  =  web2;}
}
sub vcl_recv {    #控制接收
if (req.http.host ~ "^(www.)?wzw.com") {
set req.http.host = "www.wzw.com";
set req.backend = lb;
return (pass);        #不做缓存,正式不会这么做,此处方便测试
} elsif (req.http.host ~ "^bbs.wzw.com") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}
2、/etc/init.d/varnish restart
虚拟机3:
1、安装http服务
2、修改配置文件:
 vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName bbs.wzw.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www
    ServerName www.wzw.com
</VirtualHost>

3、mkdir /www
4、vim /www/index.html
5、/etc/init.d/httpd restart




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值