在不丢失 ElasticIP 的情况下重建 Elastic Beanstalk 环境

Posted

技术标签:

【中文标题】在不丢失 ElasticIP 的情况下重建 Elastic Beanstalk 环境【英文标题】:Rebuild Elastic Beanstalk environment without losing ElasticIP 【发布时间】:2016-02-10 22:12:51 【问题描述】:

我使用 VPC 创建了一个 Elastic Beanstalk 环境。有时,环境会锁定在代码版本部署上并且必须重新构建。发生这种情况时,我会丢失我的弹性 IP。

我尝试在重建之前取消关联 EIP,但它仍然被替换。我该怎么做才能使 EIP 永久化!? (是的,我需要 EIP 而 CNAME 不足以满足我的目的)

【问题讨论】:

通过“部署”,我假设您的意思是由于新的 Beanstalk 环境,您正在启动一个新的 EC2 实例?或者您只是想重新部署到现有实例?如果你能更具体地说明你在做什么,那可能会有所帮助。 我的意思是将新代码或新应用程序版本部署到现有实例。我在许多项目中有很多不同的 EB 环境,部署崩溃和需要重建环境的情况并不少见。 我唯一能想到的就是尝试使用 EB 的钩子进行自动缩放,以检测实例何时发生故障,并使用 EB 部署自动启动一个新实例,并从一审到二审。这应该能够自动化。 这是一个单实例环境。当它锁定时,AWS 控制台中没有任何响应。最终它将陷入红色严重状态,您可以启动重建。在我看来,它应该只是在现有 IP 下重建,但就像安全组和其他所有内容一样,EIP 会被删除。 Tony,老实说,我会带着那个去 AWS。发到论坛什么的。但是您是否尝试过设置一些自动缩放参数? 【参考方案1】:

更换根卷

您可以使用“替换根卷”功能(自 2021 年 4 月起可用)。

来自 CLI:

aws ec2 create-replace-root-volume-task --instance-id INSTANCEID

从控制台:

EC2 > 右键单击​​实例 > 监控和故障排除 > 替换根卷

将快照 ID 留空。

【讨论】:

【参考方案2】:

如果您使用已经存在的 NAT 网关在 VPC 的子网中启动弹性 beanstalk 环境。我相信如果 Elastic beanstalk 没有配置您的 EIP,它不应该自动释放它。只是说我从来没有遇到过你在这里提出的这个问题;我的部署永远不会导致随机崩溃。您应该检查为什么会发生这种情况并解决它。

我认为这可能是您和我的设置之间的区别:我在已经创建的 VPC 中配置了弹性 beanstalk。我使用本指南来创建我的 VPC 和子网;也许这对你也有帮助:

https://spinupwp.com/scaling-laravel-using-aws-elastic-beanstalk-part-2-setting-up-vpc-rds-elasticache/

您还可以在主要软件版本上进行绿/蓝部署。您创建一个新的 EB 环境,您可以复制当前环境的配置,或者借助 .ebextensions 和钩子 predeploy/postdeploy 为您配置环境。这将帮助您测试/等待新部署稳定并切换您的 EB 环境的 DNS: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html

【讨论】:

以上是关于在不丢失 ElasticIP 的情况下重建 Elastic Beanstalk 环境的主要内容,如果未能解决你的问题,请参考以下文章

在不重建项目的情况下无法在 Android Studio 中找到符号

React Native XCode 项目在不更改任何内容的情况下重建

如何在不重建所有 RemoteView 的情况下部分更新应用小部件中的视图

如何在不使用 +150k 静态页面重建应用的情况下添加新页面?

如何在不重建 apk 的情况下更新现有已安装应用程序的 Ionic 资产文件夹?

在不丢失引用的情况下更新 ImmutableJS OrderedMap 上的记录