我伪造了我的申请表。如果我用码头跑的话,一切都会好的。我试着用ecs fargate运行它,并把它放在ALB的前面。如果我试图通过ALB dns访问我的应用程序,我会得到一个504网关淡出回来。
在寻找解决方案时,我找到了一个帖子,它告诉我将Tomcat超时设置得比ELB超时更高,但这没有帮助。
Dockerfile
FROM tomcat:8.0.20-jre8
RUN sed -i 's/connectionTimeout="20000"/connectionTimeout="70000"/' /usr/local/tomcat/conf/server.xml
CMD ["catalina.sh","run"]
COPY /target/Webshop.war /usr/local/tomcat/webapps/
ELB日志
http 2019-09-11T11:20:50.585293Z app/Doces-Backe-19RQJLVNHYG2P/8fb4f4079bb6ff9f 66.85.6.136:47767 - -1 -1 -1 503 - 18 348 "GET http://:8080/ HTTP/1.0" "-" - - arn:aws:elasticloadbalancing:eu-central-1:573575081005:targetgroup/ecs-Docest-de-webshop/8df4f0978484f8bd "Root=1-5d78d892-58886d3490906f0fa3914563" "-" "-" 0 2019-09-11T11:20:50.462000Z "forward" "-" "-"
http 2019-09-11T11:23:23.535869Z app/Doces-Backe-19RQJLVNHYG2P/8fb4f4079bb6ff9f 66.85.6.136:50950 10.10.11.140:8080 -1 -1 -1 504 - 18 303 "GET http://:8080/ HTTP/1.0" "-" - - arn:aws:elasticloadbalancing:eu-central-1:573575081005:targetgroup/ecs-Docest-de-webshop/8df4f0978484f8bd "Root=1-5d78d921-a236121716bd1bd209625fd8" "-" "-" 0 2019-09-11T11:23:13.415000Z "forward" "-" "-"
http 2019-09-11T11:23:56.286426Z app/Doces-Backe-19RQJLVNHYG2P/8fb4f4079bb6ff9f 66.85.6.136:51658 10.10.11.140:8080 -1 -1 -1 504 - 18 303 "GET http://:8080/ HTTP/1.0" "-" - - arn:aws:elasticloadbalancing:eu-central-1:573575081005:targetgroup/ecs-Docest-de-webshop/8df4f0978484f8bd "Root=1-5d78d942-22a1680464884762e02ec940" "-" "-" 0 2019-09-11T11:23:46.156000Z "forward" "-" "-"
http 2019-09-11T11:23:27.513803Z app/Doces-Backe-19RQJLVNHYG2P/8fb4f4079bb6ff9f 66.85.6.136:51034 10.10.11.140:8080 -1 -1 -1 504 - 18 303 "GET http://:8080/ HTTP/1.0" "-" - - arn:aws:elasticloadbalancing:eu-central-1:573575081005:targetgroup/ecs-Docest-de-webshop/8df4f0978484f8bd "Root=1-5d78d925-b6b5daf0d0f733140aea0f84" "-" "-" 0 2019-09-11T11:23:17.393000Z "forward" "-" "-"
我希望看到我的申请在elb运行。
谢谢你的帮忙!
发布于 2020-08-06 10:33:29
解决方案:
问题是,我在负载均衡器的安全组中设置了正确的端口,但没有在ECS服务中设置正确的端口。所以我在那里打开了所需的端口,现在它起作用了。
程序:
谢谢!
发布于 2019-09-11 12:36:12
gateway timeout
背后可能有多种原因。我唯一不喜欢法尔盖特的地方是debug-log
。@AWS团队默认应启用fargate服务的日志配置,因为在没有日志的情况下很难调试这些问题。
更好的方法是配置日志驱动程序并将日志推送到云监视,并查看实际问题,同时在任务定义中检查所需端口,并在服务中映射端口。
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "awslogs-spring",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "awslogs-example"
}
或来自AWS控制台
您需要将云监视日志的权限或角色分配给任务定义或服务,以将日志推送到云监视。
一旦配置了日志,然后转到云观察日志组并搜索日志组,这样您就可以洞察应用程序了。
但是,要首先解决实际问题,您必须了解Gateway Timeout
的错误代码和可能的原因。
HTTP 504:网关超时
说明:指示负载均衡器由于请求在空闲超时期间未完成而关闭了连接。
原因1:应用程序响应时间比配置的空闲超时时间长.
解决方案1:监视HTTPCode_ELB_5XX和延迟度量。如果这些指标有所增加,可能是由于应用程序在空闲超时期间没有响应。有关超时请求的详细信息,请在负载均衡器上启用访问日志,并检查弹性负载平衡生成的日志中的504个响应代码。如果有必要,您可以增加您的容量或增加配置的空闲超时,以便能够完成冗长的操作(例如上载一个大文件)。有关更多信息,请参见为经典负载均衡器配置空闲连接超时,以及如何解决弹性负载平衡的高延迟问题。
原因2:注册实例关闭到弹性负载平衡的连接.
解决方案2:在EC2实例上启用“保持活动”设置,并确保“保持活动超时”大于负载均衡器的空闲超时设置。
https://stackoverflow.com/questions/57888256
复制相似问题