ECS Fargate/单个ALB/多个docker集装箱
有没有人举一个例子来说明我如何通过一个应用程序负载平衡器将主机头请求转发到两个不同的docker容器来构建ECS集群ECS Fargate/单个ALB/多个docker集装箱,docker,terraform,terraform-provider-aws,aws-fargate,Docker,Terraform,Terraform Provider Aws,Aws Fargate,有没有人举一个例子来说明我如何通过一个应用程序负载平衡器将主机头请求转发到两个不同的docker容器来构建ECS集群 我想为运行angular站点和.net web服务的单个ESC集群提供一个ALB。最终我的目标是在terraform中编写脚本 在不了解所有信息的情况下,我认为您正在寻找基于路径的路由,甚至是更好的基于主机的路由 地形 每个主机/路径都需要一个aws_lb_侦听器_规则(负载平衡器侦听器规则)。 对于每个ECS服务,您需要一个aws\u alb\u目标组,并且您在资源aws\u
我想为运行angular站点和.net web服务的单个ESC集群提供一个ALB。最终我的目标是在terraform中编写脚本 在不了解所有信息的情况下,我认为您正在寻找基于路径的路由,甚至是更好的基于主机的路由 地形 每个主机/路径都需要一个aws_lb_侦听器_规则(负载平衡器侦听器规则)。 对于每个ECS服务,您需要一个aws\u alb\u目标组,并且您在资源aws\u lb\u侦听器规则中引用了正确的目标组 一般的 侦听器规则 在开始使用应用程序负载平衡器之前,必须添加一个或多个侦听器。侦听器是使用您配置的协议和端口检查连接请求的进程。为侦听器定义的规则确定负载平衡器如何将请求路由到一个或多个目标组中的目标 在应用程序负载平衡器中使用基于路径的路由 例子 基于主机的侦听器规则 其中,条件块定义了必须发送请求的主机或模式(下面的示例) 基于路径的侦听器规则 目标群体
到目前为止您尝试了什么?我已经创建了ALB,并为80和443添加了一个侦听器。然后,我为每个容器创建了一个带有服务/任务的ESC集群。我添加了一个侦听器规则,可以转发到各个目标组。每个目标组都位于自己的端口(3000和3001)。是否每个docker容器都需要在该端口上侦听?如果您编辑了问题以显示您尝试过的内容,并且如果您遇到错误,还包括该错误,这将非常有用。如果它没有错误,但没有做你想让它做的事情,那么解释它在做什么,以及你需要它如何与众不同。
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"
}
}