【问题标题】:Elastic Beanstalk: Create EC2 and RDS instances in the same Availibity ZoneElastic Beanstalk:在同一可用区创建 EC2 和 RDS 实例
【发布时间】:2014-08-22 11:12:58
【问题描述】:

我是 Elastic Beanstalk 的新手,我对创建 EC2 和 RDS 实例的位置有一个“简单”的问题。在创建、删除环境和谷歌搜索解决方案的几个小时里,我没有想法。

这个问题看起来很简单。我希望 EC2 和 RDS 实例位于同一可用区中,这样我就不必为可用区之间的流量付费。但似乎创建它们的区域是随机的(1a-1c)。在“配置”选项卡中,我看到在“实例”下配置了“可用区:任何”。但是当我编辑实例配置时,没有选项可以更改它。

实际区域无关紧要。重要的是所有实例都创建在同一个区域中。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    aws:autoscaling:asg:Custom Availability Zones 选项不适用于现代“VPC”Elastic Beanstalk 环境。

    你会得到错误:Custom Availability Zones option not supported for VPC environments。

    相反,您必须将通过aws:ec2:vpc:Subnets 选项提供的子网限制为仅在您希望实例运行的可用区中指定子网。

    【讨论】:

    • 子网调整也可以通过配置-> VPC部分下的控制台进行,其中提供了AZ、ELB和EC2选项
    【解决方案2】:

    这是可能的。您可以为 EC2 实例和 RDS 数据库指定自定义可用区。您可以使用.ebextensions 来实现这一点。在您的应用程序源中创建一个名为 .ebextensions 的目录。在此目录中创建一个名为“01-rds-setup.config”的文件。此目录中的配置文件按其名称的字典顺序处理。 假设这是唯一将被处理的文件。

    要配置 EC2 可用区,请使用“aws:autoscaling:asg”命名空间下的“自定义可用区”选项设置。 here 提供了有关此选项设置的文档。 要配置 RDS 可用性区域,您可以覆盖 RDS 资源的属性。有关覆盖资源属性的更多文档,请阅读this。

    .ebextensions/01-rds-setup.config 文件的内容:

    option_settings:
       - namespace: aws:autoscaling:asg
         option_name: Custom Availability Zones
         value: us-west-2a
    Resources:
       AWSEBRDSDatabase:
         Type: AWS::RDS::DBInstance
         Properties:
            AvailabilityZone: us-west-2a
    

    确保从控制台启动具有 RDS 的 Elastic Beanstalk 环境时未选择多可用区选项。这应该适用于您的用例。

    【讨论】:

    • 谢谢。这听起来很有希望。当我上传新版本并且RDS服务器位于不同的区域时,旧的会被删除并设置新的,对吗?因为我明天要去度假,所以我还需要一段时间才能测试它。
    • 我希望 RDS 与数据一起被删除,并且在预期的可用区域中启动了一个新的 RDS。 (尚未测试此替换方案,但上述 ebextension 应该适用于新环境)。为了安全起见,我建议尝试新环境。
    • 啊忘记了可以在创建新环境的时候上传应用程序版本,而不是之后。
    猜你喜欢
    • 1970-01-01
    • 2016-11-01
    • 2015-09-15
    • 2017-03-05
    • 2018-02-05
    • 2016-02-15
    • 2013-08-12
    • 2021-04-06
    • 2015-07-16
    相关资源
    最近更新 更多