AWS Load Balancer 502

Roo*_*oot 18 amazon-ec2 amazon-web-services microservices internal-load-balancer elastic-load-balancer

我在EC2实例上运行微服务(使用不同的编程语言).在生产时,当这些服务尝试相互交互时,我会注意到一些502 Bad Gateway Errors.此外,在所请求的服务的日志中,它没有显示任何api呼叫被击中

示例服务A调用服务B,但在服务B日志中没有任何内容表明来自服务A的呼叫.

可以是AWS负载均衡器问题吗?任何帮助,将不胜感激.提前致谢.

尝试解决方案:我们尝试在每个服务中创建http/https连接代理,但我们仍然遇到此问题.

更新:在lb日志中,会记录api,但目标响应代码显示" - ",而lb响应代码显示502或504.这是否意味着lb无法处理流量或我的应用程序?

还有什么可能的解决方案?

Jan*_*aus 18

我们遇到了同样的问题.

在我们的设置中,AWS Application ELB具有4个EC2实例的目标组.在每个EC2实例上,都有一个Apache2转发到Tomcat.

ELB的默认连接KeepAlive为60秒.Apache2的默认连接KeepAlive为5秒.如果5秒结束,Apache2将关闭其连接并重置与ELB的连接.但是,如果请求恰好在恰当的时间进入,ELB将接受它,决定将其转发到哪个主机,并在那一刻,Apache关闭连接.这将导致所述502错误代码.

解决方案是:当你有级联代理/ LB时,要么调整他们的KeepAlive超时,要么 - 最好 - 甚至让它们更长一点,你得到的更远.

我们将ELB超时设置为60秒,将Apache2超时设置为120秒.问题消失了.

  • 这很难弄清楚-感谢您的答问。一旦我增加了KeepAliveTimeout,就解决了我的问题 (3认同)
  • 我们在我们的系统中发现问题这是由于ec2实例的立即关闭,而不是等待耗尽时间我们已经将elb设置为60秒并且在120秒时使用apache (2认同)