Spot-Instanzen, die häufig in der automatischen AWS-Skalierungsgruppe beendet werden (fehlgeschlagene Systemintegritätsprüfung)

7

Wir haben 2 automatische Skalierungsgruppen (eine für On-Demand- und eine für Spot-Instanzen), die beide auf eine statische Anzahl von Instanzen eingestellt sind (min, max und gewünscht sind alle gleich - in unserem Fall 5). Die Instanzen in der On-Demand-Gruppe werden weiterhin ausgeführt, die Instanzen in der Spot-Gruppe werden jedoch häufig aufgrund einer Systemintegritätsprüfung beendet. Die Meldung, die für eine terminierte Instanz auf der Registerkarte Skalierungsverlauf in der EC2-Verwaltungskonsole angezeigt wird, lautet z.

"Am 2014-05-07T18: 06: 45Z wurde eine Instanz als Reaktion auf eine Systemintegritätsprüfung außer Betrieb genommen."

Ich weiß nicht, warum unsere Spot-Instanzen einen Gesundheitscheck nicht bestehen. Unser Angebotspreis ist hoch, und ich denke nicht, dass die Instanzen aufgrund des Spotpreises (basierend auf dem Spotpreisverlauf) hätte beendet werden müssen. Ich habe die AZs angepasst, in denen die Instanzen auch gestartet werden, und ich sehe keinen Unterschied. Ich sehe keine verdächtigen Nachrichten, wenn ich das Syslog einer kürzlich beendeten Instanz überprüfe. Wir verwenden für beide Gruppen eine private / benutzerdefinierte AMI, aber ich sehe dasselbe Verhalten, wenn ich zu einer allgemeineren AMI wechsle (das auf alestic.com aufgeführte Image "Ubuntu 12.04 LTS Precise EBS boot" - ami-5db4a934). Auch hier laufen unsere On-Demand-Instanzen weiter und bestehen keine Integritätsprüfungen. Wir verwenden den Health Check-Typ "EC2".

Hier ist der Befehl, mit dem wir unsere Startkonfiguration über die AWS-CLI erstellen:

aws autoscaling create-launch-configuration \
--launch-configuration-name [name] \
--image-id ami-5db4a934 \
--key-name [our key] \
--security-groups [our SGs] \
--instance-type m3.xlarge \
--block-device-mappings '[ { "DeviceName": "/dev/sda1", "Ebs": { "VolumeSize": 8 } } ]' \
--spot-price "1.00"

Weiß jemand, was dies sein könnte oder wie wir mehr Einblick bekommen können, warum die Spot-Instanzen die Integritätsprüfungen nicht bestehen?

Derek Morrison
quelle

Antworten:

11

Aktualisieren

Unser Angebotspreis ist hoch, und ich denke nicht, dass die Instanzen aufgrund des Spotpreises (basierend auf dem Spotpreisverlauf) hätte beendet werden müssen.

Spotpreiskonflikte sind nicht die einzige mögliche Ursache für die Beendigung einer Amazon EC2-Spotinstanz durch AWS. Ein weiterer bemerkenswerter Grund ist der Kapazitätskonflikt:

  • Die Kapazität verfügbarer Spot-Instanzen hängt von der Nachfrage nach regulären Instanzen ab. Wenn für Benutzer, die reguläre On-Demand-Instanzen anfordern, keine Instanzen eines bestimmten Typs verfügbar sind, beendet AWS Spot-Instanzen, um diese Anforderungen zu erfüllen.
  • Tatsächlich habe ich das bisher us-east-1häufiger als anderswo und im letzten Monat viel häufiger bei den neuen m3 / c3 / i3-Instanztypfamilien festgestellt (ein verständlicher Effekt, wenn die Kapazität im Laufe der Zeit erhöht wird).

Sie können die tatsächliche Ursache für die Beendigung einer Spotanforderung manuell in der AWS Management Console oder z. B. über die Beschreibung der Spotinstanzanforderungen der AWS-CLI überprüfen . Für die erweiterte Verwendung von Spot-Instanzen würde ich empfehlen, Spot-Anfragen mit Gebotsstatuscodes zu verfolgen und diese mit Ihren Instanzbeendigungen zu korrelieren, um den bestmöglichen operativen Einblick zu erhalten. Weitere Informationen finden Sie im Lebenszyklus von Spot-Anfragen und in der Referenz zum Spot-Bid-Statuscode , insbesondere zu den folgenden Gründen für die Spot-Kündigung durch AWS:

  • instance-terminated-by-price

    Der Spot-Preis stieg über Ihren Gebotspreis. Wenn es sich bei Ihrer Anfrage um ein dauerhaftes Gebot handelt, wird der Prozess oder Lebenszyklus neu gestartet und Ihr Gebot steht erneut aus.

  • instance-terminated-no-capacity

    Für die Instanz ist keine Spot-Kapazität mehr verfügbar.

  • instance-terminated-capacity-oversubscribed

    Ihre Instanz wurde beendet, weil die Anzahl der Spot-Anfragen mit Gebotspreisen, die gleich oder höher als Ihr Gebotspreis sind, die verfügbare Kapazität in diesem Pool überschritten hat. Dies bedeutet, dass Ihre Instanz unterbrochen wurde, obwohl sich der Spot-Preis möglicherweise nicht geändert hat, weil Ihr Gebot zum Spot-Preis lag.

  • instance-terminated-launch-group-constraint

    Eine der Instanzen in Ihrer Startgruppe wurde beendet, sodass die Startgruppeneinschränkung nicht mehr erfüllt ist.


Erste Antwort

"Am 2014-05-07T18: 06: 45Z wurde eine Instanz als Reaktion auf eine Systemintegritätsprüfung außer Betrieb genommen."

Diese irreführende Nachricht wird einfach gemeldet, wenn die Amazon EC2-Spotinstanz aufgrund von Spotpreiskonflikten beendet wurde. Siehe z. B. die Antwort des AWS-Teams auf die automatische Skalierung von Nachrichten und die Beendigung der Spotinstanz :

Sie haben Recht, dass die Instanz aufgrund von Spotpreisen beendet wurde.

Die Instanz wurde unmittelbar vor der Integritätsprüfung beendet, sodass sie außer Betrieb genommen wurde, da sie noch der AS-Gruppe zugeordnet war.

Es entgeht mir zwar, warum es AWS in dieser Hinsicht noch nicht gelungen ist, eine bessere Integration zwischen Auto Scaling und Amazon EC2 zu finden , aber es ist sinnvoller, wenn man bedenkt, dass es sich tatsächlich um zwei separate Dienste handelt, wenn es sich also um den "externen" Spot handelt Das Market-Backend beendet eine EC2-Instanz. Aus Sicht der automatischen Skalierung wird sie einfach "ungesund". Dies wird unter Abrufen von Informationen zu den durch die automatische Skalierung gestarteten Instanzen dokumentiert :

  • Ursache: Am 2012-06-01T00: 47: 51Z wurde eine Instanz als Reaktion auf eine Systemintegritätsprüfung außer Betrieb genommen. Beschreibung: Beenden der EC2-Instanz: i-88ce28f1 Die

    automatische Skalierung behält die gewünschte Anzahl von Instanzen bei, indem der Integritätsstatus der Instanzen in der Gruppe " Automatische Skalierung" überwacht wird. Wenn die automatische Skalierung eine Benachrichtigung erhält, dass eine Instanz fehlerhaft ist oder beendet wurde, startet die automatische Skalierung eine andere Instanz, um die fehlerhafte Instanz zu ersetzen. [...]

    Hinweis Die
    automatische Skalierung liefert die Ursache für die Beendigung der Instanz, die nicht das Ergebnis einer Skalierungsaktivität ist. Dies schließt Instanzen ein, die beendet wurden, weil der Spot-Preis ihren Angebotspreis überschritten hat . [Hervorhebung von mir]
Steffen Opel
quelle
Das ist gut zu wissen - ich habe mich gefragt, was die Nachricht war, als eine Spot-Instanz wegen des Preises beendet wurde. Ich untersuche immer noch unser Problem und glaube nicht, dass dies auf den Spotpreis zurückzuführen ist, der auf unserem hohen Gebotsbetrag (1 USD für m3.xlarge-Instanzen in den USA) und der Spotpreisentwicklung basiert.
Derek Morrison
@DerekMorrison - ich verstehe; Der Spotpreisverlauf für m3.xlargein us-east-1war in den letzten Wochen in einigen AZs tatsächlich> = 1 USD (bitte beachten Sie den Unterschied zwischen EC2 classic und VPC in dieser Hinsicht), aber angesichts Ihrer umfangreichen Debugging-Bemühungen haben Sie vermutlich bereits sehr genau hingeschaut ;) - Ich habe meine Antwort mit einem anderen häufig auftretenden Grund für die Beendigung von Spotinstanzen aktualisiert und Optionen, wie Sie durch Nachverfolgung Ihrer Spotanforderungsgebote mehr Einblick in die tatsächliche Ursache erhalten.
Steffen Opel
Danke für die ausführliche Antwort! Meine Spot-Anfragen werden mit dem Status "Instanz beendet vom Benutzer" geschlossen. Ich gehe (an dieser Stelle) davon aus, dass dies auf eine fehlgeschlagene Systemintegritätsprüfung zurückzuführen ist.
Derek Morrison
1

Egal - es war ein Problem auf unserer Seite (eine fehlerhafte Hintergrundverarbeitung, bei der Instanzen getötet wurden). Peinlich!

Derek Morrison
quelle