【问题标题】:ECS Fargate / single ALB / multiple docker containersECS Fargate / 单个 ALB / 多个 docker 容器
【发布时间】:2019-08-28 04:19:12
【问题描述】:

有没有人举例说明我如何使用单个应用程序负载均衡器将主机标头请求转发到两个不同的 docker 容器来构建 ECS 集群。

我想为单个 ESC 集群设置一个 ALB,同时运行我的 Angular 站点和 .net Web 服务。最终我的目标是在 terraform 中编写脚本。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我已经创建了 ALB 并为 80 和 443 添加了一个监听器。然后我创建了一个 ESC 集群,其中每个容器都有一个服务/任务。我添加了一个转发到各个目标组的侦听器规则。每个目标组都在自己的端口(3000 和 3001)上。每个 docker 容器都需要监听那个端口吗?
  • 如果您编辑您的问题以显示您尝试过的内容的minimal reproducible example 并且如果您收到错误也包括错误,这将很有用。如果它没有出错但没有做你想让它做的事情,那么请解释它在做什么以及你需要它如何与众不同。

标签: docker terraform terraform-provider-aws aws-fargate


【解决方案1】:

在不了解所有信息的情况下,我认为您正在寻找基于路径的路由甚至更好的基于主机的路由。

地形

您需要为每个主机/路径设置一个 aws_lb_listener_rule(负载均衡器侦听器规则)。 您需要为每个 ECS 服务提供一个 aws_alb_target_group,并在资源 aws_lb_listener_rule 中引用正确的目标组。

一般

监听器规则

在开始使用 Application Load Balancer 之前,您必须添加一个或多个侦听器。侦听器是一个使用您配置的协议和端口检查连接请求的进程。您为侦听器定义的规则确定负载均衡器如何将请求路由到一个或多个目标组中的目标。 docs

在应用程序负载均衡器中使用基于路径的路由

https://docs.aws.amazon.com/en_us/elasticloadbalancing/latest/application/tutorial-load-balancer-routing.html

示例

基于主机的侦听器规则

resource "aws_lb_listener_rule" "host_based_routing" {
  listener_arn = aws_lb_listener.front_end.arn
  priority     = 99

  action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.static.arn
  }

  condition {
    field  = "host-header"
    values = ["my-service.*.terraform.io"]
  }
}

条件块定义了必须发送请求的主机或模式(如下示例)。

基于路径的侦听器规则

resource "aws_lb_listener_rule" "static" {
  listener_arn = aws_lb_listener.front_end.arn
  priority     = 100

  action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.static.arn
  }

  condition {
    field  = "path-pattern"
    values = ["/static/*"]
  }
}

目标群体

resource "aws_alb_target_group" "alb_target_group" {
  name                 = "example-target-group"
  protocol             = "HTTP"
  port                 = var.exposed_port
  vpc_id               = var.vpc_id
  deregistration_delay = 30
  health_check {
    path    = var.service_health_check_path
    matcher = "200-399"
  }
}

https://www.terraform.io/docs/providers/aws/r/lb_listener_rule.html https://www.terraform.io/docs/providers/aws/r/lb_target_group.html

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 2019-10-16
    • 2018-04-13
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多