是否可以使用 Elastic Beanstalk ebextensions 配置应用程序负载均衡器?

Posted

技术标签:

【中文标题】是否可以使用 Elastic Beanstalk ebextensions 配置应用程序负载均衡器?【英文标题】:Is it possible to configure an Application Load Balancer with Elastic Beanstalk ebextensions? 【发布时间】:2018-07-07 14:01:28 【问题描述】:

Elastic Beanstalk documentation 提到可以使用 .ebextensions 文件夹中的配置文件设置负载均衡器类型。但是,当我在新创建的环境中部署我的应用程序时,Elastic Beanstalk 仍然会创建一个经典的负载均衡器。

我正在通过 AWS 控制台创建新环境,并且我的应用程序源包具有 .ebextensions 文件夹,其中包含指定应用程序负载均衡器的设置。如下图:

.ebextensions/application-load-balancer.config

option_settings:
  aws:elasticbeanstalk:environment:
    LoadBalancerType: application

我在创建环境的过程中是否遗漏了一个步骤?其他人遇到过这个问题吗?

【问题讨论】:

除了指定负载均衡器的类型之外,您能否尝试按照here 所述创建默认侦听器? 您如何验证“Elastic Beanstalk 仍然创建经典负载均衡器”?您的设置似乎对我有用,但在 AWS 控制台的 EB 配置屏幕上似乎没有明确确认 LoadBalancerType @DemPilafian 当我检查 EC2 页面时,它显示我的负载均衡器仍然是经典的 EB“网络层”部分通常会显示一个“负载平衡”框,但在 LoadBalancerType: application 设置中不存在(但 EC2 页面仍显示 classic...有趣)。 【参考方案1】:

我也遇到了这个问题,从测试看来,这些 .ebextensions /application-load-balancer.config 设置只有在创建指定了高可用性的环境时才有效。因此,您不能只选择平台并上传代码并从 .config 设置中配置应用程序负载平衡器和高可用性设置(即使文档看起来应该可行)。相反,您必须选择所需的平台(php 等),上传您的初始代码,然后单击更多选项并选择“高可用性”的配置预设。如果您要部署到自定义 VPC 网络,此时您可能还需要选择您的 VPC。您不需要设置任何其他设置,因为这些设置将从您的 application-load-balancer.config 文件(和其他 .config 文件)中应用。似乎环境创建和环境配置之间存在区别,其中一些值只能在“创建”步骤中设置。

【讨论】:

【参考方案2】:

我想知道为什么这个问题的文档记录如此之少,而且很难找到答案或示例,即使 .ebextensions 文件夹下的扩展似乎是在 CI/CD 中使用环境的便捷方式过程。

如何在 Elastic Beansltalk 环境中创建“应用程序”负载均衡器的正确方法是在您的 .config 文件中使用 AWS::ElasticLoadBalancingV2::LoadBalancer 来指定资源。 示例:

Resources:
  AWSEBV2LoadBalancer:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Scheme: internet-facing

AWS::ElasticLoadBalancingV2::LoadBalancer 规范:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html 规范说可以将“网络”或“网关”负载均衡器设置为“类型”属性,而另一个文档 (https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-alb.html) 说这是不可能的,您应该使用 aws:选项文件配置中的 elasticbeanstalk:environment 选项。 不管是真的,上面的示例对于“应用程序”负载均衡器来说工作得非常好,因为“应用程序”是 V2 的默认类型。

请注意,如果您使用 ElasticLoadBalancingV2 负载均衡器,那么您还必须在选项配置文件中使用 V2 侦听器、目标组等,以及 V2 选项(例如 aws:elbv2:loadbalancer)

V2 监听器示例:https://github.com/awsdocs/elastic-beanstalk-samples/blob/b5e8eaea6a0acca6b80281d4f1afe408a50e1afb/configuration-files/aws-provided/resource-configuration/alb-http-to-https-redirection-full.config

【讨论】:

以上是关于是否可以使用 Elastic Beanstalk ebextensions 配置应用程序负载均衡器?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 AWS Elastic Beanstalk 运行两个 docker 应用程序(多图像)?

是否可以使用 AWS Elastic Beanstalk 部署到现有的 EC2 实例? 。网

是否可以在没有负载均衡器的情况下使用带有 SSL (HTTPS) 的 Amazon Elastic Beanstalk?

是否可以跨不同的 Elastic Beanstalk 应用程序执行基于路径的路由?

是否可以将负载均衡器添加到没有负载均衡器的现有 AWS Elastic Beanstalk 应用程序?

VCS 上的 Elastic Beanstalk .config 文件?