CDN原理以及实验部署操作步骤

目录

CDN 服务器原理(来源于网络)

一. CDN实验

部署

1) web服务器

1. 安装apache

2. 新添加两块临时网卡

3. 配置    ---基于 ip 的域名解析

2) DNS 服务器

1. 定义试图

2.定义zone

3.对应zone文件

3) client测试:

二. 缓存

squid代理服务器

1) 正向代理

2) 透明代理

3) 反向代理

三. 练习实验:CDN+squid


CDN 服务器原理(来源于网络)

① 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。

② CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。

③ 用户向CDN的全局负载均衡设备发起内容URL访问请求。

④ CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

⑤ 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。

⑥ 全局负载均衡设备把服务器的IP地址返回给用户。

⑦ 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

  DNS服务器根据用户IP地址,将域名解析成相应节点的缓存服务器IP地址,实现用户就近访问。使用CDN服务的网站,只需将其域名解析权交给CDN的GSLB设备,将需要分发的内容注入CDN,就可以实现内容加速了。

流程图(源于网络):


一. CDN实验

分别模拟【联通】【移动】用户访问同一个域名显示不同的结果

部署

准备三台虚拟机【client】【DNS】【web】

client:
        ip:
                192.168.1.99
                192.168.122.100

DNS 服务器:
        ip:
                192.168.122.101
web 服务器:
        ip:
                192.168.122.200
                192.168.122.201

1) web服务器

1. 安装apache

yum -y install httpd

2. 新添加两块临时网卡

ip addr add 192.168.122.200/24 dev ens33 label ens33:0
ip addr add 192.168.122.201/24 dev ens33 label ens33:1

3. 配置    ---基于 ip 的域名解析

修改配置文件

cd /etc/httpd/conf.d
vim cdn.conf

<VirtualHost 192.168.122.200:80>
        ServerName www.syz.com
        DocumentRoot /srv/cnc/
</VirtualHost>
<Directory "/srv/cnc/">
        Require all granted
</Directory>
<VirtualHost 192.168.122.201:80>
        ServerName www.syz.com
        DocumentRoot /srv/tel/
</VirtualHost>
<Directory "/srv/tel/">
        Require all granted
</Directory>

 重启服务

systemctl restart httpd


2) DNS 服务器

DNS视图

1. 定义试图

vim /etc/named.conf 

listen-on port 53 { any; };
allow-query     { any; };

# 定义 acl 访问控制列表,允许那些 ip 来访问解析
acl tel { 192.168.1.99; };                              # 注意:此处为客户端测试的网卡 ip
acl cnc { 192.168.122.100; };                      # 注意:此处为客户端测试的网卡 ip

view telnet {
        match-clients {tel;};
        recursion yes;
        include "/etc/telnet.zones";    
};

view cncnet {
        match-clients {cnc;};
        recursion yes;
        include "/etc/cncnet.zones";    
};

2.定义zone

touch /etc/telnet.zones
touch /etc/cncnet.zones
chown .named /etc/telnet.zones
chown .named /etc/cncnet.zones
chmod 640 /etc/telnet.zones
chmod 640 /etc/cncnet.zones
vim /etc/telnet.zones


zone "syz.com" IN {
        type master; 
        file "syz.com.tel";
};

vim /etc/cncnet.zones

 zone "syz.com" IN {
        type master;
        file "syz.com.cnc";
};

3.对应zone文件

touch /var/named/syz.com.tel
touch /var/named/syz.com.cnc
chown .named /var/named/syz.com.tel
chown .named /var/named/syz.com.cnc
chmod 640 /var/named/syz.com.tel
chmod 640 /var/named/syz.com.cnc
vim /var/named/syz.com.tel

$TTL 86400
@       IN SOA  dns.syz.com.      root ( 20151230 1D 1H 1W 3H )
        IN NS   dns.syz.com.
dns     IN A    192.168.122.101
www     IN A    192.168.122.201

vim /var/named/syz.com.cnc

$TTL 86400
@       IN SOA  dns.syz.com.      root ( 20151230 1D 1H 1W 3H )
        IN NS   dns.syz.com.
dns     IN A    192.168.122.101
www     IN A    192.168.122.200


3) client测试:

vim /etc/resolv.conf

nameserver 192.168.122.101              # 添加 DNS 服务器

停止其中一块网卡

nmcli con down ens33

测试

host www.syz.com

开启停止的网卡ens33,停止另一块网卡

nmcli con up ens33 
nmcli con down ens37

再次测试

host www.syz.com

二. 缓存

例如:

  • varnish
  • squid代理软件
  • nginx

squid代理服务器

安装包: squid-3.1.10-16.el6.x86_64.rpm
配置文件: /etc/squid.conf
端口: 3128
启动服务: service squid restart
文档: /usr/share/doc/squid-3.1.10/squid.conf.documented
资料: squi中文权威指南

1) 正向代理

1.客户端指代理服务器
2.代理服务器 开启访问 启动服务

2) 透明代理

1.客户端 自动获取ip  网关  DNS
2.代理服务器
  http_port 3128 transparent
  iptables -t nat  -A  PREROUTING  -p tcp --dport 80 -j REDIRECT --to 3128

现在在公司中一般都使用反向代理


3) 反向代理

squid配置

vim /etc/squid/squid.conf

cache_dir ufs /var/spool/squid 100 16 256
http_access allow
http_port 80 vhost
cache_peer  10.10.10.100  parent  80  0  originserver           # 10.10.10.100 为 真正web服务器的 ip

使用本地机器(直接浏览器中输入代理机器ip)或者一台其他的服务器(curl)访问代理服务器的 ip,即可出现 web 服务器中的默认页面
在 /var/spool/squid 中的 00/00 目录下会出现一个新的文件,记录了刚才访问的内容,即缓存文件 

统计命中率

cat /var/log/squid/access.log | gawk '{print $4}' | sort | uniq -c | sort -nr

apache记录来源ip

vim /etc/httpd/conf/httpd.conf

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 

tail -f /var/log/messages


三. 练习实验:CDN+squid

一台 CDN-DNS 服务器
                         解析指向
        客户端 ip1      =>      192.168.122.101
        客户端 ip2      =>      192.168.122.102


两台 squid 代理
                                                   指向 web
        第一台:192.168.122.101          =>      192.168.122.200
        第二台:192.168.122.102          =>      192.168.122.201

一台 web 服务器:
        两块网卡:
                192.168.122.200
                192.168.122.201
        域名:
                www.syz.com

客户端(进行测试) 
        ip1:
                命令:host www.syz.com
                命令:curl www.syz.com

        切换网卡(ip)↑↓

        ip2:
                命令:host www.syz.com
                命令:curl www.syz.com

猜你喜欢

转载自blog.csdn.net/qq_43139145/article/details/104321100
今日推荐