我正在编写一个django应用程序,我计划通过Elastic Beanstalk部署到AWS。我试图理解为什么我需要为我想要为我的应用运行的容器命令指定'leader_only'。有关此问题的更多详细信息,请参见here。
它说:
此外,您可以使用leader_only。选择一个实例 Auto Scaling组的领导者。如果设置了leader_only值 如果为true,则该命令仅在标记为的实例上运行 领导者。
如果我有几个实例运行我的应用程序,因为我想缩放它,不会使用'leader_only'只在一个实例上运行命令,而不影响其余的?我可能误解了它的目的,但这似乎并不理想,因为领导者的环境可能与其他实例不同,最终用户可能会得到不同的结果,具体取决于他们碰巧连接到哪个实例。
答案 0 :(得分:20)
从技术角度来看,弹性beanstalk是自动缩放组,当你部署某些东西时,你需要假设你的命令可能会在几个ec2实例上同时执行。
leader_only
选项的主要目标是确保您的命令仅在一个ec2实例上执行。它对于例如执行db迁移脚本,创建db等的用例非常有用,它们应该只在一个ec2上执行一次。所以leader_only
只是一个标记,只在这个实例上执行一些命令。
但是,您需要记住,在创建环境时会设置一个leader属性,如果领导者死了,并且在自动缩放组中没有任何领导者时被新实例可能的情况所取代。< / p>