现在越来越多的国内互联网公司在做出海的事情,既然是互联网公司,那么海外网络规划自然是一大重点。曾经流行的段子说互联网有两个,一个是全球互联网,一个是中国互联网。无论国内国外,费心做了选择,合同签了,款也付了,服务也上架了,结果发现体验远不如预期,用户天天投诉慢慢慢,钱其实是小事,重新评估和再次迁移业务可是很麻烦麻烦的。
那么既然是网络地理知识,我们分开从两个角度说。还有一个限定,就是这里说的数据中心应该是指可以面向全球化服务的数据中心,如果是个面向本地的数据中心,估计在运营商的机房里辟块地方就够了。大可不必拿来讨论。
先说地理位置:
既然是谈数据中心,地理位置一定是个重点,那么大家都大概率的知道数据中心的选址要地理位置尽量远离地震带,温度适宜,PUE 越低越好,电费也是越便宜越好。但是因为数据中心理论上算是个数字房地产项目,所以不太可能离城市太远,不然运输和单位建造成本会很高,数据中心规模又不能太小,你都面向全球了,至少几千个机架起吧。交通方面也需要尽量便利,你运台服务器过去,国内都要两个礼拜,大家就都跪哭了。还有就是方便接入到足够多的运营商网络,尽力覆盖全国包括跨境流量,所以海边的城市会有便宜可占。最后一项,数据中心需要足够能力的人来运营,你弄个山沟沟,谁愿意去呢?
还是先说结论,一般来说,国家的首都和第二大城市,其次包括人口密集的城市比如区域的中心城市,都会是建设数据中心的首选位置。
我们假设我们是一个全球化的大型互联网公司,要建设自己的 CDN 网络,不差钱(但还没有钱到自己建设数据中心),只想提供好的网络体验给用户,那么我们会在哪里选择数据中心呢?我们总结了国内外的各种 CDN 厂商的数据中心位置情况,大体总结如下。
先看看中国内地的情况:
运营商的三大网络出口城市,北京、上海、广州,应该是首选。
几亿人的规模,估计要做省级覆盖。那么每个省的省会是首选,是否有其它城市可选择会随着本地用户数量以及网络发达程度密切相关,还有一个特殊情况。比如山东青岛、江苏无锡,广东特殊一点,至少东莞、深圳都可以入选。西部就会比较弱,一般就只剩省会了。
当然,国内有个比较现实的问题,因为 CDN 在国内早已经进入红海阶段,所以各大 CDN 公司的数据中心选址都在从大城市往二线甚至更低的城市数据中心迁移,因为带宽成本便宜,这会导致省内网络流量不均衡,但是其实从体验上讲不如放在省会城市更好的,不过价格战胜了一切。
可能有人会说中卫,中卫应该说是没有更好选择下的好选择了。也许很多公司会把灾备和数据存储放在那里,但未必是主力机房。而且中卫不是为全球准备的,是为中国准备的。包括苹果的国内数据中心也是如此。这个话题以后有机会再说。
那么看看去掉中国内地的亚太地区的选择:
香港、新加坡是亚洲核心,如果我只能选择两个,我会选择他们。
日本:东京和大阪,双轮驱动。
韩国:首尔。
印度:好是德里/新德里、孟买、金奈、班加罗尔等几个城市一起上。
台湾:首选台北市,用户足够多再来一个高雄市。
印度尼西亚:雅加达
越南:胡志明市、河内
泰国:曼谷
马来西亚:吉隆坡
菲律宾:马尼拉
以上基本按照各自国家拥有的 IP 数量排序。
澳大利亚:五大护法,悉尼、墨尔本、布里斯班、阿德莱德和珀斯。
新西兰:奥克兰。
中东部分选择比较少,首选阿联酋的迪拜和以色列的特拉维夫。
说说北美地区:
美国的选择很多,但是通常来说是分为几个区域:
西部:加利福尼亚州的洛杉矶、圣地亚哥、湾区(旧金山到圣何塞之间)和华盛顿州西雅图和俄勒冈州波特兰,内华达州拉斯维加斯。犹他州的盐湖城、科罗拉多州的丹佛。
中部:德克萨斯州的达拉斯、休斯顿、奥斯汀、圣安东尼奥,堪萨斯州和密苏里州各有一个堪萨斯城。
北部地区:伊利诺伊州的芝加哥、明尼苏达州的明尼阿波利斯、密歇根州的底特律、 印第安纳州的印第安纳波利斯 .
南部地区:乔治亚州亚特兰大,佛罗里达州的迈阿密,北卡罗来纳州的夏洛特。
东部地区:宾夕法尼亚州的费城,华盛顿特区,弗吉尼亚州的阿什本/赫恩登/雷斯顿等贴近华盛顿特区的地区,纽约州纽约市,新泽西州的皮斯卡特维、纽瓦克、锡考克斯等贴近纽约市的地区,马萨诸塞州的波士顿。
其中数据中心最密集的区域是洛杉矶、湾区、西雅图、达拉斯、芝加哥、亚特兰大、迈阿密、贴近华盛顿特区的弗吉尼亚州的阿什本/赫恩登/雷斯顿地区。
加拿大反而简单,一般来说,西部的温哥华、东部的多伦多、蒙特利尔,再加上中部的温尼伯就足够覆盖加拿大了。最多再加一个卡尔加里。
墨西哥,简单,墨西哥城。
南美地区的选择比较少,巴西是互联网最发达的国家,一般是圣保罗和里约热内卢,首选。
阿根廷:布宜诺斯艾利斯。
哥伦比亚:波哥大和麦德林。
秘鲁:利马。
智利:圣地亚哥,附近还有一个瓦尔帕莱索。
厄瓜多尔:基多。
换到欧洲:
首选:荷兰阿姆斯特丹、德国法兰克福、英国伦敦、俄罗斯莫斯科。
德国:除了法兰克福,还有汉堡、柏林、慕尼黑可选。还有科隆、杜塞尔多夫备选。
英国:除了伦敦地区,还有曼彻斯特可选。
法国:巴黎,里昂和马赛。
意大利:米兰和罗马。
俄罗斯:除了莫斯科以外,还可以选择圣彼得堡。
西班牙:马德里、巴塞罗那。
瑞典:除了首都斯德哥尔摩以外,马尔默也是一个网络集散地。因为他的对面是哥本哈根。还有哥德堡备选。
波兰:华沙。
瑞士:苏黎世。
土耳其:伊斯坦布尔。
挪威:奥斯陆。
芬兰:赫尔辛基。
比利时:布鲁塞尔。
丹麦:哥本哈根
爱尔兰:都柏林。
乌克兰:基辅、哈尔科夫。
奥地利:维也纳。
捷克:布拉格。
罗马尼亚:布加勒斯特。
葡萄牙:里斯本。
希腊:雅典。
匈牙利:布达佩斯。
保加利亚:索非亚。
立陶宛:维尔纽斯。
拉脱维亚:里加。
爱沙尼亚:塔林。
塞尔维亚:贝尔格莱德。
以上基本按照各自国家拥有的 IP 数量排序。
最后说非洲,非洲的情况和南美差不多:
首选南非的开普敦和约翰内斯堡。
埃及:开罗。
肯尼亚:蒙巴萨。
没了。
还有一些小国家没列,但是请看下一句话。
如果你对地理知识比较熟悉的话,你会发现我提到的城市名字是比较符合“一般来说,国家的首都和第二大城市,其次包括人口密集的城市比如区域的中心城市,都会是建设数据中心的首选位置。”这句话的。
另外基于国土面积,越大的越会有多个区域性中心城市存在,比如中国、美国、加拿大、印度、澳大利亚。
再说网络:
先说一个概念,Internet Exchange,简称 IX,互联网流量交换中心。
在国外,如果两个运营商之间没有互联互通,那么绕路访问几乎是必然的,甚至在欧洲是要跨国家了。为了解决本地流量本地消化的这个问题,所以诞生了很多营利的非营利的机构和公司提供流量交换服务,有第三方,也有一些运营商自己提供此项服务。一般来说,接入的 IX 越多,可选路径越多,绕路的情况就会越少。
在中国,IX 几乎是官办的,而且运营商强势,收费方式跟国外也是巨大的差别, 第三方出口这个中国特色也跟这个有很大关系 ,所以基本上大家都不了解这个事情。但是国外自己的网络只要有点规模就可以考虑接入 IX,差别很大。
IX 里规模比较大的有主要业务在荷兰阿姆斯特丹的 ams-ix.net,主要业务在德国的 de-cix.net,亚太这边有香港的 hkix.net.欢迎大家去了解一下。
所以考察一个数据中心的网络情况,首先要了解他们基本接入哪些运营商,哪些 IX,再看他可以选择接入哪些运营商和 IX.
这个情况跟国内也有区别,国内基本上方案上没得选,两线三线还是几线是定死的。但是在国外,有钱你就可以选择性接入,但是前提是人家方案好是现成即用即接的。不过这种情况下,就很难选择某运营商自己的机房了,往往是第三方中立机房。
还有一个问题,就是既然是出海业务,除了面向区域用户,从国内或者 SOC/NOC 访问各地 POP 进行运维管理的方便性考察也是必须的,无论是公网还是专线。国内互联网公司用的比较简单的方案是在洛杉矶或者圣何塞建点,专门用于维护。而且这两个地方的网络非常丰富,无论是机房还是网络接入的选择余地大,而且到任何一个洲的延迟相对比较均匀。更何况三大运营商在这里都有 POP 点,回国应该是最快最稳定的选择了。
还有一个基于业务类型的带宽储备和机房的能力支持,也是必然要考虑的问题,有些机房能做高防,有些不能,真被攻击也很麻烦,而且前面说了,有 BGP 能力做流量调度为基础才能更好的对抗攻击,国内是运营商说了算,大部分只能靠带宽和硬件硬抗,但在国外是可以自己做很多种方案的,好不好看你自己了。
因为国外的运营商数量真的很多,所以基于你的用户在运营商的分布情况,去做网络规划和运营,还要做到成本尽量低,是个必备能力,也是个考验。
当然你说你用 AWS 就够了,当我什么都没说。
注意事项:
1、国内运营商的限制,导致 ANYCAST 很难做到,都是 DNS 调度居多。而国外基本上自己搭建 BGP 能力是基础,IP 申请、公告与维护也是基础工作,这个是国内公司的网络运维人员要补课的地方。你如果不知道 RADB 是啥,建议赶紧去搜索。
2、地面上的地理位置近不等于网络位置近,实际上要看网络地理的情况才更合适。比如在非洲地区和南美地区,运营商之间的互联互通比较差,如果一个巴西圣保罗运营商的网内用户想要访问另外一个 巴西 圣保罗运营商网内的网站,很有可能会绕路到迈阿密或者纽约,再绕回来。有一个比较有名的 CDN 厂商,是这么做的,根据网络互连情况,把本地有互联的用户访问导入到本地的 CDN 节点,剩下没有互联或者不好确认的,宁可让他们回到迈阿密或者纽约的节点,这样做用户访问平均延迟反而更低。还有一个例子就是非洲旁边有几个法属的领地,马约特、留尼汪岛这些,我们看到的情况都是从法国马赛的海缆接入网络的,反而没从最近的非洲网络 接入 ,所以如何考虑网络上的区域覆盖,是个非常认真细致的事情,需要了解的知识点非常多。虽然可能和我们的关系没那么大,但是了解了认为可以忽略总比不知道实际情况想当然要好。
3、适当规划,先大区域部署,再根据实际情况慢慢推进网络规划。
你需要先知道目前的用户地理分布情况以及运营商情况,再基于这个做地理位置和网络接入的规划。
而且要明确一点,IX 接入和 TRANSIT 接入的角度不同,费用不同,接入情况也不同,你要根据运营商情况进行选择。
我看到的情况是大型运营商通常为收入考量,一般不太会主动接入 IX,有也可能是 Selective 或者 Private 的方式,你可能得单独 Transit 接入,但是中型、区域以及小型运营商,尤其是 IDC、CDN 厂商,是比较愿意主动接入 IX 的,所以你要明确知道你的网络使用情况,才好去选择网络接入的方式。
假设说你在国外,有自建 POP 点也使用 AKAMAI / CLOUDFLARE 等网络服务的话,那你就好是和他们都接入 IX,这样也就不用担心回源质量问题了,一举两得。
好在 IX 官网一般都会有成员以及接入方式列表,PEERINGDB 也应该会有更新。如果有必要,也可以单独联系确认情况。
总之记住一个高原则,无论在哪里,能做到运营商网内服务,都是最佳选择。
如果上面说的巴西的情况,跨运营商提供服务,跨国绕路都是很有可能的。
对了,想从 IP 和 ASN/BGP 角度查看用户的地理位置和运营商情况,IPIP 都可以帮助你。
4、对于一个数据中心的网站,我觉得除了详细介绍数据中心的硬件条件以外,我觉得也要明确地理位置和网络接入的情况,也是必须有的。如果能够提供 looking glass,那就好了。
目前常见的情况是数据中心会标注在 NYC 和 WDC,其实很大程度上真实位置是在附近的新泽西州和弗吉尼亚州,这个算是行业惯例了吧。个人觉得还是明确为好。
即使从强迫症角度说,我对那些没有明确写明数据中心具体地理位置的公司,没有好感。:D
5、假设你在海外的用户不是很多,但是确实有一些,那么我建议在洛杉矶设个点覆盖一下海外用户就好。
对此有兴趣延伸话题讨论的,可以留言给我,一起交流。