有没有人举例说明我如何使用单个应用程序负载均衡器将主机标头请求转发到两个不同的 docker 容器来构建 ECS 集群。
我想为单个ESC集群提供一个ALB,同时运行我的角度站点以及 a.net Web服务。最终,我的目标是用地形形式编写脚本。
在不知道所有信息的情况下,我认为您正在寻找基于路径的路由甚至更好的基于主机的路由。
大地形态
您需要为每个主机/路径提供一个aws_lb_listener_rule(负载均衡器侦听器规则)。 您需要为每个 ECS 服务提供一个aws_alb_target_group,并在资源aws_lb_listener_rule中引用正确的目标组。
常规
侦听器规则在开始使用应用程序负载均衡器之前,您必须添加一个或多个侦听器。侦听器是使用您配置的协议和端口检查连接请求的进程。您为侦听器定义的规则确定负载均衡器如何将请求路由到一个或多个目标组中的目标。文档
将基于路径的路由与应用程序负载均衡器结合使用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