本文共 1823 字,大约阅读时间需要 6 分钟。
7.8 杂项
整个cdn
最重要的部分就是全局智能dns
服务,这是cdn
不可替代的组件。在没有出现视图view
功能之前(或者当某些系统管理员不知道有这样的功能),甚至有人以dns
轮询方式调度用户对缓存服务器的访问,这种形式会让用户的体验时好时坏。 在本章“7.3.3
”节,我们用了一个脚本get_ip.sh
来取得和归类ip
地址,而未说明是怎样一回事情。那么,在本章的结尾我把它补充一下。 我们知道,亚太地区的ip
地址由APNIC
(http://www.apnic.net
)分配,通过访问APNIC
官方站点的url
: ,
可以知道在何处得到ip
地址分配的有用信息(如图7-8
所示)。 点击图7-8
加下划线的那个链接,就进入ftp
站点 ,
再点几次鼠标,最后定位在 ,这个文件帮助我们了解该下载哪个文件以及文件的格式。让我们按照这个README.TXT
的提示,在浏览器里打开页面文件 ,除去注释行,我们将看见形如“apnic|JP|asn|173|1|20020801|allocated
”的文本行。把这个文件下载下来,过滤一下,变可以把分配给中国大陆(第2
个字段为“CN
”)单独提取出来。在前面的get_ip
脚本,用wget
下载这个delegated-apnic-latest
文件,然后再用grep
把CN
提取出来形成一个单独的文件。具体的操作就是一下两步: (1)
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O /root/ipnic/ip_apnic (2)
grep 'apnic|CN|ipv4|' /root/ipnic/ip_apnic | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
echo $ip:$cnt
mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt)
EOF)
echo $ip/$mask>> cn.net 在得到ip
地址段以后,通过网站 查询这个地址段属于那个运营商,或者在linux
下用whois
工具查询。用访问网站的方式,一次只能查询一个地址段,根本无法完成所有地址的查询。而使用whois
则可用遍历方式逐个查询,然后按关键字归类,形成几个单独的文件。 可能由于各ip
地址租用方未能按同一的标准在apnic
提交注册信息,get_ip.sh
脚本以正则表达式“netname
”取得的值就未必能清楚反应运营商的名称,如“netname: KLSF-LID-BJ
”就很难从字面上连接是那个运营商的网络。如果你想判别更精准一些,则需要借助其他正则表达式如“mnt-by
”作为辅助条件。 Cdn
服务运营中,有可能出现某个运营上机房网络不可用的情况--
如设备故障或机房维护操作--
这样一来,就导致某个区域的用户彻底不能访问。出现这种极端情况时,我们需要把出故障的机房资源临时从dns
的转发列表删除,然后把前往这些机房的访问转发到其它地方,接下来,还是以我的实例来做说明。 现在假定我们放置服务器的电信idc
托管机房出故障,造成电信的用户不能访问我的网站。在我发现故障以后,打开区文件telecom.sery.cn.zone
,把它里面的A
记录做修改,如果要把它的流量切换到网通机房,则把A
记录对应的 ip
改成跟unicom.sery.cn.zone
的设置一样。 在进行流量切换操作时,很可能因为瞬间流量过大而使系统过载,因此在设计简单cdn
容量的时候,每个点应该至少能承受整个系统用户的访问,否则当你从一个故障机房切换流量时,顺便也吧另一个点也撑死了,这种结果当然不是我们想要的。 本文转自sery51CTO博客,原文链接:http://blog.51cto.com/sery/291343 ,如需转载请自行联系原作者