日期:2011-03-16 22:37:00  来源:本站整理

<b>若何用DNS+GeoIP+Nginx+Varnish做世界级的CDN</b>[服务器安全]

赞助商链接



  本文“<b>若何用DNS+GeoIP+Nginx+Varnish做世界级的CDN</b>[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
若何用BIND, GeoIP, Nginx, Varnish来成立你自己的高效的CDN网络?
CDN,意思是Content Distrubtion Network,意思是内容分发网络,简单的说,就是全地域范围内的负载均衡,全地域的概念可以是全国,也可以是全世界.由统一的DNS服务器举行地址转发,挑选离用户近来的区域服务器举行负载均衡.本质上是从一个机房内的负载均衡扩大到了全世界范围内的负载均衡.同时可以将本地化的内容,由本地的服务器实现.做浏览器的区域自动挑选.
比方在中国,被人为划分成两大区域,北方是网通,南方是电信.这两个网络之间互访是对比慢的.作为大型网站,一种办理办法是将全部服务器架设在双线或三线ISP处,由ISP来供应路由上的挑选.这样做,线路的本钱会对比高.另一种办法就是将服务器架设在两边,南方一台,北方一台,然后由服务器自己挑选,假如IP在电信,就转发恳求到南方的服务器,假如是网通就转发到北方的服务器.
再扩大范围,可以将美国来的恳求交由美国服务器处理,这样也缩短了用户在路由上的等候时间.这就是内容分发网络.
而作为这个网络上的全部节点,都可以当作虚拟服务器来对待.至于在各地的服务器若何做负载均衡,可以由各节点之间完成.
预备工作以下:你需求下载以下软件以实现上述功效
接下来是编译和安装bind9和geoip
# tar -xzvf bind-9.2.4.tar.gz
# tar -xzvf GeoIP-1.4.6.tar.gz
# cd GeoIP-1.4.6
# ./configure –prefix=/usr/local/geoip
# make
# make install
# cd ..
# patch -p0 < bind-9.2.4-geodns-patch/patch.diff //给bind9打补钉,让bind9直接支持geoip库
# cd bind-9.2.4
# CFLAGS=”-I/usr/local/geoip/include” LDFLAGS=”-L/usr/local/geoip/lib -lGeoIP” ./configure –prefix=/usr/local/bind
# make
# make install
装好bind后我们来制作named.conf
view “us” {
// 匹配北美的客户端 US & Canada
match-clients { country_US; country_CA; };
// Provide recursive service to internal clients only.
recursion no;
zone “cdn.xianglei.com” {
type master;
file “pri/xianglei-us.db”;
};
zone “.” IN {
type hint;
file “named.ca”;
};
};
view “latin” {
// 匹配到南美国家
match-clients { country_AR; country_CL; country_BR; };
recursion no;
zone “cdn.xianglei.com” {
type master;
file “pri/xianglei-latin.db”;
};
zone “.” IN {
type hint;
file “named.ca”;
};
};
照此办理,你也可以匹配到欧洲,非洲等等,然后来开始制作nginx和varnish
注意,以上内容是你要在主节点服务器上做的,主节点服务器只负责对DNS恳求举行转发.
约定一下,我们将Bind服务器叫做动态节点服务器,Nginx+Varnish叫做边界服务器.
以下内容是副节点服务器需求做的,也就是实际在某个区域安排的服务器
# ./configure –prefix=/usr/local/nginx –with-http_realip_module
# make
# make install
并配置Nginx
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream dynamic_node {
server 1.1.1.1:80; # 1.1.1.1 是主DNS节点的IP地址
}
server {
listen 8080;
server_name cdn.xianglei.net;
location ~* \.(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|htm|html|js|css|mp3|swf|ico|flv)$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://dynamic_node;
proxy_store /var/www/cache$uri;
proxy_store_access user:rw group:rw all:r;

}
以上我们用nginx只对静态文件举行缓存,将静态文件缓存在/var/www/cache文件夹下,假如你没有的话,需求成立这个文件夹.并且nginx监听的是8080端口,这是因为,我们需求用varnish来监听80端口举行动态文件的转发.这里实际上是用nginx做了一个静态文件的反向代理和缓存的服务器,而真正让用户可以看到网页和动态文件的反向代理是varnish,而静态和动态文件的脱离存放,能将效率晋升不少.
最后我们来配置varnish服务.
# tar -xzvf varnish-2.1.2.tar.gz
# ./configure –prefix=/usr/local/varnish
# make
# make install
然后是varnish的选项
backend default {
.host = “127.0.0.1″;
.port = “8080″;
}
sub vcl_recv {
if (req.url ~ “\.(js|css|jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf)$”) {
return (lookup);
}
}
sub vcl_fetch {
if (req.url ~ “\.(js|css|jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf)$”) {
unset obj.http.set-cookie;
}
}
其他的配置内容可参看varnish的配置文章.
总结:
这样做的好处在于:
1.从本源上办理了DNS在轮询上的不肯定性,可以做到在DNS上的快速呼应.也避免了过去用Nginx+GeoIP时的负载高的问题.毕竟DNS的计算要比Nginx小多了.
2.降低大网站的服务器负载压力和运营本钱,毕竟F5BigIP和双线路的价钱和服务费都太高了.
3.易扩大性强,如某区域负载压力大,只需在该区域增添边界服务器组的web server便可完成,无需考虑跳转问题.
其他长处我再想想.   以上是“<b>若何用DNS+GeoIP+Nginx+Varnish做世界级的CDN</b>[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .