Amazon web services AWS ECS Fargate禁用运行状况检查
我有一个使用Fargate在AWS ECS中运行的容器 我在下面的Terraform中注册它,并将主机名添加到服务发现中。我看到它将其添加到route53中,然后将其删除,我假设这是因为它未通过健康检查 它失败了 启动容器时出现以下错误: company/cmd createServer net.Listen company.qcap.prod:50031 Listen tcp: 在10.0.0.2:53上查找company.qcap.prod:没有这样的主机 在主机在Route53中注册之前,我的服务无法侦听地址,但如果运行状况检查失败,我的Route53将删除DNS条目 有没有一种方法可以告诉任务等待该条目被添加,然后执行运行状况检查 下面是我的服务平台Amazon web services AWS ECS Fargate禁用运行状况检查,amazon-web-services,docker,terraform,amazon-ecs,aws-fargate,Amazon Web Services,Docker,Terraform,Amazon Ecs,Aws Fargate,我有一个使用Fargate在AWS ECS中运行的容器 我在下面的Terraform中注册它,并将主机名添加到服务发现中。我看到它将其添加到route53中,然后将其删除,我假设这是因为它未通过健康检查 它失败了 启动容器时出现以下错误: company/cmd createServer net.Listen company.qcap.prod:50031 Listen tcp: 在10.0.0.2:53上查找company.qcap.prod:没有这样的主机 在主机在Route53中注册之前,
data "template_file" "company" {
template = file("./templates/ecs/company.json.tpl")
vars = {
app_port = 50010
fargate_cpu = var.fargate_cpu
fargate_memory = var.fargate_memory
aws_region = var.region
}
}
resource "aws_ecs_task_definition" "company" {
family = "company-app-task"
execution_role_arn = aws_iam_role.ecs_task_execution_role.arn
network_mode = "awsvpc"
requires_compatibilities = [
"FARGATE"]
cpu = var.fargate_cpu
memory = var.fargate_memory
container_definitions = data.template_file.company.rendered
}
resource "aws_ecs_service" "company-service" {
name = "company-service"
cluster = aws_ecs_cluster.main.id
task_definition = aws_ecs_task_definition.company.id
desired_count = var.app_count
launch_type = "FARGATE"
network_configuration {
security_groups = [
aws_security_group.ecs_tasks.id
]
subnets = module.vpc.private_subnets
assign_public_ip = true
}
service_registries {
container_name = "company"
registry_arn = aws_service_discovery_service.company.arn
}
lifecycle {
create_before_destroy = true
}
depends_on = [
aws_iam_role_policy_attachment.ecs_task_execution_role
]
}
resource "aws_service_discovery_service" "company" {
name = "company"
dns_config {
namespace_id = aws_service_discovery_private_dns_namespace.qcap_prod_sd.id
routing_policy = "MULTIVALUE"
dns_records {
ttl = 10
type = "A"
}
}
health_check_custom_config {
failure_threshold = 10
}
}
不要对侦听地址使用DNS名称。这没有任何好处。使用
0.0.0.0
监听所有可用接口。Fargate内的单独ECS任务试图相互通信时,这将如何工作?这不会对其产生任何影响。它只是用来确定要绑定到哪个本地网络接口。因此,如果我有一个单独的服务想要与正在侦听0.0.0.0:5010的我的服务通话,他们可以只拨打(0.0.0.0:5010)?不,他们会拨打DNS名称。外部端点与服务绑定到的本地接口不同。您的ECS配置看起来不错,您的应用程序配置可能有问题。请不要使用DNS名称作为侦听地址。这没有任何好处。使用0.0.0.0
监听所有可用接口。Fargate内的单独ECS任务试图相互通信时,这将如何工作?这不会对其产生任何影响。它只是用来确定要绑定到哪个本地网络接口。因此,如果我有一个单独的服务想要与正在侦听0.0.0.0:5010的我的服务通话,他们可以只拨打(0.0.0.0:5010)?不,他们会拨打DNS名称。外部端点与服务绑定到的本地接口不同。您的ECS配置看起来不错,您的应用程序配置可能有问题。