![任播对我的情况有帮助吗?如何实现它?](https://linux22.com/image/582404/%E4%BB%BB%E6%92%AD%E5%AF%B9%E6%88%91%E7%9A%84%E6%83%85%E5%86%B5%E6%9C%89%E5%B8%AE%E5%8A%A9%E5%90%97%EF%BC%9F%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%AE%83%EF%BC%9F.png)
我有几个具有不同 IP 的服务器,部署在不同的数据中心(大部分地理位置靠近我们的用户)。我们假设这些是简单的 Web 服务器。
我希望服务器有一个单独的 IP 地址,以便所有用户都可以简单地使用它,并且它会将客户端路由到最近的服务器。
我认为使用任播地址可能会有所帮助。我不明白的是
据我所知,任播仅用于 DNS 服务器。我认为这是由于 DNS 协议的本质非常简单(无状态)。任播是否适用于 Web 服务器?路由到一台服务器的会话是否会保持与该唯一服务器的连接(因此,所有保持活动请求都会路由到同一台服务器),或者每个请求都可能发送到不同的服务器?
我如何在实践中实现任播?我知道我需要一个自治系统(好吧,我有一个),然后我需要一些服务器状态感知的 BGP 播报器(因此它只会在服务器能够应答时宣布我的任播地址)——但我不知道该用什么。
有人有部署任播的经验吗?这个想法很简单,但我发现关于其实际实施的信息太少了。
先感谢您!
答案1
您需要有 ASN。您实际上无法宣布小于 /25 的网络。无法保证任何会话都会经过相同的路由,但大多数会话可能会使用相同的路径。
然而,这与应用程序会话无关,因为路由器不了解会话 - 它们只是转发数据包,而不管状态/类型/标志如何。任播适用于所有类型的服务。
用户最终将登录到拥有 IP 的服务器(或负载均衡器),这与最终登录到哪个服务器无关。如果客户端 1.1.1.1 与服务器 2.2.2.2 通信,则无论客户端在互联网或内联网上如何路由,它始终都会与 2.2.2.2 通信。
路由器不是“服务器状态感知”的,它公布的是网络,而不是单独的 IP。它不会知道或关心服务器是否能够响应,我认为你把它与负载平衡器混淆了(如 IPVS、HAproxy)。
如果您没有混淆,那么您需要多个中转提供商来宣布您的网络(或部分网络,至少为 /25)。如果您是同地部署,您可以简单地要求您的提供商宣布您的网络。我认为宣布客户 ASN 的功能是通过 AS-SET 信息,但我对此有点不确定。