16

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

它说:

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

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

4

1 回答 1

27

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

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

但是,您需要记住,leader 属性在创建环境时设置一次,以防在自动缩放组中没有任何领导者时领导者死亡并被新实例替换。

于 2013-11-05T05:37:28.140 回答