我在AWS Application Load Balancer上运行了Flask应用程序,但无法使用Web套接字。在阅读了几篇文章并配置了Load Balancers,Target Groups,EC2上的粘性后,我得出的结论是ALB可能没有正确地盯着应用程序。
Flask-SocketIo表示使用socketio.run(application, host='0.0.0.0', port=port)
启动Web服务器,因为它封装了application.run()
。但经过进一步阅读后,我发现EC2已经调用application.run()
而无需在启动脚本中明确这样做,因此它可能绕过我的socketio.run()
而不是启动我的Web服务器。
可能是这种情况吗?如何验证它并确保正确启动socketio?
答案 0 :(得分:0)
要通过Load Balancer访问应用程序,您必须首先确保目标组中的目标是健康的。健康状态在AWS Web控制台中显示在“目标”选项卡上的目标组实例详细信息上。
如果目标组中没有目标,请按“编辑”按钮并从列表中选择EC2实例来添加目标。别忘了使用合适的端口。还要确保正确配置运行状况检查(路径,端口...)。您可以在目标组详细信息页面的“运行状况检查”选项卡上找到它们。
如果上述所有情况都合适且您在TG中有一个健康的目标,但是ELB没有显示您的应用程序,我建议您使用Flask应用程序通过SSH连接到您的EC2实例并检查是否存在运行正常。