如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN

如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN,第1张

CDN,意思是Content Distrubtion Network,意思是内容分发网络,简单的说,就是全地域范围内的负载均衡,全地域的概念可以是全国,也可以是全世界。由统一的DNS服务器进行地址转发,选择离用户最近的地区服务器进行负载均衡。本质上是从一个机房内的负载均衡扩展到了全世界范围内的负载均衡。同时可以将本地化的内容,由当地的服务器实现。做浏览器的地区自动选择。
比如在中国,被人为划分成两大区域,北方是网通,南方是电信。这两个网络之间互访是比较慢的。作为大型网站,一种解决办法是将全部服务器架设在双线或三线ISP处,由ISP来提供路由上的选择。这样做,线路的成本会比较高。另一种办法就是将服务器架设在两边,南方一台,北方一台,然后由服务器自己选择,如果IP在电信,就转发请求到南方的服务器,如果是网通就转发到北方的服务器。
再扩大范围,可以将美国来的请求交由美国服务器处理,这样也缩短了用户在路由上的等待时间。这就是内容分发网络。
而作为这个网络上的所有节点,都可以当成虚拟服务器来看待。至于在各地的服务器如何做负载均衡,可以由各节点之间完成。
准备工作如下:你需要下载如下软件以实现上述功能
Nginx,BIND,GeoIP,Varnish
接下来是编译和安装bind9和geoip
# tar -xzvf bind-924targz
# tar -xzvf GeoIP-146targz
# cd GeoIP-146
# /configure –prefix=/usr/local/geoip
# make
# make install
# cd
# patch -p0 < bind-924-geodns-patch/patchdiff //给bind9打补丁,让bind9直接支持geoip库
# cd bind-924
# CFLAGS=”-I/usr/local/geoip/include” LDFLAGS=”-L/usr/local/geoip/lib -lGeoIP” /configure –prefix=/usr/local/bind
# make
# make install
装好bind后我们来制作namedconf
view “us” {
// 匹配北美的客户端 US & Canada
match-clients { country_US; country_CA; };
// Provide recursive service to internal clients only
recursion no;
zone “cdnxiangleicom” {
type master;
file “pri/xianglei-usdb”;
};
zone “” IN {
type hint;
file “namedca”;
};
};
view “latin” {
// 匹配到南美国家
match-clients { country_AR; country_CL; country_BR; };
recursion no;
zone “cdnxiangleicom” {
type master;
file “pri/xianglei-latindb”;
};
zone “” IN {
type hint;
file “namedca”;
};
};
照此办理,你也可以匹配到欧洲,非洲等等,然后来开始制作nginx和varnish
注意,以上内容是你要在主节点服务器上做的,主节点服务器只负责对DNS请求进行转发。
约定一下,我们将Bind服务器叫做动态节点服务器,Nginx+Varnish叫做边界服务器。
以下内容是副节点服务器需要做的,也就是实际在某个地区放置的服务器
# /configure –prefix=/usr/local/nginx –with->DNS是英文Domain Name System的缩写,中文意思是“域名系统”,是Internet网络世界中用于将域名和IP地址相互映射的一种机制。
在互联网中,每个网站都被分配了一个IP地址。例如,>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10791643.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存