为啥我的弹性 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实例上的“使用这些代码失败的健康检查:”?

我的 python-flask 应用程序源存储在使用弹性 beantalk 部署的 ec2 实例上在哪里?

在弹性 beantalk 部署上的 ec2 微型实例上创建交换文件/驱动器