AWS Elastic Beanstalk - 为什么我会使用leader_only作为命令?

时间:2013-11-03 15:53:46

标签: amazon-web-services elastic-beanstalk

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

它说:

  

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

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

1 个答案:

答案 0 :(得分:20)

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

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

但是,您需要记住,在创建环境时会设置一个leader属性,如果领导者死了,并且在自动缩放组中没有任何领导者时被新实例可能的情况所取代。< / p>