ECS 服务自动伸缩

问题描述 投票:0回答:1

我已按照本指南设置 GTM 服务器端:https://aws-solutions-library-samples.github.io/advertising-marketing/using-google-tag-manager-for-server-side-website-analytics- on-aws.html

我正在使用 AWS ECS 任务定义和服务。后来,我使用 Snowbridge 使用 HTTP post 请求将数据从 AWS kinesis 发送到 GTM(扫雪机客户端)。

当数据量较大时,我偶尔会收到 GTM 的 502 错误。如果我过滤掉数据并减少转发到 GTM 的数据量,我就不会再收到错误。我可以在 GTM 端进行哪些更改以确保可以处理大量数据? ECS 可以使用自动伸缩吗?

我已经使用了类似的参数

部署最大百分比= 200

deployment_minimum_healthy_percent = 50

但问题仍然存在。

这就是我的 GTM 配置的大致样子:

resource "aws_ecs_cluster" "gtm" { name = "gtm" setting { name = "containerInsights" value = "enabled" } } resource "aws_ecs_task_definition" "PrimaryServerSideContainer" { family = "PrimaryServerSideContainer" network_mode = "awsvpc" requires_compatibilities = ["FARGATE"] cpu = 2048 memory = 4096 execution_role_arn = aws_iam_role.gtm_container_exec_role.arn task_role_arn = aws_iam_role.gtm_container_role.arn runtime_platform { operating_system_family = "LINUX" cpu_architecture = "X86_64" } container_definitions = <<TASK_DEFINITION [ { "name": "primary", "image": "gcr.io/cloud-tagging-10302018/gtm-cloud-image", "environment": [ { "name": "PORT", "value": "80" }, { "name": "PREVIEW_SERVER_URL", "value": "${var.PREVIEW_SERVER_URL}" }, { "name": "CONTAINER_CONFIG", "value": "${var.CONTAINER_CONFIG}" } ], "cpu": 1024, "memory": 2048, "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "gtm-primary", "awslogs-create-group": "true", "awslogs-region": "eu-central-1", "awslogs-stream-prefix": "ecs" } }, "portMappings" : [ { "containerPort" : 80, "hostPort" : 80 } ] } ] TASK_DEFINITION } resource "aws_ecs_service" "PrimaryServerSideService" { name = var.primary_service_name cluster = aws_ecs_cluster.gtm.id task_definition = aws_ecs_task_definition.PrimaryServerSideContainer.id desired_count = var.primary_service_desired_count launch_type = "FARGATE" platform_version = "LATEST" scheduling_strategy = "REPLICA" deployment_maximum_percent = 200 deployment_minimum_healthy_percent = 50 network_configuration { assign_public_ip = true security_groups = [aws_security_group.gtm-security-group.id] subnets = data.aws_subnets.private.ids } load_balancer { target_group_arn = aws_lb_target_group.PrimaryServerSideTarget.arn container_name = "primary" container_port = 80 } lifecycle { ignore_changes = [task_definition] } } resource "aws_lb" "PrimaryServerSideLoadBalancer" { name = "PrimaryServerSideLoadBalancer" internal = false load_balancer_type = "application" security_groups = [aws_security_group.gtm-security-group.id] subnets = data.aws_subnets.public.ids enable_deletion_protection = false } ....
我也尝试添加这些:

resource "aws_appautoscaling_target" "ecs_target" { max_capacity = 4 min_capacity = 1 resource_id = "service/${aws_ecs_cluster.gtm.name}/${aws_ecs_service.PrimaryServerSideService.name}" scalable_dimension = "ecs:service:DesiredCount" service_namespace = "ecs" } resource "aws_appautoscaling_policy" "ecs_policy" { name = "scale-down" policy_type = "StepScaling" resource_id = aws_appautoscaling_target.ecs_target.resource_id scalable_dimension = aws_appautoscaling_target.ecs_target.scalable_dimension service_namespace = aws_appautoscaling_target.ecs_target.service_namespace step_scaling_policy_configuration { adjustment_type = "ChangeInCapacity" cooldown = 60 metric_aggregation_type = "Maximum" step_adjustment { metric_interval_upper_bound = 0 scaling_adjustment = -1 } } }
但 502 错误仍然存在。

amazon-web-services terraform amazon-ecs google-tag-manager autoscaling
1个回答
0
投票
这些

deployment_*

 设置仅影响部署。这些不是自动缩放设置。您需要配置 AWS Application Auto-Scaling 以自动扩展您的 ECS 服务。 Terraform 文档中有一个配置 ECS 自动缩放的示例
这里

© www.soinside.com 2019 - 2024. All rights reserved.