【问题标题】:AWS Load Balancer to route traffic to one target group with multiple microservicesAWS 负载均衡器将流量路由到具有多个微服务的目标组
【发布时间】:2019-11-14 13:24:28
【问题描述】:

我有一个在端口 80 上侦听 HTTP 流量的 ALB,我在 ALB 侦听器中添加了一个目标组,它由一台 EC2 机器组成。我的 EC2 实例在不同的端口上运行多个微服务,例如。 App1 在 8080 上运行,App2 在 8001 上运行,App3 在 8004 上运行……EC2 再次在端口 80 上侦听任何通过 ALB 传入的请求。我想根据路径为到 EC2 的传入流量到不同的应用程序端口做一个基于路径的路由,例如,

"/users" -> 8080 上的应用程序; “/get/info” -> 8001 等

。有没有办法实现它?或者有什么更好的方法来做我正在尝试的事情?现在我已经完成了基于 ip-tables 的路由,将流量从 EC2 的端口 80 路由到单个端口,即 8080,但这仅服务于我众多微服务中的一个。我如何配置它来为所有这些服务?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 routing microservices aws-application-load-balancer


    【解决方案1】:

    这正是 Application Load Balancer 的设计目的。

    您可以创建多个目标组。每个目标群体有:

    • 一个名字
    • 一个目标(例如端口 8080 上的 HTTP)
    • 健康检查配置以确定目标是否健康

    因此,您将为您正在运行的每个应用程序创建一个目标组

    然后,您可以将 Amazon EC2 实例与每个目标组相关联。在您的情况下,如果一切都在单个 Amazon EC2 实例上运行,您可以将同一实例与所有目标组关联

    然后,创建 Application Load Balancer(或将目标组关联到现有 Application Load Balancer)。

    在 Application Load Balancer 配置中,转到 Listeners 选项卡并添加将特定路径(例如 /users)发送到特定目标组的规则。

    见:

    【讨论】:

    • 我只有一个目标组,它具有运行所有应用程序的 EC2 实例,因此 ALB 会将其流量路由到唯一的目标组。我想根据路径隔离请求以将流量路由到同一目标组中的不同端口
    • 您需要为每个应用创建一个目标组。您可以向多个目标组注册一个实例。然后您使用规则来配置哪个路径将使用哪个目标组,这意味着给定路径将被路由到特定端口。
    • 我也有同样的问题。我正在做同样的@JohnRotenstein 建议。我有 2 个侦听器规则和 2 个目标组指向同一个 EC2 实例。健康检查已通过,但不幸的是,ALB 仅将流量路由到 1 个目标组。这里的根本原因是什么?有人吗?
    • @Kunal 是的。使用基于路径的路由和 Nginx 解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2021-07-21
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2021-01-10
    相关资源
    最近更新 更多