AWS Elastic Beanstalk - 为啥我要使用 leader_only 命令?

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk - 为啥我要使用 leader_only 命令?【英文标题】:AWS Elastic Beanstalk - why would I use leader_only for a command?AWS Elastic Beanstalk - 为什么我要使用 leader_only 命令? 【发布时间】:2013-11-14 07:25:49 【问题描述】:

我正在编写一个 django 应用程序,我计划通过 Elastic Beanstalk 将其部署到 AWS。我试图理解为什么我需要为我想为我的应用程序运行的容器命令指定“leader_only”。可以在here 找到有关此的更多详细信息。

上面写着:

此外,您可以使用 leader_only。一个实例被选为 Auto Scaling 组中的领导者。如果设置了 leader_only 值 为 true,该命令仅在标记为 领导者。

如果我有多个实例运行我的应用程序,因为我想扩展它,使用“leader_only”不会只在一个实例上运行命令,而不影响其余实例吗?我可能误解了它的目的,但这似乎并不理想,因为领导者中的环境可能与其他实例不同,最终用户可能会根据他们碰巧连接到的实例获得不同的结果。

【问题讨论】:

如下所述,但简而言之,当您只需要对堆栈运行一次时使用它。示例:运行数据库迁移。 【参考方案1】:

从技术角度来看,弹性 beanstalk 是自动缩放组,当您部署某些东西时,您需要假设您的命令可能会在多个 ec2 实例上同时执行。

leader_only 选项的主要目标是确保您的命令仅在一个 ec2 实例上执行。它对于诸如执行 db 迁移脚本、创建 db 等用例很有用,这些用例应该只在一个 ec2 上执行一次。所以leader_only只是一个标记,一些命令将只在这个实例上执行。

但是,您需要记住,leader 属性在创建环境时设置一次,以防在自动缩放组中没有任何领导者的情况下,如果领导者死亡并被新实例替换,则可能出现这种情况。

【讨论】:

我已经阅读了几年来关于 SO 的不同帖子,AWS 现在在扩大和缩小规模时正确保留了 leader_only,有什么想法吗?

以上是关于AWS Elastic Beanstalk - 为啥我要使用 leader_only 命令?的主要内容,如果未能解决你的问题,请参考以下文章

为 Elastic Beanstalk 配置 AWS Route 53 的问题

AWS Elastic Beanstalk HTTPS

AWS Elastic Beanstalk 504 网关超时

如何使用 Elastic Beanstalk 为 AWS CDK 设置环境变量?

AWS Elastic Beanstalk 运行状况检查偶尔失败

AWS Elastic Beanstalk 问题