是否可以将 AWS 负载均衡器配置为通过将微服务流量保持在可用区内来最大程度地减少延迟?



我正在设计一个应用程序,以托管在单个 AWS 区域中的 3 个可用区 (AZ) 上。该应用程序由多个微服务组成。

当应用程序提供来自互联网的 Web 请求时,我希望初始请求在所有可用区之间进行负载平衡。但是,当 Web 服务器进行进一步的微服务调用时,我希望负载均衡器首选与初始请求相同的可用区,以避免跨可用区产生的延迟。我还希望负载均衡器能够识别运行状况不佳的实例,并在需要时跨可用区路由。

在 AWS 中是否可以进行这样的配置?

谢谢 亚当

  1. 不支持显式配置可用区内(换句话说,在同一可用区内)路由。

AS @Michael-sqlbot评论道:

默认情况下,经典 ELB 处于可用区内模式 - 但仅在 背面。在前端(DNS 级别),无法控制哪个平衡器 节点获取请求。调用微服务的 Web 服务器将命中 随机可用区中的经典均衡节点,然后发送 如果禁用跨可用区,则向同一可用区中的后端请求。

2."运行状况不佳的实例和跨可用区路由(如果需要)"是 ELB 默认的工作方式。

以下是有关 ELB 工作原理的 AWS 教程。

他们引用这种行为的原因之一很有趣:

对于客户端缓存 DNS 查找、传入请求的环境 可能偏爱其中一个可用区。使用跨区域负载 平衡,请求负载的这种不平衡分布在所有 区域中的可用实例,减少行为异常的影响 客户。

我需要更多地了解您的服务。

您的服务是有状态的还是无状态的?

如果它们是有状态服务,则最好在负载均衡器上启用粘性,以便将来的请求可以路由回同一服务器。

如果它们是无状态服务,则不应为请求的路由位置而烦恼,因为它违反了无状态的设计原则。

您能否提供有关为什么要将请求路由到同一可用性区域的更多信息?

最新更新