【问题标题】:Any way to configure AWS security group to allow private instances to access a public-facing Load Balancer?有什么方法可以配置 AWS 安全组以允许私有实例访问面向公众的负载均衡器?
【发布时间】:2015-08-27 10:30:52
【问题描述】:

我有一个包含两个不同站点的 Web 应用程序。每个都可以通过 HTTP 访问。当您访问站点 #1 时,它将直接为该站点提供服务。当您访问站点 #2 时,它实际上会通过 REST API 调用在后台连接到站点 #1。该架构如下图所示。

显示的所有实例(蓝色)只有私有 IP 地址。两个负载均衡器都面向 Internet,因为来自 VPC 外部的人员需要访问应用程序。每个自动缩放组都有一个关联的安全组,该安全组应用于其每个实例。

如果这些实例没有公共 IP 地址,我如何配置 LoadBalancer #1 以接受来自 Auto-Scale Group #2 的 HTTP 调用?我需要一个面向私有的负载均衡器和一个面向互联网的负载均衡器吗?

我希望在我的 Cloudformation 文件中自动完成所有这些配置。

【问题讨论】:

  • “鉴于这些实例没有私有 IP 地址,我如何配置 LoadBalancer #1 以接受来自 Auto-Scale Group #2 的 HTTP 调用?”...您的意思是“不要有公共 IP 地址吗?
  • ASG #2 中的实例当前是否无法访问负载均衡器 #1?您是否配置了 NAT 以允许实例访问 Internet?
  • 1) 是的,他们不能。 2) 不,我没有配置 NAT。 3) 我可以在不使用 NAT 的情况下执行此操作,而是让另一个仅限内部的 LB 也指向 ASG #1 的实例吗?

标签: amazon-web-services load-balancing


【解决方案1】:

AWS Elastic Load Balancing 服务为负载均衡器提供 DNS 名称。访问负载均衡器时应使用此名称。

DNS 名称解析为多个公共 IP 地址之一。因此,Auto Scaling Group #2 中的实例需要访问 Internet

如果所有实例都在公共子网中,那么它们应该能够访问 Internet,因此,负载均衡器 #1。

如果实例位于私有子网中,它们将需要一些访问 Internet 的方法。这通常通过在公共子网中启动 NAT 实例并在私有子网上配置路由表以将 Internet 流量路由到 NAT 服务器来完成。

流量实际上不会穿越互联网。相反,它们将通过弹出 VPC 然后再返回来穿越 AWS 的互联网边缘

负载均衡器 #1 无需配置,因为它已经在接受传入流量。

【讨论】:

  • 请记住,从 ec2 到 ec2 的流量(包括 ELB)当然不是免费的,只要您使用公共 IP 或弹性 IP……因此使用外部负载均衡器处理内部流量会产生额外的0.01 美元到 0.02 美元/gb 的数据传输费用,因为流量正在穿越边缘。
  • 好的。除了为 AutoScale Group #2 中的实例设置 NAT,我是否可以创建另一个也指向 AutoScale Group #1 的面向内部的负载均衡器,并让 AutoScale Group #2 中的实例与该实例通信?跨度>
  • 哦,这是一个有趣的概念!是的,您可以将 Auto Scaling 配置为使用多个负载均衡器。这样,流量将在您的 VPC 内部路由。请注意,您需要为额外的负载均衡器付费(~2.5c/hr + 流量)。 docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/…
  • @JohnRotenstein 如果负载均衡器 #1 接受来自某些白名单 IP 的流量怎么办?应指定哪些 IP 以允许从 Auto Scale Group #2 的实例访问 Load Balancer #1
  • @NiravRadia 这是一个老问题。如果您想要答案,请创建一个新问题。
猜你喜欢
  • 2017-07-01
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 2018-04-19
  • 2014-03-09
  • 2018-08-20
  • 1970-01-01
  • 2022-01-26
相关资源
最近更新 更多