【问题标题】:Elastic Beanstalk Change ELB TypeElastic Beanstalk 更改 ELB 类型
【发布时间】:2018-03-21 19:51:10
【问题描述】:

有谁知道是否可以将现有的 AWS Elastic Beanstalk 环境更改为应用程序负载均衡器(而不是经典的)。

据我所知,只有应用程序 ELB 可以使用 AWS WAF 和 DDOS“Shield”进行保护,因此任何现有的 EB 应用程序都无法利用这些功能,因为它们具有经典的 ELB。

【问题讨论】:

    标签: amazon-web-services amazon-elastic-beanstalk amazon-elb amazon-waf


    【解决方案1】:

    无法更改现有环境的负载均衡器类型,但我使用以下过程创建了一个带有应用程序负载均衡器(而不是经典)的克隆环境。

    1. 在控制台中,保存原始环境的配置。
    2. 在终端eb config get [save name],您将在.elasticbeanstalk\saved_configs 中获得一个文件。
    3. 编辑要添加的文件

    OptionSettings: aws:elasticbeanstalk:environment: LoadBalancerType: application

    并删除(如果有的话):

    aws:elb:loadbalancer: CrossZone: true aws:elb:policies: ConnectionDrainingEnabled: true aws:elb:listener:443: [whatever]

    你可以利用这个机会做其他的改变,比如升级PlatformArn

    1. 将修改后的配置保存为 [新保存名称]。
    2. 在终端中,eb config put [new save name]
    3. 将您的.ebextensions 更新为LoadBalancerType: application,并可选择将侦听器添加到elbv2。您也可以稍后在控制台中手动创建。

    aws:elbv2:listener:443: ListenerEnabled: true SSLPolicy: ELBSecurityPolicy-TLS-1-2-2017-01 SSLCertificateArns: [your cert id] DefaultProcess: default Protocol: HTTPS Rules: ''

    1. 使用eb create [new env name] --cfg [new save name] 创建一个新环境

    现在,您将拥有一个新环境,其中包含不同类型的负载均衡器和旧环境。您可以执行测试,进行进一步的配置更改,然后如果一切正常,交换 CNAME 并终止之前的环境。

    【讨论】:

    • 这个答案很好,但要真正进行更改并不容易
    • 这不再起作用了。编辑、保存、上传和加载修改后的配置现在会生成错误“无法加载配置:配置验证异常:无法更改 LoadBalancer 类型选项。” [![当我尝试这样做时][1]][1] [1]:i.stack.imgur.com/7PgTJ.png
    • @KapilAggarwal 您是使用新配置创建新环境还是尝试将新配置应用于现有配置?如果您按照描述使用eb config put [new save name] 而不是控制台进行加载,会发生什么情况?
    【解决方案2】:

    您好,根据 AWS 文档:

    Elastic Beanstalk 环境管理控制台仅支持 使用 Classic 创建和管理 Elastic Beanstalk 环境 负载均衡器。有关其他选项,请参阅Application Load BalancerNetwork Load Balancer.

    还有

    注意您只能在环境中设置负载均衡器类型 创建。 (Refer AWS Documetnation)

    所以当您通过AWS CLI 将应用程序部署到 Elastic Beanstalk 时:

    试试

    eb create test-env --elb-type network
    

    eb create test-env --elb-type application

    【讨论】:

    • 谢谢,太遗憾了。这意味着我认为任何现有环境都无法更改。
    • 根据AWS官方文档目前没有,如果答案消除了您的疑虑,请标记问题已解决
    • other places 中的官方文档是多么的腼腆。您可以使用 EC2 负载均衡器迁移向导生成 第二个 应用程序负载均衡器,该负载均衡器转发到经典负载均衡器,如果您不介意支付两次并且它可以满足您的目的。
    • 似乎这个答案不再正确。可以通过控制台创建 Application Load Balancer。我自己也做过。 aws.amazon.com/about-aws/whats-new/2018/04/…
    • 确实,现在可以单击负载均衡器将其配置为任何类型,包括共享应用程序。但是,一旦配置,仍然无法更改它。
    【解决方案3】:

    我发现更改现有应用程序以使用应用程序负载平衡器的最简单方法是同时使用控制台和 CLI:

    1. 在控制台中,保存原环境的应用配置。记下这个名字。我们将其用作<saved-config-name>
    2. 应用程序版本下记下最新的版本标签。我们将其用作<app-version>
    3. 从 CLI 运行 eb create <new-environment-name> --elb-type application --cfg <saved-config-name> --version <app-version>
    4. 如果您在旧应用程序中配置了 HTTP,请在新创建的应用程序中使用适当的证书在 Load Balancer-->Listeners 下的控制台中重新配置它。

    【讨论】:

    • 值得注意的是,这本身不足以更新完整的 EB 环境 - 您必须正确配置任何与负载平衡器相关的设置,包括例如监听、SSL 证书、安全组配置等
    猜你喜欢
    • 2020-09-02
    • 2020-11-27
    • 2014-07-29
    • 2014-10-13
    • 2019-12-11
    • 2014-07-05
    • 2015-12-21
    • 2016-12-13
    • 2018-09-15
    相关资源
    最近更新 更多