我们可以将一个ALB与AWS ECS Fargate一起使用吗?

问题描述

我在AWS ECS网关中使用ALB和Route53运行了许多微服务,每个微服务都在Route53中使用了ALB。

是否有可能我仅对所有微服务使用一个ALB并路由至它们各自的Route53路径?

在这里,我不使用EKS。使用AWS ECS Fargate。

解决方法

要从单个ALB服务器提供多个Fargate服务,您需要为其创建不同的目标组(TG)。因此,每个服务都有自己的TG,ALB会根据一些侦听器规则将流量转发到各个TG。

由于拥有Route53,因此常见的选择是创建子域,例如:service1.example.comservice2.example.com。您可以将它们作为具有相同ALB的简单Alias A记录关联。

在ALB上,您将具有单个监听器(例如HTTP 80)以及不同的规则。例如:

  1. 第一个规则将基于Host header等于service1.example.com,其中Action的{​​{1}}属于TG1。
  2. 第二条规则将基于Forward等于Host header,其中service2.example.com中的Action为TG2。
  3. 某些默认规则是强制性的(或使用2作为默认规则)。

就是这样。来自互联网的任何指向Forward的请求都将转到您的TG1(即Fragete service1)。对service1.example.com的请求也是如此。