AWS Elastic Beanstalk - warum sollte ich leader_only für einen Befehl verwenden?

9

Ich schreibe eine Django-App, die ich über Elastic Beanstalk in AWS implementieren möchte. Ich versuche zu verstehen, warum ich "leader_only" für einen Containerbefehl angeben muss, den ich für meine App ausführen möchte. Weitere Details hierzu finden Sie hier .

Es sagt:

  

Zusätzlich können Sie leader_only verwenden. Eine Instanz wird gewählt   der Anführer in einer Auto Scaling-Gruppe. Wenn der Wert leader_only festgelegt ist   Bei true wird der Befehl nur für die Instanz ausgeführt, die als markiert ist   Anführer.

Wenn mehrere Instanzen meine App ausführen, weil ich sie skalieren möchte, würde nicht "leader_only" den Befehl nur für eine Instanz ausführen und den Rest nicht beeinflussen? Ich missverstehe wahrscheinlich den Zweck, aber das scheint nicht ideal, weil sich die Umgebung im Führer von den anderen Instanzen unterscheiden kann, und der Endbenutzer kann unterschiedliche Ergebnisse erhalten, je nachdem, mit welcher Instanz er sich gerade verbindet.

    
capcom 03.11.2013, 15:53
quelle

1 Antwort

16

Aus technischer Sicht ist elastisches Bohnenranking eine Autoscaling-Gruppe und wenn Sie etwas bereitstellen, müssen Sie davon ausgehen, dass Ihre Befehle möglicherweise gleichzeitig auf mehreren ec2-Instanzen ausgeführt werden können.

Hauptziel des leader_only Stellen Sie sicher, dass Ihre Befehle nur auf einer ec2-Instanz ausgeführt werden. Es ist nützlich für Anwendungsfälle: Ausführung der DB-Migrationsskripte, Erstellung von DB usw., die nur einmal auf einem ec2 ausgeführt werden sollten. Daher ist leader_only nur eine Markierung dafür, dass einige Befehle nur für diese Instanz ausgeführt werden.

Sie müssen jedoch bedenken, dass das Attribut "leader" einmal bei der Erstellung Ihrer Umgebung festgelegt wird und falls der Anführer stirbt und durch eine neue mögliche Situation ersetzt wird, wenn Sie keine Anführer in der Autoscaling-Gruppe haben. p>     

Vadym Fedorov 05.11.2013, 05:37
quelle