我正在尝试设计一个高可用性 API。我想将 API 部署到多个区域以提高可靠性,但使用单个 URL,这样客户端就不必使用多个 URL。我不关心地理路由。
我想设置部署到具有单个端点的多个区域的 APIGateway。我的要求是快速故障转移和可用性。
我能想到的两种方法是使用 Route53 将单个端点映射到具有故障转移的区域 APIGateway DNS 名称。
另一个选择是使用AWS 全球加速器带有指向 API 网关的 ALB 的任播服务。鉴于 DNS 条目可由浏览器、客户端等缓存,全球加速器/任播是否是更好的选择?
答案1
API 网关部署通常按请求付费,因此部署到多个区域不会产生任何额外费用。如果您的后端是 lambda,那么也是按使用付费,但如果后端是 EC2 或类似产品,那么拥有多个区域的成本可能会更高。
我最初的设计不会包括多区域,除非您已经在单个区域经历了多次故障,或者您需要极高的可靠性 - 四个或五个九。人为错误比 AWS 中断更容易破坏您的系统。
API 网关是冗余且可靠的,虽然 AWS 确实会失败,但这种情况并不常见,而且当它失败时,许多网站都会瘫痪,您也不必担心。不过,如果您的 SLA 很严格,那么这种情况就不理想了。
如果我确实需要高可用性/多个区域,我会将网关和工作负载部署到多个区域,然后首先考虑使用Route53 为这些 API 提供单一 URL。使用 R53,您可以使用任何您喜欢的路由,包括地理位置、延迟或故障转移。如果后端价格昂贵,您可以考虑使用故障转移路由的冷部署模型或试点部署模型,如果性能或可用性更重要,您可以部署到每个区域并使用基于地理位置/延迟的路由。