实用任播

实用任播

我读了如何使用 DNS 将访问者发送到最近的服务器?帖子,但从实际层面来说,仍有一些事情我不明白。

假设我有两台服务器。一台在纽约,另一台在巴黎。两台服务器都有不同的 IP 地址 1.1.1.1 和 1.1.1.2,这些地址是由 ISP(或托管公司)分配给它们的

我需要遵循哪些步骤,以便欧洲人输入http://blabla.com:8080将被转换为距离客户端最近的服务器的 IP 吗?

我的最终目标是通过将用户引导到最近的服务器来提高我编写的 TCP-Socket 应用程序的速度。

更新:感谢大家的回答。我想我还有很多东西要学:\ 才能真正实现这一点。

答案1

Amazon AWS 的 Route53 是一款可靠且价格合理的全球负载均衡器,它利用了任播。这是迄今为止最简单的路由。

如果您想自己设置任播 DNS,则需要获取一个 IP 地址,并让多个数据中心位置在其 BGP 中宣传此 IP 地址。通常,人们从相关机构购买 IP 地址范围,但我见过一些数据中心愿意租用人们的 IP 地址,并允许他们从其他数据中心宣传这些地址。

典型的设置是每个服务器都有自己唯一的 IP 地址和一个任播地址。例如:

伦敦有 1.1.1.1 和 3.3.3.3 纽约有 1.1.1.2 和 3.3.3.3

每个服务器上都运行一个 DNS 服务器,监听 3.3.3.3,并为该服务器发出唯一的 IP。

请记住,任播位于 IP 层,因此低于 TCP 等传输技术。因此,任何跟踪状态的传输(例如 TCP)都不适合任播。DNS(通常)是 UDP,用作将客户端分发到最近的服务器以建立 TCP 连接的一种方法。

答案2

您需要使用一种根据其位置来提供 DNS 响应的服务。要么外包给 DNS 公司,要么自己构建。我认为您真正需要的技术是全局服务器负载平衡 (GSLB),而不是 AnyCast。

大多数 DNS 公司都提供此项服务。

PowerDNS 似乎是 DIY GSLB 的一个流行解决方案:http://www.powerdns.com/auth.html

答案3

如果您只有两台服务器,一台在北美,另一台在欧洲,那么您可以决定自己运行 TCP 套接字应用程序和 DNS。

使用 DNS,您可以使用类似水平分割 DNS方法,可以通过 DNS 服务器的集成功能来实现,也可以通过防火墙将不同的 IP 地址范围重定向到服务器的不同运行实例(您可以在本地机器上运行两个不同的服务器副本,它们将监听不同的本地 IP 地址)。

只有一个 NA 和一个 EU 主机,通过回复来自 RIPE 和 AfriNIC IP 地址的 DNS 请求(带有A您在欧洲的主机记录),以及回复来自 ARIN、APNIC、LACNIC 管理的 /8 块的 IP 地址的请求(带有A您位于北美的服务器记录),您可能在 ≈90% 的情况下获得预期结果。在某些情况下,这会产生一些错误的结果(一些 /8 块在欧洲和北美之间共享,一些地址空间是任播等),但最糟糕的情况是受影响方会有一些额外的延迟,所以,这应该不是什么大问题。

(是的,应该有办法让这些事情变得更容易,但是到目前为止,似乎还没有。)

相关内容