Wie verwende ich EC2Rescue für Linux, um Probleme auf Betriebssystemebene zu beheben?

Lesedauer: 6 Minute
0

Ich kann keine Verbindung zu meiner Linux-Instance in der Amazon Elastic Compute Cloud (Amazon EC2) herstellen oder ich habe Startprobleme. Um diese Probleme zu beheben, muss ich häufig auftretende Probleme wie OpenSSH-Dateiberechtigungen beheben oder Protokolle des Systems (OS) zur Analyse und Fehlerbehebung heraussuchen. Wie kann ich dazu EC2Rescue für Linux verwenden?

Kurzbeschreibung

EC2Rescue für Linux ist ein Tool, das bei der Diagnose und Behebung von Problemen mit Linux-Instances von Amazon EC2 hilft. EC2Rescue für Linux wird in Ihrer Linux-Instance von Amazon EC2 ausgeführt, um Probleme auf Betriebssystemebene zu beheben. EC2Rescue für Linux erfasst darüber hinaus erweiterte Protokolle, Systemnutzungsberichte und Konfigurationsdateien für weitere Analysen.

Häufige Szenarien, die von EC2Rescue für Linux behandelt werden:

  • Erfassen von Berichten zur Systemnutzung wie vmstat, iostat, mpstat usw.
  • Erfassen von Protokollen und Details wie syslog, dmesg, Anwendungsfehlerprotokolle und SSM-Protokolle.
  • Erkennen von Systemproblemen wie asymmetrisches Routing oder doppelte Bezeichnungen von Root-Geräten.
  • Automatische Behebung von Systemproblemen wie die Korrektur von OpenSSH-Dateiberechtigungen oder die Deaktivierung bekannter problematischer Kernelparameter.

Anforderungen an das System

EC2Rescue für Linux erfordert eine Linux-Instance von Amazon EC2, die folgende Voraussetzungen erfüllt:

Unterstützte Betriebssysteme

  • Amazon Linux 2
  • Amazon Linux 2016.09+
  • SLES 12+
  • RHEL 7+
  • Ubuntu 16.04+

Anforderungen an die Software

  • Python 2.7.9+ oder 3.2+

**Hinweis:**Wenn Sie die serielle EC2-Konsole für Linux aktiviert haben, können Sie damit Probleme mit unterstützten Nitro-basierten Instance-Typen beheben. Die serielle Konsole hilft Ihnen bei der Behebung von Startproblemen, Netzwerkkonfigurationen und SSH-Konfigurationsproblemen. Die serielle Konsole stellt eine Verbindung zu Ihrer Instance her, ohne dass eine funktionierende Netzwerkverbindung erforderlich ist. Sie können auf die serielle Konsole über die Amazon EC2-Konsole oder das AWS Command Line Interface (AWS CLI) zugreifen.

Bevor Sie die serielle Konsole verwenden, müssen Sie Zugriff auf die Konsole auf Kontoebene gewähren. Erstellen Sie Richtlinien für das AWS Identity and Access Management (IAM), die Ihren IAM-Benutzern Zugriff gewähren. Darüber hinaus muss jede Instance, welche die serielle Konsole verwendet, mindestens einen passwortbasierten Benutzer enthalten. Wenn Ihre Instance nicht erreichbar ist und Sie den Zugriff auf die serielle Konsole nicht konfiguriert haben, folgen Sie der Anleitung im Abschnitt Lösung. Informationen zur Konfiguration der seriellen EC2-Konsole für Linux finden Sie unter Konfigurieren des Zugriffs auf die serielle EC2-Konsole.

**Hinweis:**Wenn Sie beim Ausführen von Befehlen im AWS CLI Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste Version des AWS CLI verwenden.

Lösung

Gehen Sie wie folgt vor, um Probleme mit einer nicht erreichbaren Linux-Instance von Amazon EC2 mithilfe von EC2Rescue für Linux zu beheben:

1.    Starten Sie eine neue Amazon EC2-Instance in Ihrer Virtual Private Cloud (VPC) mit demselben Amazon Machine Image (AMI) und in derselben Availability Zone wie die beeinträchtigte Instance. Die neue Instance wird zu Ihrer „Rettungs“-Instance. Sie können aber auch eine vorhandene Instance verwenden, auf die Sie zugreifen können, wenn sie dasselbe AMI verwendet und sich in derselben Availability Zone befindet wie Ihre beeinträchtigte Instance.

2.    Trennen Sie das Root-Volume des Amazon Elastic Block Store (Amazon EBS) (/dev/xvda oder /dev/sda1) von Ihrer beeinträchtigten Instance. Notieren Sie sich den Gerätenamen, um sicherzustellen, dass er derselbe ist, wenn Sie es später wieder anschließen

3.    Schließen Sie das EBS-Volume als sekundäres Gerät (/dev/sdf) an die Rettungs-Instance an.

4.    Stellen Sie mithilfe von SSH eine Verbindung zu Ihrer Rettungs-Instance her.

5.    Definieren Sie das Gerät als Root, identifizieren Sie den korrekten Gerätenamen mit lsblk und speichern Sie diesen, um ihn während des gesamten Vorgangs verwenden zu können:

$ sudo -i
# lsblk
# rescuedev=/dev/xvdf1

Hinweis: Das Gerät (/dev/xvdf1) ist möglicherweise mit einem anderen Gerätenamen an die Rettungs-Instance angeschlossen. Verwenden Sie den Befehl lsblk, um Ihre verfügbaren Festplattengeräte zusammen mit ihren Mount-Points anzuzeigen und die richtigen Gerätenamen zu ermitteln.

6.    Wählen Sie einen geeigneten temporären Mount-Point aus und stellen Sie sicher, dass er vorhanden ist. Verwenden Sie /mnt, sofern dieser nicht bereits verwendet wird.

# rescuemnt=/mnt
# mkdir -p $rescuemnt

7.    Mounten Sie das Root-Dateisystem vom angeschlossenen Volume:

# mount $rescuedev $rescuemnt

**Hinweis:**Wenn der Volume-Mount fehlschlägt, überprüfen Sie dmesg | tail. Wenn die Protokolle auf eine widersprüchliche UUID hinweisen, verwenden Sie die Option -o nouuid.

8.    Mounten Sie spezielle Dateisysteme und ändern Sie das Stammverzeichnis (chroot) auf das neu gemountete Dateisystem:

# for i in proc sys dev run; do mount --bind /$i $rescuemnt/$i ; done
# chroot $rescuemnt

9.     Laden Sie das EC2Rescue-Tool für Linux herunter und installieren Sie es auf einem Offline-Root-Volume für Linux:

# curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz
# tar -xf ec2rl.tgz

10.    Überprüfen Sie die Installation, indem Sie die Hilfedatei aufrufen:

# cd ec2rl-<version_number>
# ./ec2rl help

11.    Führen Sie EC2Rescue für Linux ohne Optionen aus, um alle Module auszuführen:

# ./ec2rl run

12.    Sehen Sie sich die Ergebnisse in /var/tmp/ec2rl an:

# cat /var/tmp/ec2rl/*/Main.log | more

13.    Aktivieren Sie die Problembehebung für die unterstützten Module auf der Grundlage der Ergebnisse:

# ./ec2rl run --remediate

14.    Wenn die Reparatur abgeschlossen ist, beenden Sie chroot und unmounten Sie das sekundäre Gerät:

# exit
# umount $rescuemnt/{proc,sys,dev,run,}

Hinweis: Wenn der Unmount-Vorgang nicht erfolgreich ist, müssen Sie möglicherweise die Rettungs-Instance beenden oder neu starten, um eine saubere Deinstallation zu ermöglichen.

15.    Trennen Sie das sekundäre Volume (/dev/sdf) von der Rettungs-EC2-Instance und schließen Sie es dann als /dev/xvda oder /dev/sda1 (Root-Volume) an die ursprüngliche Instance an. Stellen Sie sicher, dass diese mit dem in Schritt 2 beschriebenen übereinstimmt.

16.    Starten Sie die EC2-Instance und vergewissern Sie sich, dass die Instance reagiert.

Hinweis: Sie können auch ein Dokument der AWS Systems Manager Automation verwenden, um Verbindungsprobleme zu beheben. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Ausführen des EC2Rescue-Tools auf nicht erreichbaren Instanzen. Das Dokument AWSSupport-ExecuteEC2Rescue wurde entwickelt, um Schritte zu automatisieren, die normalerweise für die Verwendung von EC2Rescue für Linux erforderlich sind. Diese Schritte sind eine Kombination aus Aktionen des Systems Managers, der AWS CloudFormation und AWS Lambda-Funktionen.

Zusätzliche Problembehebung


Ähnliche Informationen

Wiederherstellen von beeinträchtigten Instances mithilfe von EC2Rescue und Amazon EC2 Systems Manager Automation

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren