14

在我的 AWS 环境中,有一些负载平衡/自动缩放的 Elastic Beanstalk 应用程序。

我想在它们前面有一个负载均衡器,所以对http://loadbalancer.com/app1的任何请求都会路由到第一个 Elastic Beanstalk 应用程序, http: //loadbalancer.com/app2到第二个,依此类推.

我尝试设置一个应用程序负载均衡器,将不同的侦听器路由到不同的目标组。不幸的是,我的解决方案并不理想,因为目标组绑定到一组固定的 EC2 实例,而我希望它们与按需创建或销毁实例的环境相关联

我还没有找到将应用程序负载均衡器的侦听器绑定到 Auto Scaling 组的方法。

有没有办法实现我想要的?

4

3 回答 3

15

我只是按照本文 https://aws.amazon.com/blogs/devops/introducing-application-load-balancer-unlocking-and-optimizing-architectures/中的说明设法做到了

步骤:

1)创建一个新的目标群体

    aws elbv2 create-target-group --name <target_group_name> --protocol HTTP --port 80 --vpc-id <vpc_id> 

2) 将您的目标组绑定到与应用关联的自动缩放组

    aws autoscaling attach-load-balancer-target-groups --auto-scaling-group-name <id_of_the_autoscaling_group> --target-group-arns "<new_target_group_arns>"

3) 在主应用程序负载均衡器中创建一个新规则,将所需路径路由到正确的应用程序(这可以通过 UI 完成)。

于 2017-01-24T11:15:09.027 回答
5

我在控制台中为应用程序负载均衡器和弹性 beantalk 实现这一点的方式如下

  1. 创建新的目标组 (TG-App1)
  2. 将 TG-App1 附加到您的 beanstalk 环境自动缩放组。现在,您将同时拥有 beanstalk 创建的目标组和附加的 TG-App1,并且现在两者都将使用实例进行更新。
  3. 创建新的应用程序负载均衡器 (ALB-App)
  4. 创建转发到 TG-App1 的 ALB-App 规则(例如:PATH: /app1/* -> FORWARD: TG-App1)
  5. 更新 beanstalk 环境实例安全组以允许端口 80 上来自 ALB-App 安全组的流量。(您现在将有 2 个端口 80 规则,1 个用于 ALB-App,1 个用于默认 beanstalk 负载均衡器安全组)

这允许您在 ALB-App(“loadbalancer.com”)上设置 dns,并根据规则将流量转发到具有由不同 beanstalks 管理的实例的不同目标组。只需按照步骤为每个 beanstalk 环境创建一个目标组并将其添加到 ALB-App 上的规则中

结果:

“loadbalancer.com/app1”-> ALB-App -> TG-App1 -> Beanstalk 环境 1 个实例

“loadbalancer.com/app2” -> ALB-App -> TG-App2 -> Beanstalk 环境 2 个实例

于 2019-08-19T21:34:54.080 回答
1

Amazon Elastic Beanstalk 现在支持共享负载均衡器

2020 年 9 月 11 日至 9 月

https://aws.amazon.com/blogs/containers/amazon-elastic-beanstalk-introduces-support-shared-load-balancers/

于 2020-09-11T13:10:48.147 回答