我正在使用云形成模板来构建基础架构(ECS Fargate集群)。 模板成功执行和堆栈已成功创建。但是,任务失败,出现以下错误:
library(tidyverse)
data(midwest, package="ggplot2")
plot <- ggplot(midwest, aes(x=area, y=poptotal)) +
geom_bar(aes(fill=state), stat="identity") +
guides(fill=guide_legend(nrow=2)) +
scale_fill_brewer(palette ="Set1" ,labels = str_wrap(c("AAA AAA","BBB BBB","C","DDD DDD","E"),5)) +
theme(legend.position = "bottom", legend.text=element_text(margin=margin(t=100,r=100))
我没有找到寻找该问题的内容和地点。 由于它是fargate集群,因此我无法获得如何登录到容器并执行一些运行状况检查查询以进一步调试的信息。
有人可以帮我进一步指导并帮助我吗? 由于此错误,我什至无法访问我的Web应用程序。作为ALB惯于路由通信,如果它是不健康的
我做了什么
经过一番谷歌搜索后,我发现了这篇文章: https://aws.amazon.com/premiumsupport/knowledge-center/troubleshoot-unhealthy-checks-ecs/
但是,我想这与fargate中的EC2兼容性有关。但就我而言,EC2不存在。
如果你觉得,我可以粘贴整个模板中。
请帮助
答案 0 :(得分:1)
此问题已解决。 问题在于以下几点:
进行这些更改后,它可以正常工作
答案 1 :(得分:1)
我收到此错误消息是因为ECS服务和负载均衡器目标组之间的安全组仅允许HTTP和HTTPS通信。
很明显,通过更新安全组以允许所有端口上的所有流量(如https://docs.aws.amazon.com/AmazonECS/latest/userguide/create-application-load-balancer.html所建议的那样),健康检查是在其他端口和/或协议上进行的。
答案 2 :(得分:0)
我有这个完全相同的问题。我可以通过以下方法解决问题:
答案 3 :(得分:0)
如上面tschumann所述,请检查ECS群集周围的安全组。如果使用Terraform,请允许进入所有docker临时端口,如下所示:
resource "aws_security_group" "ecs_sg" {
name = "ecs_security_group"
vpc_id = "${data.aws_vpc.vpc.id}"
}
resource "aws_security_group_rule" "ingress_docker_ports" {
type = "ingress"
from_port = 32768
to_port = 61000
protocol = "-1"
cidr_blocks = ["${data.aws_vpc.vpc.cidr_block}"]
security_group_id = "${aws_security_group.ecs_sg.id}"
}
答案 4 :(得分:0)
此问题有很多不同可能的原因,不仅是开放的端口:
因此,AWS创建了自己的网站来解决此错误的可能性:
编辑:就我而言,我的应用程序的运行状况检查代码不同。默认值为200,但是您也可以添加范围,例如200-499。
答案 5 :(得分:0)
可能对某人有帮助。我们的目标群体健康检查路径设置为 /
,对于我们的服务,它指向 Swagger 并且运行良好。更新为使用 Springfox 而不是手动生成 swagger.json 后,/
现在执行 302 重定向到 /swagger-ui.html
,这导致运行状况检查失败。由于这是针对 Spring Boot 服务,我们只是将目标组中的健康检查路径指向 /health
(OOTB Spring 状态页面)。
答案 6 :(得分:0)
让我分享我的经验。
在我的情况下,一切都是正确的,除了服务器侦听的主机之外,是 localhost
这使得服务器无法从外界访问,并且健康检查分别不起作用。在某些库中它应该是 0.0.0.0
或为空。