任播与单播:在每种情况下选择哪个更好

许多人可能听说过 Anycast。 通过这种网络寻址和路由方法,可以将单个 IP 地址分配给网络上的多个服务器。 这些服务器甚至可以位于彼此远程的数据中心。 Anycast的思想是,根据请求源的位置,将数据发送到最近的(根据网络拓扑,更准确地说是BGP路由协议)服务器。 因此,可以减少网络转换(hop)的数量和延迟(latency)。

本质上,相同的路由是从世界各地的多个数据中心发布的。 这样,客户端就会根据BGP路由被发送到“最佳”和“最近”的数据中心。 为什么是选播? 为什么使用任播而不是单播?

任播与单播:在每种情况下选择哪个更好
单播确实适合具有单个 Web 服务器和中等流量的站点。 但是,如果一项服务拥有数百万订阅者,那么它通常会使用许多 Web 服务器,每个服务器都具有相同的 IP 地址。 这些服务器在地理上分布以最佳地服务请求。

在这种情况下,Anycast将提高性能(流量以最小的延迟发送给用户),确保服务可靠性(由于冗余服务器)和负载平衡——路由到多个服务器将有效地在它们之间分配负载,提高传输速度地点。

运营商为客户提供基于Anycast和DNS的各种类型的负载均衡。 客户端可以根据站点的地理位置指定将请求发送到的 IP 地址。 这使得可以更灵活地分配用户请求。

假设您需要在多个站点之间分配负载(用户),例如,每天有 100 个请求的在线商店或热门博客。 要限制用户访问特定站点的区域,您可以使用地理社区选项。 它允许您限制运营商宣布路线的区域。

任播与单播:在每种情况下选择哪个更好

任播与单播:在每种情况下选择哪个更好
任播和单播:差异

任播通常用于 DNS(域名系统)和 CDN(内容分发网络)等应用程序中,以做出可提高网络性能的路由决策。 内容交付网络使用任播,因为它们处理大量流量,而任播在这种情况下提供了许多优势(下面将详细介绍)。 在 DNS 中,任播可以显着提高服务的可靠性和容错水平。

任播与单播:在每种情况下选择哪个更好
在 Anycast IP 中,当使用 BGP 时,有多个到特定主机的路由。 它们实际上是多个数据中心中的主机的副本,用于建立较低延迟的连接。

所以,在Anycast网络中,相同的IP地址从不同的地方被通告出去,网络根据路由的“成本”来决定将用户的请求发送到哪里。 例如,BGP 通常用于确定最短数据路径。 当用户发送 Anycast 请求时,BGP 会确定网络上可用 Anycast 服务器的最佳路由。

选播的好处

减少延迟
任播系统能够减少处理用户请求时的延迟,因为它们允许您从最近的服务器接收数据。 也就是说,用户将始终连接到“最近的”(就路由协议而言)DNS 服务器。 因此,任播通过缩短客户端和服务器之间的网络距离来减少通信时间。 这不仅减少了延迟,还提供了负载平衡。

速度

由于流量被定向到最近的节点,并且客户端和节点之间的数据传输延迟减少,因此无论客户端从何处请求信息,结果都将优化传输率。

提高稳定性和容错能力

如果世界各地的多台服务器使用相同的IP,那么如果其中一台服务器出现故障或宕机,流量将被重定向到最近的服务器。 因此,任播使服务更具弹性,并提供更好的网络访问/延迟/速度。 

因此,通过让多个服务器持续可供用户使用,例如 Anycast,可以提高 DNS 的稳定性。 如果主机出现故障,用户请求将被重定向到另一个 DNS 服务器,无需任何手动干预或重新配置。 通过简单地删除有问题站点的路由,任播提供了到其他站点的几乎透明的切换。 

负载均衡

在Anycast系统中,网络流量被分发到不同的服务器上。 也就是说,它充当负载平衡器,防止任何单个服务器接收大量流量。 例如,当存在距请求源相同地理距离的多个网络节点时,可以使用负载平衡。 在这种情况下,负载分布在节点之间。

减少 DoS 攻击的影响 

Anycast 的另一个特点是抗 DDoS。 DDoS 攻击不太可能摧毁 Anycast 系统,因为它必须通过大量请求来抑制此类网络中的所有服务器。 

DDoS 攻击通常使用僵尸网络,这些僵尸网络会产生大量流量,导致受攻击服务器过载。 在这种情况下使用 Anycast 的优点是每个服务器都能够“吸收”部分攻击,从而减少特定服务器的负载。 拒绝服务攻击可能仅限于服务器,不会影响整个服务。

高水平可扩展性

任播系统非常适合高流量的服务。 如果使用任播的服务需要新服务器来处理不断增长的流量,则可以将新服务器添加到网络中来处理它。 它们可以放置在新的或现有的站点上。 

如果某个特定位置的流量大幅增加,那么添加服务器将有助于平衡该站点的负载。 在新站点添加服务器将有助于通过为某些用户创建新的快捷方式来减少延迟。 当网络上有新服务器可用时,这两种方法还有助于提高服务的稳定性。 因此,如果一台服务器过载,则可以简单地将另一台服务器部署在允许其接受过载服务器请求的某些份额的位置。 这不需要客户端进行任何配置。 

当服务器上只有几个 10 或 25 Gb/s 端口时,这是为太比特流量和大量用户提供服务的唯一方法。 具有一个 IP 地址的 100 台主机将能够处理太比特量的流量。

易于配置管理

如上所述,Anycast 的一个有趣用途是 DNS。 可以在网络节点中放置多个不同的 DNS 服务器,但使用一个 DNS 地址。 根据源所在的位置,请求将路由到最近的节点。 这在 DNS 服务器发生故障时提供了一定的流量平衡和冗余。 因此,不必根据所在位置设置不同的 DNS 服务器,而是可以将单个 DNS 服务器配置传播到所有主机。

选播网络不仅可以根据距离进行配置,还可以根据服务器可用性、已建立连接的数量等参数来路由请求。 或响应时间。

在客户端使用任播技术不需要特殊的服务器、网络或特殊组件。 但任播也有缺点。 据信,其实施是一项复杂的任务,需要额外的设备、可靠的提供商和正确的流量路由。

从纯净的源头到美丽的远方

虽然任播根据最少的跳数引导用户,但这并不一定意味着最少的延迟。 延迟是一个更复杂的指标,因为一跳可以有十多个。

任播与单播:在每种情况下选择哪个更好
示例:洲际通信可能涉及延迟非常高的单跳。

任播主要用于基于 UDP 的服务,例如 DNS。 用户请求根据BGP路由路由到“最佳”和“最近”的数据中心。

任播与单播:在每种情况下选择哪个更好
示例:任播 DNS IP 地址为 123.10.10.10 的 DNS 客户端工作站对使用同一任播 IP 地址部署的三个 DNS 名称服务器中最近的一个执行 DNS 解析。 如果 R1 或服务器 A 发生故障,DNS 客户端数据包将自动通过 R2 和 R3 转发到下一个最近的 DNS 服务器。 此外,到我们的服务器 A 的路由将从路由表中删除,从而防止进一步使用该名称服务器。

部署场景

有两种通用方案用于确定用户连接到哪个服务器:

  • 选播网络层。 将用户连接到最近的服务器。 从用户到服务器的网络路径在这里很重要。
  • 应用层选播。 该方案中计算的指标较多,包括服务器可用性、响应时间、连接数等,依赖于提供网络统计数据的外部监视器。

基于Anycast的CDN

现在让我们回到内容交付网络中任播的使用。 任播无疑是一个有趣的网络概念,并且正在获得下一代 CDN 提供商的更多认可。

CDN 是一种分布式服务器网络,以高可用性和低延迟向最终用户交付内容。 如今,内容交付网络作为众多在线多媒体服务的支柱发挥着重要作用,而消费者对缓慢下载速度的容忍度越来越低。 视频和语音应用对抖动和网络延迟特别敏感。

CDN 将所有服务器整合到一个网络中,并提供更快的内容加载。 有时可以减少用户的等待时间5-6秒。 CDN 的目标是通过从最靠近最终用户的服务器提供内容来优化交付。 这与 Anycast 非常相似,其中根据最终用户的位置选择最近的服务器。 似乎每个 CDN 提供商都会默认使用 Anycast,但实际情况并非如此。

使用 HTTP/TCP 等协议的应用程序依赖于正在建立的连接。 如果选择新的Anycast节点(例如服务器出现故障),服务可能会中断。 这就是为什么 Anycast 之前被推荐用于无连接服务(例如 UDP 和 DNS)的原因。 然而,Anycast 对于面向连接的协议来说效果很好,例如 TCP 在 Anycast 模式下工作得很好。

一些 CDN 提供商使用基于 Anycast 的路由,其他提供商更喜欢基于 DNS 的路由:根据用户的 DNS 服务器所在位置选择最近的服务器。

混合和多数据中心基础设施是 Anycast 的另一个用例。 从提供商处收到的负载平衡 IP 地址允许您在提供商数据中心内不同客户服务的 IP 地址之间分配负载。 对于任何设备寻址技术,它都可以在大流量下提供更好的性能、容错能力,并有助于优化大量用户的响应时间。

在混合多数据中心基础设施中,您可以跨服务器甚至专用服务器上的虚拟机分配流量。

因此,基础设施建设的技术解决方案有多种选择。 您还可以使用组中的任何设备跨多个数据中心设置 IP 负载平衡,以优化站点性能。

您可以根据自己的规则分配流量,定义每个数据中心中每个分布式服务器的“权重”。 当存在分布式服务器园区且服务性能各不相同时,此配置特别有用。 这将允许更频繁地分配流量以提高服务器性能。

要使用 ping 命令创建监控系统,可以配置探测器。 这使得管理员能够定义自己的控制程序,并更清楚地了解基础设施中每个组件的状态。 通过这种方式,可以定义可访问性标准。

构建混合基础设施是可能的:有时将后台办公室留在企业网络中,并将接口部分外包给提供商会很方便。

可以添加 SSL 证书以实现负载平衡、传输数据加密以及站点访问者和企业基础设施之间的通信安全。 在数据中心之间负载均衡的情况下,也可以使用SSL。

可以从您的 ISP 获得具有地址负载平衡功能的任播服务。 此功能将有助于改善用户与基于位置的应用程序交互的方式。 只需宣布数据中心有哪些服务可用,流量就会被重定向到最近的基础设施。 如果有专用服务器,例如在法国或北美,则客户端将被定向到网络上最近的服务器。

使用任播的选项之一是运营商存在点 (PoP) 的最佳选择。 让我们带 例子。 LinkedIn(在俄罗斯被屏蔽)不仅寻求提高其产品(移动和网络应用程序)的性能和速度,而且还改善网络基础设施以实现更快的内容交付。 对于这种动态内容交付,LinkedIn 大量使用 PoP(存在点)。 任播用于将用户定向到最近的 PoP。

原因是,对于 Unycast,每个 LinkedIn PoP 都有一个唯一的 IP 地址。 然后使用 DNS 根据用户的地理位置为其分配 PoP。 问题是,在使用 DNS 时,大约 30% 的美国用户被重定向到次优的 PoP。 由于分阶段引入 Anycast,次优 PoP 分配从 31% 下降到 10%。

任播与单播:在每种情况下选择哪个更好
试点测试的结果如图所示,其中 y 轴是最佳 PoP 分配的百分比。 随着 Anycast 在美国许多州的“扩大”,达到最佳 PoP 的流量百分比有所提高。

任播网络监控

理论上,任播网络很简单:为多个物理服务器分配相同的 IP 地址,BGP 使用该地址来确定路由。 但Anycast平台的实现和设计很复杂,尤其是容错Anycast网络。 更困难的是对Anycast网络进行有效监控以快速识别和隔离故障。

如果服务使用第三方 CDN 提供商来提供其内容,那么监控和验证网络性能对他们来说非常重要。 任播 CDN 监控侧重于测量端到端延迟和倒数第二跳特征,以了解哪个数据中心正在提供内容。 解析 HTTP 服务器标头是确定数据来源的另一种方法。

任播与单播:在每种情况下选择哪个更好
示例:指示 CDN 服务器位置的 HTTP 响应标头。

例如,CloudFlare 在 HTTP 响应消息中使用自己的 CF-Ray 标头,其中包括向其发出请求的数据中心的指示。 就 Zendesk 而言,西雅图地区的 CF-Ray 标头为 CF-RAY:2a21675e65fd2a3d-SEA,阿姆斯特丹地区的 CF-Ray 标头为 CF-RAY:2a216896b93a0c71-AMS。 您还可以使用 HTTP 响应中的 HTTP-X 标头来确定内容所在的位置。

其他寻址方法

还有其他寻址方法可将用户请求路由到特定网络端点:

单播

当今大多数互联网都使用这种方法。 Unicast——单播传输,IP地址仅与网络上的一个特定节点相关联。 这称为一对一匹配。 

多播

组播使用一对多的多或多对多的关系。 多播允许您将请求从发送方同时发送到不同的选定端点。 这使客户端能够同时从多个主机下载块文件(这对于音频或视频流很有用)。 组播经常与任播混淆,但主要区别在于任播将发送方定向到一个特定节点,即使有多个节点可用。

广播 Broadcast

来自单个发送方的数据报被路由到与广播地址关联的所有端点。 网络自动复制数据报,以便能够到达广播中的所有接收者(通常在同一子网上)。

地理广播

Geocast 与组播有些相似:来自发送方的请求同时发送到多个端点。 但不同之处在于,收件人是根据其地理位置来确定的。 这是一些移动对等路由协议使用的特殊形式的多播。

Geo Router 计算其服务区域并进行近似。 地理路由器,交换服务区域,构建路由表。 地理路由器系统具有层次结构。

任播与单播:在每种情况下选择哪个更好
任播与单播:在每种情况下选择哪个更好
任播与单播:在每种情况下选择哪个更好
单播、组播和广播。

Anycast 技术的使用提高了 DNS 的可靠性、弹性和安全性。 利用这项技术,运营商可以为客户提供各种类型的基于 DNS 的负载平衡服务。 在控制面板中,您可以根据地理位置指定将请求发送到的 IP 地址。 这将使客户能够更灵活地分配用户请求。

一些运营商使用每点 (POP) 路由监控:系统自动分析 POP 的最短本地和全球路由,并通过最低延迟的地理位置将其路由到零停机时间。

Anycast是目前构建对稳定性和可靠性要求较高的高负载DNS服务最稳定可靠的解决方案。

.ru 域支持 35 个 Anycast DNS 服务器,分为分布在五个 Anycast 云中的 20 个节点。 在这种情况下,使用了基于地理的基础上构建的原则,即地理广播。 在放置 DNS 节点时,计划将它们移动到地理上分散的位置,靠近最活跃的用户、俄罗斯提供商在节点位置点的最大集中度、以及可用的免费容量和易于与站点交互的位置。

如何搭建CDN?

CDN 是一个服务器网络,可加快向用户交付内容的速度。 内容分发网络 将所有服务器整合到一个网络中并提供更快的内容加载。 服务器到用户的距离对下载速度起着重要作用。

CDN 允许您使用最接近目标受众的服务器。 这减少了等待时间,有助于加快所有访问者加载网站内容的速度,这对于具有大文件或多媒体服务的网站尤其重要。 CDN 的典型应用是电子商务和娱乐。

CDN 基础设施中创建的附加服务器网络尽可能靠近用户,有助于更稳定、更快速的数据传输。 据统计,使用CDN的站点访问时延比没有CDN的站点降低了70%以上。

使用 DNS 创建 CDN? 使用您自己的 Anycast 解决方案设置 CDN 可能非常昂贵,但还有更便宜的选择。 例如,您可以使用 GeoDNS 和具有唯一 IP 地址的常规服务器。 借助 GeoDNS 服务,您可以创建支持地理定位的 CDN,其中根据访问者的真实位置而不是 DNS 解析器的位置做出决策。 您可以将 DNS 区域设置为向美国访问者显示美国服务器 IP 地址,而欧洲访问者将看到来自欧洲的 IP 地址。

使用 GeoDNS,您可以根据用户的 IP 地址返回不同的 DNS 响应。 为此,DNS 服务器被配置为根据请求中的源 IP 地址返回不同的 IP 地址。 通常,GeoIP 数据库用于确定发出请求的区域。 使用 DNS 进行地理位置定位允许您从最近的站点向用户发送内容。

GeoDNS 定义发送 DNS 请求的客户端的 IP 地址,或者提供商的递归 DNS 服务器的 IP,在处理客户端请求时使用。 国家/地区由客户的 IP 和 GeoIP 基础确定。 然后客户端获取最近的 CDN 服务器的 IP 地址。 阅读有关配置 GeoDNS 的更多信息 这里.

选播还是 GeoDNS?

虽然任播是在全球范围内提供内容的好方法,但它缺乏特异性。 这就是 GeoDNS 的用武之地。 此服务允许您创建规则,根据用户的位置将用户发送到唯一的端点。

任播与单播:在每种情况下选择哪个更好
示例:欧洲的用户被路由到不同的终端节点。

您还可以通过删除所有请求来拒绝对域的访问。 尤其是,这是一种切断入侵者的快速方法。

GeoDNS 提供比 Anycast 更准确的答案。 如果在 Anycast 的情况下,最短路由由跳数决定,那么在 GeoDNS 中,最终用户的路由取决于他们的物理位置。 这可以减少创建精细路由规则时的延迟并提高准确性。

切换到域时,浏览器会访问最近的 DNS 服务器,该服务器根据域发出 IP 地址来加载站点。 假设一个在线商店在美国和欧洲很受欢迎,但只有欧洲有它的 DNS 服务器。 那么来自美国的用户想要使用该商店的服务将被迫向最近的服务器发送请求,并且由于距离很远,因此需要很长时间才能等待响应 - 该网站不会快速加载。

当在美国放置 GeoDNS 服务器时,用户就已经联系它了。 响应会很快,这会影响网站加载速度。

在现有美国 DNS 服务器的情况下,当来自美国的用户导航到该域时,他将转向最近的服务器,该服务器将发出所需的 IP。 用户将被定向到包含该网站内容的服务器,但由于包含该内容的服务器距离较远,因此他无法快速获取该内容。

如果您还将缓存数据的CDN服务器放置在美国,那么在加载时,客户端浏览器将向最近的DNS服务器发送请求,该服务器将发回正确的IP地址。 收到IP的浏览器联系最近的CDN服务器和主服务器,CDN服务器将缓存的内容发送给浏览器。 在加载缓存内容时,加载完整站点时缺少的文件来自主服务器。 结果,站点加载时间减少,因为从主服务器发送的文件少得多。

确定特定 IP 地址的确切位置并不总是一件容易的事:有很多因素在起作用,IP 地址范围的所有者可能决定将其公布给世界的另一端(然后您必须等到数据库已更新以获得正确的位置)。 有时,VPS 提供商会将被认为位于美国的地址分配给新加坡的 VPS。

与使用任播地址不同,分配是在名称解析时完成的,而不是在连接到缓存服务器时完成的。 如果递归服务器不支持 EDNS 客户端子网,则使用该递归服务器的位置而不是连接到缓存服务器的用户。

DNS 中的客户端子网是 DNS (RFC7871) 的扩展,它定义递归 DNS 服务器如何将有关客户端的信息发送到 DNS 服务器,特别是 GeoDNS 服务器可用来更准确地确定客户端位置的网络信息。

大多数人使用其 ISP 的 DNS 服务器,或地理位置靠近他们的 DNS 服务器,但如果美国某人出于某种原因决定使用位于澳大利亚的 DNS 解析器,他们很可能会获得最接近澳大利亚的 IP 服务器地址。

如果您想使用 GeoDNS,了解这些功能很重要,因为在某些情况下它会增加缓存服务器和客户端之间的距离。

摘要:如果您想将多个 VPS 组合成一个 CDN,那么最好的部署选项是使​​用具有开箱即用的 GeoDNS + Anycast 功能的 DNS 服务器捆绑包。

任播与单播:在每种情况下选择哪个更好

来源: habr.com

添加评论