在不丢失 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 静态页面重建应用的情况下添加新页面?