如何在1小时内,只花25美元就自行构建起横跨3大洲的CDN
作者简介:Chris Ueland是MaxCDN的首席执行官。
趁周末闲来无事,我们决定自己搞个有意思的项目:使用Go GeoDNS、DigitalOcean、Docker和Nginx,自行搭建一个内容分发网络(CDN)。
第一步:向DigitalOcean订购一个DNS实例。
我们选择了SFO和第二小实例。
我们设置好了DNS信息以指南这里(NS1和NS2都指南这里,以便安装设置)。这些是A记录 。
ns1.deploy.io 192.241.224.116
ns2.deploy.io 192.241.224.116
第二步:安装Docker,并运行Docker,实例上有“coocood/geodns”映像。
想了解详细情况,请参阅。
第三步:向DigitalOcean订购面向Nginux的CDN“边缘”实例。
我们使用了最小的实例。针对这个例子,我们使用它们安装了DNS:
test-sfo-do.deploy.io 107.170.251.75 San Francisco $5/mo
test-jfk-do.deploy.io 107.170.45.174 New York $5/mo
test-sin-do.deploy.io 128.199.216.96 Singapore $5/mo
test-ams-do.deploy.io 188.226.185.173 Amsterdam $5/mo
这里是DigitalOcean的界面模样,所有机器已启动起来:
使用DigitalOcean的CDN边缘服务器
第四步:为CDN设置测试域:
如果你查询deployiotest.com,4台Web服务器被随机选择。
如果你查询,它会进入到位置最近的地域服务器。
设置名称服务器,以便指向我们之前设置的:
ns1.deploy.io 192.241.224.116
ns2.deploy.io 192.241.224.116
使用whatsmydns.net(Daniel提供的一款出色工具),你就能查看我们为测试域“www.deployiotest.com”返回具有地域功能的结果。
使用whatsmydns.net的CDN地域DNS测试
我的DNS是什么
whatsmydns.net是一项在线服务,让你可以立即执行DNS查询,对照全球各地一批选择的随机性名称服务器,检查主机名称、当前IP地址及其他DNS信息。
{
"serial":1394372421,
"ttl": 390,
"targeting": "country continent @ regiongroup region ip asn",
"data":{
"":{
"ns": ["ns1.deploy.io", "ns2.deploy.io" ],
"random":[
[
"107.170.45.174",
"1000"
],
[
"128.199.216.96",
"1000"
],
[
"107.170.251.75",
"1000"
],
[
"188.226.185.173",
"1000"
]
]
},
"www":{
"alias": ""
},
"www.us-west":{
"cname": "test-sfo-do.deploy.io."
},
"www.europe":{
"cname": "test-ams-do.deploy.io."
},
"www.asia":{
"cname": "test-sin-do.deploy.io."
},
"www.us-east":{
"cname": "test-jfk-do.deploy.io."
}
}
}
第五步:使用JustPing.com,核实你的CDN在正常运行。
只要在上对它测试一下。
任务事项
注意:来自akerl_ on HN的注释指出“本文并没有指出为记录运行单一DNS服务器的重大风险。”提到这一点很有必要。想清楚了再部署到生产环境――这仅仅是个例子而已。
在GeoDNS服务器上使用一个小小的守护进程,增添不要不对服务器进行轮换的方法。
为美国/欧洲和亚洲之外的地区调整Geo图。
添加来自其他提供商的更多虚拟服务器。
使用lib-cloud,添加启动服务器的方式。
感谢Ewan Chow为本文作出的贡献。Ewan是派驻中国的Go开发人员。他喜欢捣鼓高效的低层代码。他在GitHub上的简介在此(https://github.com/coocood/)。
结束语
你是否喜欢使用这种CDN?欢迎留言交流!
新闻来源:www.scalescale.com|云头条编译(未经授权谢绝转载)