2013-11-03 29 views
8

我正在编写一个django应用程序,我计划通过Elastic Beanstalk部署到AWS。我想了解为什么我需要指定'leader_only'作为我想为我的应用运行的容器命令。关于这方面的更多细节可以在here找到。AWS Elastic Beanstalk - 为什么我会使用leader_only作为命令?

它说:

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

如果我有几个实例运行我的应用程序,因为我想缩放它,不会使用'leader_only'只对一个实例运行该命令,而不会影响其余的?我可能误解了它的目的,但这似乎并不理想,因为领导者的环境可能与其他实例不同,并且最终用户可能得到不同的结果,这取决于他们碰巧连接到哪个实例。

+0

如下所述,为了简洁起见,仅在需要对堆栈运行一次时才会使用它。示例:运行数据库迁移。 –

回答

15

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

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

但是,您需要记住,领导者属性在创建环境时设置一次,并且如果领导者死了,并且被新实例可能情况取代,那么当您在自动缩放组中没有任何领导者时。

相关问题