负载均衡器和调用外部 Web 服务

负载均衡器和调用外部 Web 服务

我尝试寻找该问题的答案,但我不确定是否有特定的术语,而且到目前为止我找不到任何信息。

如果我有一个使用某些 Web 服务的流行应用程序,我显然会使用负载平衡器来将负载分配到我的服务中。理论上,最终用户只需访问主机名,然后将其解析为负载平衡器,负载平衡器随后将这些请求转发到 Web 服务实例。如果我的 Web 服务还调用了另一个外部/第三方 Web 服务,那么这个第三方是否会看到来自相关 Web 服务器的单个 IP?

例如,如果第三方 Web 服务要求我提供 3 个 IP 地址,并且只有这 3 个 IP 地址可以访问他们的服务,那么考虑到我的负载均衡器后面可能有 6 个实例,并且其中任何一个实例都可能需要发出请求,那么这将如何工作?由于请求是从单个 Web 服务器发出的,我猜它不会“超出”负载均衡器。虽然这是一个相当笼统的问题,但一个关于如何在 AWS 基础设施上设置的示例将很有用

谢谢

答案1

您可以通过将应用服务器放在 VPC 中的私有子网中来实现所需的目的,该子网将 0.0.0.0/0 路由到公共子网中的 NAT 实例。对第三方服务的所有请求都将从 NAT 的外部 IP 出现(分配一个弹性 IP 以保持一致)。

NAT 将成为这些请求的瓶颈,因此您需要确保它具有足够的扩展性。如果您有 3 个可以列入白名单的 IP,则可以将应用服务器和 NAT 设备放在 3 个可用区中,每个可用区都有一个单独的 NAT 实例。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html

答案2

该请求将通常不通过负载均衡器访问第三方 API。
但这仍然是可能的。

这就是这里可以回答的全部问题,真正发生的情况取决于您如何设计网络。
有可能每个 Web 服务器都直接请求它。
有可能传出的请求被 NAT 处理,并且看起来都来自一个 IP。
有可能您设置了代理,并且所有请求都通过它。
可能还有更多我现在想不到的可能性……

相关内容