跨不同Elastic Beanstalk应用程序的负载平衡

时间:2017-01-23 13:36:24

标签: amazon-web-services amazon-ec2 elastic-beanstalk elastic-load-balancer

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

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

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

我还没有找到一种方法将应用负载均衡器的监听器绑定到自动缩放组。

有没有办法达到我想要的目的?

3 个答案:

答案 0 :(得分:11)

我按照本文中的说明设法完成了这项工作 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完成)。

答案 1 :(得分:3)

以下是我在控制台中实现Application Load Balancer和Elastic beantalk的方式

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

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

结果:

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

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

答案 2 :(得分:0)

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

11-2020年9月

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