我在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 回答
当您的应用程序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地址有任何更改,这可能不是最佳的)