为啥我的弹性 beantalk 实例在我部署时被替换?
Posted
技术标签:
【中文标题】为啥我的弹性 beantalk 实例在我部署时被替换?【英文标题】:why is my elastic beanstalk instance being replaced when I deploy?为什么我的弹性 beantalk 实例在我部署时被替换? 【发布时间】:2015-04-13 07:25:09 【问题描述】:我有一个基于 docker 的弹性 beanstalk 环境,托管一个 ruby on rails web 应用程序。环境是单个实例框。
每当我发出eb deploy
命令时,弹性beantalk 都会终止实例并启动一个新实例。我期待 EB 会在同一个实例中启动一个新容器并将其与旧容器交换。
此实例终止导致停机。 是否有一种无需停机即可将 docker 部署到弹性 beantalk 中的自动化方法?
我找到的唯一解决方案是“交换 URL”功能。但是我觉得很麻烦。
【问题讨论】:
您在部署中进行了哪些更改?并非所有部署都需要实例终止。 【参考方案1】:有没有一种自动化的方法可以在不停机的情况下将 docker 部署到弹性 beantalk 中?
-
将新的 docker 镜像推送到同一个 dockerbub/dockerregistry 存储库,其标签与您在弹性 beanstalk 中使用的标签相同。
将 Beanstalk 大小更改为 2 以使用新版本的 docker 容器启动新服务器。
终止旧实例并允许 EB 替换它,等待替换变得健康。*
将 EB 大小改回 1。
* 如果您在将大小减小到 1 时不让第二个实例变得健康,它可能会终止健康的实例。
【讨论】:
哇,这真是一种解决方法。我正在拍摄 EB 内部的东西。 另一种选择是有 2 个堆栈。部署到不使用的,然后切换DNS【参考方案2】:在您的 Elastic Beanstalk 环境的配置设置下,您将找到更新和部署。在 Application Deployments 下,您可以设置 Batch 类型 以满足您的要求。
对于此过程,您需要将正在运行的实例增加到至少两个。
【讨论】:
以上是关于为啥我的弹性 beantalk 实例在我部署时被替换?的主要内容,如果未能解决你的问题,请参考以下文章
使用 aws fargate 有啥缺点(缺点)以及为啥我的 laravel 应用程序在 Fargate 与弹性 beantalk 上运行缓慢?
为啥AWS弹性beantalk滚动版本更新仍然有503s的2分钟停机时间?
我的 ec2 实例中乘客日志文件的位置(弹性 beantalk + rails)
如何修复弹性beantalk实例上的“使用这些代码失败的健康检查:”?