我在Amazon Web Services中设置了以下情况:AWS setup。
来自Internet的请求通过端口443进入负载均衡器,监听器确保将此流量转发到端口8080上的实例(到应用程序A)。
负载均衡器上的另一个侦听器将流量从端口8041转发到实例上的端口8050(到应用程序B)。
应用程序A可以在端口8041上执行对负载均衡器的REST调用,该调用将结束于应用程序B。
入站规则在关系图上设置SG-1安全组:
443/TCP从0.0.0.0/0(从Internet连接)
来自SG-2的8041/TCP(来自应用程序A的连接)
入站规则在关系图上设置SG-2安全组:
22/TCP从0.0.0.0/0(ssh)
来自SG-1的8050/TCP(连接到应用程序B)
来自SG-1的8080/TCP(连接到应用程序A)
不幸的是,应用程序A无法通过端口8041上的负载平衡器到达应用程序B。
但是,一旦我允许来自所有源(而不是特定安全组)的端口上的入站连接,应用程序就可以突然调用端口8041上的应用程序B。
我怀疑这可能与sg-1中的实例通过负载均衡器再次出现在sg-1中有关。
应用程序B被负载平衡器报告为“正常”,因此连接到端口8041上的负载平衡器或转发到实例的端口8050似乎有问题。
我试图直接通过应用程序B的内部DNS名称调用它,而不是通过应用程序A中的负载平衡器调用应用程序B。这是可行的。
我没主意了。我的配置看起来不错,但还是打不通。任何帮助都将不胜感激。
最佳答案
当您指定安全组作为规则的源时,
允许与源安全组关联的实例访问
安全组中的实例。(…)允许传入流量
基于关联实例的私有IP地址
使用源安全组(而不是公共IP或弹性IP
地址)。
当应用程序A连接到(外部)负载平衡器时,它将连接到LB公共IP,以应用程序A公共IP作为源地址,因此SG-1 ID不能在SG-2规则中使用。我在这里看到两个选项:
创建另一个Internal Load Balancer,并使用它从应用程序A访问应用程序B(lb name将解析为私有IP,安全组ID可以在规则中使用)
不要在sg-2规则中使用appa security group id,而是使用appa public ip address(如果您希望在appa public ip address中进行任何更改,这可能不是最佳选择)
关于amazon-web-services - 如果从同一实例转发,则Amazon Web Services负载均衡器转发到监听器不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45331059/