直到几秒钟前,当我读到“ 什么是一些很酷或有用的服务器/网络技巧? ” 时,我才从未听说过任何广播。
维基百科上的“ Anycast ”文章非常正式,并没有真正引起人们对其使用方式的心理印象。
有人可以用一些非正式的句子解释什么是“任意播送”,如何配置(从一般意义上来说),以及它的好处是什么(使它更容易实现)?
直到几秒钟前,当我读到“ 什么是一些很酷或有用的服务器/网络技巧? ” 时,我才从未听说过任何广播。
维基百科上的“ Anycast ”文章非常正式,并没有真正引起人们对其使用方式的心理印象。
有人可以用一些非正式的句子解释什么是“任意播送”,如何配置(从一般意义上来说),以及它的好处是什么(使它更容易实现)?
Answers:
任播是一种网络技术,其中从多个位置通告相同的IP前缀。然后,网络根据路由协议成本以及可能的广告服务器的“运行状况”,决定将用户请求路由至哪个位置。
任播有几个好处。首先,在稳定状态下,任播服务(DNS是一个很好的例子)的用户将始终连接到“最近的”(从路由协议角度而言)DNS服务器。这样可以减少延迟,并提供一定级别的负载平衡(假设您的使用者在您的网络中均匀分布)。
另一个优点是易于配置管理。您不必在服务器/工作站的部署位置(亚洲,美洲,欧洲)配置不同的DNS服务器,而是在每个位置都配置一个IP地址。
根据任播的实现方式,它还可以提供一定程度的高可用性。如果任播路由的广告以某种健康检查为条件(例如,在此示例中,例如,对一个众所周知的域的DNS查询),则只要服务器发生故障,就可以删除其路由。一旦网络重新融合,用户请求将被无缝转发到下一个最接近的DNS实例,而无需任何手动干预或重新配置。
最后一个优势是水平缩放;如果您发现一台服务器负载过大,只需将另一台服务器部署在可以容纳过载服务器请求的一部分的位置即可。同样,由于不需要客户端配置,因此可以很快完成。
在理解“任播”时经常使我困惑的一件事是,尽管它是一个高级术语,但在实际实现中,通常可以归结为两个示例:
使用BGP的路由器通过多个AS路径通告相同的IP块,这是将用户定向到“较近”站点的一种粗略方法。同时,它仅通过从有问题的站点撤回路由就可以向其他站点提供几乎透明的故障转移。尽管显然它引起了许多后端数据同步问题,但它几乎对任何协议都有用。
从您自己的网络中的多个点播发相同的服务IP(通过静态路由,OSPF,EIGRP或其他方式)。如果路由的权重不同,它将充当故障转移机制。如果对路由进行平均加权,则可以利用大多数名牌供应商路由器的按分组或按流负载均衡功能。您必须小心应用层协议对此感到满意,这就是为什么您几乎总是听说它与DNS一起使用的原因请求始终是一个数据包,而所有内容都是无状态的。就个人而言,我认为这是将DNS和适当的负载平衡器结合使用几乎总是一个更好的解决方案时,应用程序层对网络层的入侵。
主要用于基于UDP的服务,例如DNS。基本上,您宣布从全球多个数据中心发出的相同路由。这样,您的客户端将基于BGP路由发送到“最佳”和“最近”的数据中心。我将“最佳”和“最接近”用引号引起来,因为网络提供商可以玩游戏并以不同的方式路由来自某些网络的流量。通常,通过任播可以达到最佳效果,但这不是保证。
例如,将您的DNS服务器列为1.2.3.4和1.2.3.5。您的路由器会宣布多个数据中心中1.2.3 / 24的路由。如果您在日本并且在那里有数据中心,那么您很可能最终会在那里。如果您在美国,则会将您发送到美国数据中心。同样,它基于BGP路由而不是实际的地理路由,但这通常是问题所在。
根据我的原始回复,我在博客上发布了另外两篇文章,标题为:Anycast DNS-第3部分,使用RIP和Anycast DNS-第3部分,使用RIP(续)。后者有更多详细信息,但在www.netlinxinc.com/netlinx-blog.html上,您将找到有关如何使用RIP为Anycast DNS配置Cisco路由器和基于开源Quagga主机的路由软件的实际方法。
我目前正在撰写该系列的第四篇文章。这将提供有关如何使用OSPF部署Anycast DNS的方法。在本系列的最后一部分中,我将展示使用BGP部署Anycast DNS的方法。
DNS的一个真正有趣的用途是Anycast。您可以在不同的物理和网络位置中放置5个不同的DNS服务器,但共享一个(或有时同时为主和辅助DNS)地址。根据源位置,它们会被路由到最近的节点。这样可以实现一些流量平衡,并且在DNS服务器死机时提供冗余。
据我的一位同事称,它还可以用作缓解DoS攻击的技术,因为人们只能攻击“最近的”任播IP地址,因此,如果在美国有很多僵尸网络,那么您的欧元站点就是大多数情况下不受影响,因为它们实际上无法向其发送数据包。
如果它们很明显地来自不太可能在BGP中作为正确路由在BGP中宣告的某个地方(例如,当ASN指示为N American时进入欧洲的数据包),也可以使用它作为一种(天真地)过滤欺骗数据包的方法。块)。
还需要注意的是,对于某些无法在重置或长时间对话后存活的TCP连接,Anycast的质量或可靠性都不高。
使用BGP的任播IP告诉Internet,有2条,3条或3条以上的路径指向特定的HOST,但是实际上它们不是同一台主机,它们是跨多个数据中心发布的主机的精确副本,以实现较低的延迟连接。
例如,我有3台服务器执行198.251.86.133的301非www重定向,如果您对此主机执行ping操作,您有时可能会收到DUPLICATE响应,甚至可能会掉线,具体取决于您所在的位置,因为我的服务器是美国东部,美国-West和EUR。对于短时间的连接(例如浏览器缓存的301),这可以通过最近的数据中心中的本地服务器做出快速响应。
从冗余的角度来看,任何广播都没有内置的冗余,您仍然需要每个站点独立的冗余,因为IP(在典型情况下)始终指向这些数据中心。