繁体   English   中英

Amazon Elastic Load Balancer未关闭与服务器的连接

[英]Amazon Elastic Load Balancer is not closing the connection to the server

我有一个EC2实例, Apache作为反向代理, ffserver作为流服务器。 EC2实例前面有一个ELB (经典)作为SSL终结点。

Apache配置相当简单:

<Location "/mp3/">
    ProxyPass http://127.0.0.1:8081/ DisableReuse=On KeepAlive=Off
    ProxyPassReverse http://127.0.0.1:8081/
    SetEnv force-proxy-request-1.0.1
    SetEnv proxy-nokeepalive 1
</Location>

ffserver用于通过Internet传输实时音频。 ffserver的设置中有一个MaxBandwidth选项(默认为1000 )。 当连接未正确关闭时,此设置将成为问题。 ffserver开始响应503 server too busy而不是流的内容。

如果我直接连接到服务器(路上没有ELB )一切正常。 如果我通过ELB连接,当我在客户端关闭它时,连接将不会关闭(例如关闭浏览器的选项卡)。

我使用以下命令检查当前连接:

watch -n 2 'netstat -napt | grep 8081'

所有连接永远保持在ESTABLISHED状态(至少30分钟)。 ELB的默认空闲超时为60.这意味着有人正在从ffserver接收流(连接处于活动状态)。

编辑 :看起来将Classic Load Balancer更改为Application Load Balancer解决了这个问题。 我不知道如何解释这种行为。 期待AWS社区的答案 - AWS论坛

当OP与他的编辑共享时,可以通过更改负载均衡器类型来解决未​​关闭的连接问题。 这个答案集中在为什么这种变化有这样的影响?


Classic Load Balancer( ELB )中似乎存在问题。 我发现以下帖子的问题非常相似;

似乎问题源于ELB无法检测到客户端从连接中丢失。 特别是当后端以周期性方式提供某种数据时,例如现场音频流,心跳等。

似乎没有办法禁用负载平衡器的keep-alive设置 ,但不知何故,只有ELB才会出现这种麻烦。

我找不到在ELBALB之间创建这种行为差异的确切功能。 我认为原因要么是因为;

  • 改进ALB健康检查 ,和/或
  • 我们用户看不到的内部结构差异,以某种方式阻止此问题在ALB发生

我认为,由于所述改进而使用了应用程序负载均衡器( ALB )并且它更加灵活,因此问题得以解决。

点击此处查看有关ELBALBNLB之间差异的更多信息


PS。 AWS支持论坛非常糟糕,所有良好的支持和提示均已支付,并存储在他们与其高级客户之间的PM中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM