Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Tutorial: Aktualisieren von Anwendungsabhängigkeiten, Patchen eines verwalteten Knotens und Durchführen einer anwendungsspezifischen Zustandsprüfung mithilfe der Konsole
In vielen Fällen muss ein verwalteter Knoten neu gestartet werden, nachdem er mit dem neuesten Softwareupdate gepatcht wurde. Ein Neustart eines verwalteten Knotens in der Produktion ohne vorhandene Sicherheitsvorkehrungen kann jedoch mehrere Probleme verursachen, z. B. das Aufrufen von Alarmen, das Aufzeichnen falscher Metrikdaten und das Unterbrechen von Datensynchronisationen.
Diese Anleitung zeigt, wie Sie Probleme wie diese vermeiden können, indem Sie das AWS Systems Manager
-Dokument (SSM-Dokument) AWS-RunPatchBaselineWithHooks
verwenden, um einen komplexen, mehrstufigen Patchvorgang zu erreichen, der Folgendes ausführt:
-
Verhindern neuer Verbindungen mit der Anwendung
-
Installieren von Betriebssystem-Updates
-
Aktualisieren der Paketabhängigkeiten der Anwendung
-
Neustart des Systems
-
Durchführen einer anwendungsspezifischen Zustandsprüfung
Für dieses Beispiel haben wir unsere Infrastruktur auf diese Weise eingerichtet:
-
Die anvisierten virtuellen Maschinen werden als verwaltete Knoten mit Systems Manager registriert.
-
Iptables
wird als lokale Firewall verwendet. -
Die auf den verwalteten Knoten gehostete Anwendung wird auf Port 443 ausgeführt.
-
Die Anwendung, die auf den verwalteten Knoten gehostet wird, ist eine
nodeJS
-Anwendung. -
Die auf den verwalteten Knoten gehostete Anwendung wird vom pm2-Prozessmanager verwaltet.
-
Die Anwendung verfügt bereits über einen angegebenen Zustandsprüfungs-Endpunkt.
-
Der Endpunkt der Zustandsprüfung der Anwendung erfordert keine Endbenutzerauthentifizierung. Der Endpunkt ermöglicht eine Zustandsprüfung, die die Anforderungen der Organisation beim Festlegen der Verfügbarkeit erfüllt. (In Ihrer Umgebung reicht es möglicherweise aus, sicherzustellen, dass die
nodeJS
-Anwendung ausgeführt wird und in der Lage ist, auf Anfragen zu warten. In anderen Fällen möchten Sie möglicherweise überprüfen, ob bereits eine Verbindung zur Caching-Ebene oder zur Datenbankebene hergestellt wurde).
Die Beispiele in dieser Anleitung dienen nur zu Demonstrationszwecken und sind nicht dafür gedacht, in Produktionsumgebungen implementiert zu werden. Denken Sie auch daran, dass die Lifecycle-Hooks-Funktion von Patch Manager, ein Tool in Systems Manager, mit dem AWS-RunPatchBaselineWithHooks
Dokument können zahlreiche andere Szenarien unterstützt werden. Im Folgenden finden Sie einige Beispiele.
-
Stoppen Sie einen Metriken meldenden Agenten, bevor Sie ihn patchen und neu starten, nachdem der verwaltete Knoten neu gestartet wurde.
-
Trennen Sie den verwalteten Knoten vor dem Patchen von einem CRM- oder PCS-Cluster und fügen Sie sie nach dem Neustart des Knoten erneut an.
-
Aktualisieren Sie Software von Drittanbietern (z. B. Java, Tomcat, Adobe-Anwendungen usw.) auf Windows Server Computer, nachdem Betriebssystem-Updates (OS) installiert wurden, aber bevor der verwaltete Knoten neu gestartet wird.
So aktualisieren Sie Anwendungsabhängigkeite, patchen einen verwalteten Knoten und führen eine anwendungsspezifische Zustandsprüfung durch
-
Erstellen Sie ein SSM-Dokument für Ihr Vorinstallations-Skript mit dem folgenden Inhalt und geben Sie ihm den Namen
NodeJSAppPrePatch
. Ersetzen Sieyour_application
mit dem Namen Ihrer Anwendung.Dieses Skript blockiert sofort neue eingehende Anforderungen und lässt fünf Sekunden, damit bereits aktive Anforderungen abgeschlossen werden können, bevor der Patchvorgang gestartet wird. Für die
sleep
-Option geben Sie einen Wert in Sekunden an, der größer ist als die Dauer, bis eingehende Anforderungen normalerweise abgeschlossen werden.# exit on error set -e # set up rule to block incoming traffic iptables -I INPUT -j DROP -p tcp --syn --destination-port 443 || exit 1 # wait for current connections to end. Set timeout appropriate to your application's latency sleep 5 # Stop your application pm2 stop
your_application
Informationen zum Erstellen von SSM-Dokumenten finden Sie unter Erstellen von SSM-Dokumentinhalten.
-
Erstellen Sie ein weiteres SSM-Dokument mit folgendem Inhalt für Ihr Postinstall-Skript, um Ihre Anwendungsabhängigkeiten zu aktualisieren, und nennen Sie es
NodeJSAppPostPatch
./your/application/path
Ersetzen Sie durch den Pfad zu Ihrer Anwendung.cd
/your/application/path
npm update # you can use npm-check-updates if you want to upgrade major versions -
Erstellen Sie ein weiteres SSM-Dokument mit folgendem Inhalt für Ihr
onExit
-Skript, um Ihre Anwendung zu sichern und eine Zustandsprüfung durchzuführen. Nennen Sie dieses SSM-DokumentNodeJSAppOnExitPatch
. Ersetzen Sieyour_application
mit dem Namen Ihrer Anwendung.# exit on error set -e # restart nodeJs application pm2 start
your_application
# sleep while your application starts and to allow for a crash sleep 10 # check with pm2 to see if your application is running pm2 pidyour_application
# re-enable incoming connections iptables -D INPUT -j DROP -p tcp --syn --destination-port # perform health check /usr/bin/curl -m 10 -vk -A "" http://localhost:443/health-check || exit 1 -
Erstellen Sie eine Assoziation in State Manager, ein Tool in AWS Systems Manager, um den Vorgang auszuführen, indem Sie die folgenden Schritte ausführen:
Öffnen Sie die AWS Systems Manager Konsole unter https://console.aws.amazon.com/systems-manager/
. -
Wählen Sie im Navigationsbereich State Manager, und wählen Sie dann Verknüpfung erstellen aus.
-
Für Name geben Sie einen Namen ein, um den Zweck der Zuordnung zu identifizieren.
-
Wählen Sie in der Liste Dokument die Option
AWS-RunPatchBaselineWithHooks
aus. -
Wählen Sie für Operation die Option Install (Installieren) aus.
-
(Optional) Für Snapshot-ID, stellen Sie eine GUID bereit, die Sie generieren, um den Vorgang zu beschleunigen und Konsistenz zu gewährleisten. Der GUID-Wert kann so einfach sein wie
00000000-0000-0000-0000-111122223333
. -
Für Pre Install Hook Doc Name geben Sie
NodeJSAppPrePatch
ein. -
Für Post Install Hook Doc Name geben Sie
NodeJSAppPostPatch
ein. -
Geben Sie für On ExitHook Doc-Name den Wert ein
NodeJSAppOnExitPatch
.
-
Für Targets (Ziele), identifizieren Sie Ihre verwalteten Knoten, indem Sie Tags angeben, Knoten manuell auswählen, eine Ressourcengruppe auswählen oder alle verwaltete Knoten auswählen.
-
Für Specify schedule (Zeitplan angeben) geben Sie an, wie oft die Zuordnung ausgeführt werden soll. Für einen verwalteten Knoten ist das Patchen einmal pro Woche beispielsweise eine übliche Kadenz.
-
Wählen Sie im Abschnitt Rate control (Ratensteuerung) Optionen für die Ausführung der Zuordnung auf mehreren verwalteten Knoten aus. Stellen Sie sicher, dass nur ein Teil der verwalteten Knoten gleichzeitig aktualisiert wird. Andernfalls könnte die gesamte oder die meisten Ihrer Flotte gleichzeitig offline geschaltet werden. Weitere Informationen zu Ratensteuerungen finden Sie unter Grundlegendes zu Zielen und Ratenkontrollen in State Manager Verbände.
(Optional) Wenn Sie im Abschnitt Ausgabeoptionen die Befehlsausgabe in einer Datei speichern möchten, aktivieren Sie das Kontrollkästchen Schreiben der Ausgabe in S3 aktivieren. Geben Sie die Namen für den Bucket und das Präfix (Ordner) in die Textfelder ein.
Anmerkung
Die S3-Berechtigungen zum Schreiben von Daten in einen S3-Bucket sind die Berechtigungen des dem verwalteten Knoten zugewiesenen Instance-Profils und nicht diejenigen des IAM-Benutzers, der diese Aufgabe ausführt. Weitere Informationen finden Sie unter Instance-Berechtigungen für Systems Manager konfigurieren oder Eine IAM-Servicerolle für eine Hybrid-Umgebung erstellen. Wenn sich der angegebene S3-Bucket in einem anderen befindet, stellen Sie außerdem sicher AWS-Konto, dass das Instanzprofil oder die IAM-Dienstrolle, die dem verwalteten Knoten zugeordnet sind, über die erforderlichen Berechtigungen verfügt, um in diesen Bucket zu schreiben.
-
Wählen Sie Zuordnung erstellen.