Warum hat Amazon EC2 Auto Scaling eine fehlerhafte Instance nicht beendet?

Lesedauer: 6 Minute
0

Ich habe eine Amazon Elastic Compute Cloud (Amazon EC2)-Auto-Scaling-Gruppe eingerichtet, aber eine fehlerhafte Amazon-EC2-Instance wird nicht beendet. Wie kann ich dieses Problem beheben?

Kurzbeschreibung

Amazon EC2 Auto Scaling kann mithilfe von Amazon-EC2-Statusüberprüfungen sowie mithilfe von Zustandsprüfungen von Elastic Load Balancing (ELB) automatisch den Zustandsstatus einer Instance ermitteln. Alle Skalierungsaktionen einer Amazon-EC2-Auto-Scaling-Gruppe werden im Aktivitätsverlauf in der Amazon-EC2-Konsole protokolliert. Manchmal können Sie anhand des Aktivitätsverlaufs nicht feststellen, warum Amazon EC2 Auto Scaling eine fehlerhafte Instance nicht beendet hat.

Weitere Informationen zum Zustand einer fehlerhaften Instance und zur Beendigung dieser Instance finden Sie in der Amazon-EC2-Konsole. Überprüfen Sie die folgenden Einstellungen:

  • Health check grace period
  • Suspended processes
  • Instance state in the EC2 console
  • Instance state in Auto Scaling groups
  • ELB health checks

Behebung

Notieren Sie zunächst den Zustand der Instance in Amazon EC2 Auto Scaling:

  1. Melden Sie sich bei der Amazon-EC2-Konsole an. Wählen Sie im Navigationsbereich unter Auto Scaling die Option Auto Scaling Groups und anschließend die Gruppe der Instance aus.
  2. Wählen Sie die Ansicht Instances aus und notieren Sie den Zustandsstatus der Instance.

Health Check Grace Period

Amazon EC2 Auto Scaling beendet eine Instance, die auf der Grundlage von EC2-Statusprüfungen und ELB-Zustandsprüfungen in Betrieb genommen wurde, erst, wenn die Frist für die Zustandsprüfung health-check grace period abgelaufen ist. Um die Länge der Nachfrist zu ermitteln:

  1. Wählen Sie im Navigationsbereich der Amazon-EC2-Konsole unter Auto Scaling die Option Auto Scaling Groups und anschließend die Gruppe der Instance aus.
  2. Wählen Sie die Ansicht Details aus und sehen Sie sich die unter Health Check Grace Period angegebene Länge an.

Suspended Processes

Die Unterbrechung von Prozessen wie „HealthCheck“, „ReplaceUnhealthy“ oder „Terminate“ beeinträchtigt die Fähigkeit von Amazon EC2 Auto Scaling, fehlerhafte Instances zu erkennen, zu ersetzen oder zu beenden:

  1. Wählen Sie im Navigationsbereich der Amazon-EC2-Konsole unter Auto Scaling die Option Auto Scaling Groups und anschließend die Gruppe der Instance aus.
  2. Wählen Sie die Ansicht Details aus.
  3. Wählen Sie Edit aus und entfernen Sie alle der folgenden Prozesse in Suspended Processes, sofern vorhanden: HealthCheck, ReplaceUnhealthy, oder Terminate.
  4. Wählen Sie Save aus, um die Prozesse fortzusetzen.

Instance State in Amazon EC2 Console

Amazon EC2 Auto Scaling beendet Instances mit dem Status „Impaired“ nicht sofort. Stattdessen wartet Amazon EC2 Auto Scaling einige Minuten darauf, dass die Instance wiederhergestellt wird. So überprüfen Sie, ob eine Instance beeinträchtigt ist:

  1. Wählen Sie im Navigationsbereich der Amazon-EC2-Konsole unter Instances die Option Instances und anschließend die Instance aus.
  2. Wählen Sie die Ansicht Status Checks aus und notieren Sie, sollte der Status der Instance Impaired lautet.

Es kann auch vorkommen, dass Instances, die keine Daten für Statusüberprüfungen melden, von Amazon EC2 Auto Scaling verzögert oder nicht beendet werden. Das passiert in der Regel, wenn für die Statusüberprüfungsmetriken in Amazon CloudWatch nicht genügend Daten vorhanden sind. So beenden Sie diese Instances manuell:

  1. Wählen Sie im Navigationsbereich der Amazon-EC2-Konsole unter Instances die Option Instances und anschließend die Instance aus.
  2. Wählen Sie die Ansicht Monitoring aus und notieren Sie den Status der Instance.
  3. Lautet der Status Insufficient Data, wählen Sie die Instance erneut aus, und wählen Sie dann das Menü Actions, die Option Instance State und anschließend Terminate aus.

Instance State in Auto Scaling Group

Amazon EC2 Auto Scaling führt keine Zustandsprüfungen für Instances im Standby-Zustand durch. So versetzen Sie Standby-Instances wieder in den Zustand „InService“:

  1. Wählen Sie im Navigationsbereich der Amazon-EC2-Konsole unter Auto Scaling Groups die Gruppe der Instance und anschließend die Ansicht Instances aus.
  2. Wählen Sie das Filtermenü Any Lifecycle State und anschließend Standby aus.
  3. Öffnen Sie zum Fortsetzen von Zustandsprüfungen per Rechtsklick das Kontextmenü für eine Instance und wählen Sie dann Set to InService aus, wodurch der Standby-Zustand beendet wird.

Amazon EC2 Auto Scaling wartet mit der Beendigung einer Instance, wenn auf den Abschluss eines Lebenszyklus-Hooks gewartet wird. So können Sie den Lebenszyklusstatus ermitteln und den Lebenszyklus-Hook abschließen:

  1. Wählen Sie im Navigationsbereich der Amazon-EC2-Konsole unter Auto Scaling die Option Auto Scaling Groups und anschließend die Gruppe der Instance aus.
  2. Wählen Sie die Ansicht Instances aus und notieren Sie den Status des Lifecycle für die Instance.
  3. Lautet der Status terminating:wait, können Sie das Heartbeat-Timeout überprüfen und anschließend completing-lifecycle-action ausführen, um den Lebenszyklus-Hook abzuschließen.

Wenn Amazon EC2 Auto Scaling auf das Ende eines ELB-Connection-Draining-Zeitraums wartet, wird die Beendigung der Instance aufgeschoben:

  1. Wählen Sie im Navigationsbereich der Amazon-EC2-Konsole unter Auto Scaling die Option Auto Scaling Groups und anschließend die Gruppe der Instance aus.
  2. Wählen Sie die Ansicht Instances aus und vergewissern Sie sich, dass der Lebenszyklus Lifecycle der Instance den Wert terminating hat.
  3. Wählen Sie die Ansicht Activity History aus.
  4. Wählen Sie unter Filter die Option Waiting for ELB connection draining aus, um zu bestätigen, dass die Gruppe auf die Beendigung der Instance wartet.

ELB Health Checks

ELB-Einstellungen können sich auf Zustandsprüfungen und auf den Austausch von Instances auswirken. Sehen Sie sich den Status der Instance in der ELB-Konsole an:

  1. Wählen Sie im Navigationsbereich der Amazon-EC2-Konsole unter Load Balancing die Option Load Balancers und anschließend den Load Balancer aus, bei dem die Instance registriert ist.
  2. Wählen Sie die Ansicht Instances aus und notieren Sie den Status und die Beschreibung der Instance.

Die Ergebnisse von ELB-Zustandsprüfungen werden von Amazon EC2 Auto Scaling nicht verwendet, um den Zustandsstatus einer Instance zu ermitteln, wenn die Konfiguration der Zustandsprüfung der Gruppe auf „EC2“ festgelegt ist. Daher beendet Amazon EC2 Auto Scaling keine Instances, die ELB-Zustandsprüfungen nicht bestanden haben. Wenn eine Instance in der ELB-Konsole den Status „OutOfService“, in der Amazon-EC2-Auto-Scaling-Konsole aber den Status „Healthy“ hat, vergewissern Sie sich, dass der Typ der Zustandsprüfung auf „ELB“ festgelegt ist:

  1. Wählen Sie im Navigationsbereich der Amazon-EC2-Konsole unter Auto Scaling die Option Auto Scaling Groups und anschließend die Gruppe der Instance aus.
  2. Wählen Sie die Ansicht Details aus und notieren Sie sich den unter Health Check Type angegebenen Typ an.
  3. Wählen Sie Edit und anschließend unter Health Check Type die Option ELB aus. Wählen Sie dann Save aus.

Wenn der Typ der Zustandsprüfung der Gruppe bereits „ELB“ ist und der Status der Instance in der ELB-Konsole „OutOfService“ lautet, verwenden Sie die zuvor ermittelte Statusbeschreibung, um weitere Schritte zu bestimmen:

  • Instance registration is still in progress: Warten Sie, bis der Load Balancer die Instance-Registrierung abgeschlossen hat und die Instance sich im Zustand InService befindet.
  • Instance is in the Amazon EC2 Availability Zone for which LoadBalancer is not configured to route traffic to: Bearbeiten Sie die Subnetze der Auto-Scaling-Gruppe oder des Load Balancers, um sicherzustellen, dass sie mit den Subnetzen der Instance.
  • Die Instance hat die konfigurierte HealthyThreshold-Anzahl von Zustandsprüfungen nacheinander nicht bestanden: Warten Sie, bis ELB die Zustandsprüfungen abgeschlossen hat und die Instance in den Status InService wechselt.

Verwandte Informationen

Troubleshooting instances with failed status checks

Why did Amazon EC2 Auto Scaling terminate an instance?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren