首页 > 解决方案 > 在弹性负载均衡器后面混合 EC2 和 Fargate 任务

问题描述

我正在尝试对使用 fargate 和 ec2 ecs 服务部署的单个应用程序进行负载平衡。原因是我想在必要时简单地扩大 Fargate 以应对意外的高负载。我似乎无法弄清楚如何配置目标组/弹性负载均衡器。

对于每个服务,我为 fargate 和 ec2 服务创建了一个相应的目标组,其中 target_type 分别设置为“ip”和“instance”。

我不确定如何让负载均衡器将流量平等地转发到这两个目标组。

标签: amazon-web-servicesload-balancingamazon-ecs

解决方案


https://docs.aws.amazon.com/AmazonECS/latest/userguide/register-multiple-targetgroups.html

目前,如果您要创建指定多个目标组的服务,则必须使用 Amazon ECS API、开发工具包、AWS CLI 或 AWS CloudFormation 模板创建服务。创建服务后,您可以使用 AWS 管理控制台查看服务和注册到该服务的目标组。

可以使用以下格式在服务定义中指定多个目标组。

"loadBalancers":[
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456",
      "containerName":"container_name",
      "containerPort":container_port
   },
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321",
      "containerName":"container_name",
      "containerPort":container_port
   }
]

作为替代方案,我想知道这是否可行

  • 像往常一样在 Fargate 前面设置一个 ELB
  • 将 Fargate ELB 的 IP 地址加上您的 EC2 实例的 IP 地址放入一个目标组,并target_type设置为ip

推荐阅读