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