首页 文章

如果从同一实例转发,则Amazon Web Services负载均衡器转发到侦听器不起作用

提问于
浏览
0

我在Amazon Web Services中设置了以下情况:AWS setup .

来自Internet的请求通过端口443进入负载均衡器,并且监听器确保此流量转发到端口8080上的实例(到应用程序A) . 负载均衡器上的另一个侦听器将流量从端口8041转发到实例上的端口8050(到应用程序B) . 应用程序A可以在端口8041上对负载均衡器执行REST调用,这最终将在应用程序B中执行 .

入站规则在图上设置 sg-1 安全组:

  • 443 / tcp from 0.0.0.0/0(从互联网连接)
    来自sg-2的
  • 8041 / tcp(来自应用程序A的连接)

入站规则在图上设置 sg-2 安全组:

  • 22 / tcp from 0.0.0.0/0(SSH)
    来自sg-1的
  • 8050 / tcp(连接到应用程序B)
    来自sg-1的
  • 8080 / tcp(连接到应用程序A)

遗憾的是,应用程序A无法通过端口8041上的负载均衡器到达应用程序B.但是,一旦我允许来自所有源(而不是特定安全组)的上述端口上的入站连接,突然应用程序可以对应用程序B进行REST调用8041号港口

我怀疑它可能与sg-1中的实例有关,最后通过负载均衡器再次进入sg-1 . 应用程序B由负载 balancer 器报告为“ Health ”,因此连接到端口8041上的负载 balancer 器或转发到实例的端口8050似乎有些问题 .

我试图通过其内部DNS名称直接调用应用程序B,而不是通过应用程序A中的负载均衡器调用应用程序B.这样可行 .

我没有想法 . 我的配置似乎很好,但仍然无法通过调用 . 任何帮助将不胜感激 .

1 回答

  • 2

    如果将安全组指定为规则的源,则允许与源安全组关联的实例访问安全组中的实例 . (...)允许基于与源安全组关联的实例的私有IP地址(而不是公共IP或弹性IP地址)的传入流量 .

    当您的应用程序A连接到(外部)Load Balancer时,它将连接到LB公共IP,app a公共IP作为源地址,因此sg-1 ID不能用于sg-2规则 . 我在这里看到2个选项:

    • 创建另一个,Internal Load Balancer,并使用它从应用程序A访问应用程序B(LB名称将解析为私有IP,安全组ID可用于规则)

    • 不使用sg-2规则中的appA安全组ID,而是使用appA公共IP地址(如果您希望appA公共IP地址有任何更改,这可能不是最佳的)

相关问题