Amazon ec2 504网关超时-两个带负载平衡器的EC2实例
这可能是不可能的问题。我什么都试过了。我感觉好像有个人在某个地方的总机旁扭着胡子 问题: 我让AmazonEC2运行一个应用程序。当只有一个实例而没有负载平衡器时,它可以正常工作 但在我的生产环境中,我有两个相同的实例运行在一个负载平衡器后面,当执行某些任务时,例如生成PDF并将其附加到电子邮件的功能时,根本不会发生任何事情,当使用Google Developer工具和网络选项卡时,一旦超时到达,我就会收到错误“504网关超时”(我把它设置为30秒) 我的数据库是外部的,在Amazon RDS上 我认为……如果我可以强制客户机保持与他们登录的初始服务器的连接,这个问题就会得到解决,因为据我所知,当实例1试图联系实例2执行任务时,504网关超时正在发生 只有在使用负载平衡时才会发生这种情况,但在直接连接到我的两台服务器中的一台时不会发生这种情况 负载平衡器设置:Amazon ec2 504网关超时-两个带负载平衡器的EC2实例,amazon-ec2,load-balancing,http-status-code-504,Amazon Ec2,Load Balancing,Http Status Code 504,这可能是不可能的问题。我什么都试过了。我感觉好像有个人在某个地方的总机旁扭着胡子 问题: 我让AmazonEC2运行一个应用程序。当只有一个实例而没有负载平衡器时,它可以正常工作 但在我的生产环境中,我有两个相同的实例运行在一个负载平衡器后面,当执行某些任务时,例如生成PDF并将其附加到电子邮件的功能时,根本不会发生任何事情,当使用Google Developer工具和网络选项卡时,一旦超时到达,我就会收到错误“504网关超时”(我把它设置为30秒) 我的数据库是外部的,在Amazon RDS上
- 负载平衡器在我的注册器上有一个CRECORD,以便app.myapplication.com指向myloadbalancerdnsame.elb.amazonaws.com
- 负载平衡器有2个正常的实例,每个实例位于同一区域,但它们位于不同的可用性区域
- 负载平衡器使用与实例相同的安全组(允许端口22、80和443上的所有IP)
- 负载平衡器已启用跨区域负载平衡
- CORS(在AmazonS3中)能够从*到*获取、发布、放置、删除(我不知道这与我的实例有什么关联,但无论如何我按照说明做了)
- 负载平衡器的侦听器配置如下:
- 负载平衡器协议:HTTP负载平衡器端口:80实例协议:HTTP实例端口:80
- 负载平衡器协议:HTTPS负载平衡器端口:443实例协议:HTTP实例端口:80(根据我的证书提供程序正确选择密码,SSL字段100%肯定正确)
我不知道该问哪一个问题,因为我已经跟踪了所有的文档,仔细检查了网络上所有的建议,什么都没有。首先,您的ELB的空闲超时设置为多少?您可以在“说明”的最底部找到它您的负载均衡器选项卡。您可以阅读更多关于空闲超时的信息。默认值是60秒。您还应该考虑在Web服务器中设置或增加保持活力。这将取决于您使用的Web服务器。
其次,如果您认为这是由于客户端从一个实例切换到另一个实例,则应在ELB中启用。这将确保负载平衡器始终将客户端定向到同一后端实例。要启用此功能,请再次转到“说明”选项卡,然后单击端口配置部分中每个条目旁边的编辑链接。您可能需要选择“启用负载平衡器生成的Cookie粘性”选项,因为这将告诉ELB管理粘性的所有方面。您使用的是什么web服务器?我在nginx和AWS负载平衡方面遇到了非常类似的问题。我添加了
keepalive\u timeout 75s;
到我的nginx配置文件中的http块,之后就没有看到问题
确保在添加并保存该行后重新启动nginx(在ubuntusudo服务nginx restart
。在redhat stop nginx/path/to/nginx/executable-s stop
上,然后/path/to/nginx/executable
启动nginx)
这个补丁是AWS在他们的帮助页面上推荐的在我的例子中,负载平衡器没有问题。最终的解决方案是Ubuntu的主机文件,其中有一个莫名其妙的条目将流量从某个神秘的IP路由到我的应用程序的主机名。因此,在创建PDF的过程中,paPDF生成器正在重新编写这些内容,以指向神秘服务器,因此网关超时问题。我不知道为什么它偶尔会工作而不会失败
127.0.0.1 localhost
127.0.1.1 ubuntu-server
42.139.126.191 app.myapp.com
这就是它看起来的样子,所以我删除了第三行,所有的齿轮再次开始转动。:p我们在Amazon ELB后面使用Amazon EC2实例,我们得到504个网关超时错误。我们在Ubuntu web服务器上使用Apache和PHP 在我们的例子中,错误是由于服务器内存不足。我们在Apache错误日志中没有看到“内存不足”。Apache访问日志中有一个504行条目。我们通过查看syslog文件(/var/log/syslog)确认了“内存不足”,并修复了内存问题
这为我们解决了504错误。检查安全组设置。端口80可能被限制访问。最可能的原因是空闲超时,默认值为60秒。
在我的例子中:我编辑了入站安全组规则。转到: EC2-->安全组-->编辑Co的入站规则