Wie kann man das unveränderliche Servermuster implementieren, ohne die Fähigkeit zu verlieren, Post-Mortems durchzuführen?

12

Das unveränderliche Servermuster ist eine Bereitstellungsdisziplin, die die Reproduzierbarkeit von Bereitstellungen begünstigt. Es zeichnet sich dadurch aus, dass „ ein Server, der einmal bereitgestellt wurde, niemals geändert, sondern lediglich durch eine neue aktualisierte Instanz ersetzt wird “ und die Implementierung dieser Disziplin eine Automatisierung der Serverbereitstellung erfordert. Diese Automatisierung bietet zahlreiche betriebliche Vorteile. Eine der wichtigsten ist das schnelle und zuverlässige Ersetzen fehlerhafter Instanzen in einer Infrastruktur. Diese Automatisierung impliziert auch, dass die Serverbereitstellung durch versionierte Software-Artefakte beschrieben wird und iterativen Verbesserungen unterliegt.

Ein beliebter Aspekt bei Implementierungen dieser Disziplin ist das Entfernen von RAS-Methoden auf den Server nach dessen Start (insbesondere das Entfernen des SSH-Zugriffs). Durch Entfernen des Remotezugriffs können Sie auf einfache Weise sicherstellen, dass die Konfiguration des Servers mit der von der Bereitstellungsautomatisierung vorbereiteten Konfiguration übereinstimmt.

Bei der Untersuchung der Ursachen eines Softwarefehlers in einem reicht es jedoch nicht immer aus, sich auf eine strukturierte Überwachung zu verlassen, und es kann ein Fernzugriff auf die Maschine erforderlich sein. Es ist eine übliche praktische Situation, dass die Serverüberwachung nicht alle Fehlerquellen abdeckt oder dass die Überwachung durch den Serverausfall selbst beeinträchtigt werden kann. Dies ist wahrscheinlich der Fall, wenn der Server nicht genügend Arbeitsspeicher hat oder sein Prozesslimit erreicht.

Wie kann man das unveränderliche Servermuster implementieren, ohne die Fähigkeit zu verlieren, Post-Mortems durchzuführen?

Michael Le Barbier Grünewald
quelle

Antworten:

9

Erstens entfernt das Entfernen von ssh auf einem unveränderlichen Server nicht, dass keine Änderungen vorgenommen werden. Da keine Änderung erforderlich ist, reduzieren Sie die Angriffsfläche, indem Sie einen RAS-Kanal entfernen.

Eine Möglichkeit, eine Art Post-Mortem beizubehalten, ist die Protokollzentralisierung. Es gibt eine Vielzahl von Methoden, um dies zu erreichen, ELK-Stack, Splunk, Syslog ...

Eine andere gröbere Möglichkeit, ein Post-Mortem für einen unveränderlichen Server beizubehalten, besteht darin, ein Skript zum Herunterfahren zu erstellen (ein unveränderlicher Server, der ausfällt, wird heruntergefahren und ein neuer wird hochgefahren, um ihn zu ersetzen), um einen Kernspeicherauszug des Programms zu erstellen, a Speicherauszug und senden Sie sie zusammen mit den meisten Protokollen zur Analyse an ein Remote-System.

Der Hauptvorteil dieser Lösung besteht darin, dass Sie zum Zeitpunkt des Problems nur fehlerhafte Systeminformationen zurückerhalten, sodass Sie größere Informationen sammeln können, als sie regelmäßig abrufen.

Es ist schwer, genauer zu sagen, wie dies erreicht werden soll. Jede Distribution hat eine Möglichkeit, Dinge zu bekommen, und ich habe kein allgemeines Beispiel.

Tensibai
quelle
7

Die Tatsache, dass Sie keinen SSH-Zugriff haben, bedeutet nicht, dass es keine Möglichkeit gibt, auf den Computer zuzugreifen. Höchstwahrscheinlich werden Sie es auf einem Cloud-Betreiber ausführen, wo Sie auch Folgendes tun können:

  • Machen Sie einen Schnappschuss von der Maschine. Sie können einfach eine Momentaufnahme der Box machen, bevor Sie sie zur späteren Analyse zerstören.
  • Greifen Sie über die Konsole auf die Maschine zu. Wahrscheinlich benötigen Sie hierfür das Root-Passwort, aber einige Cloud-Anbieter können jederzeit ein zufälliges Root-Passwort für den Konsolenzugriff eingeben.

Hierbei handelt es sich im Wesentlichen um "physischen" Zugriff auf Ihren Computer, der auch dann verfügbar ist, wenn Sie andere Zugriffstypen entfernen. Sie können diese Schnittstellen jedoch auch einschränken.

Abgesehen davon, wie @Tensibai sagte, ist es besser, eine ordnungsgemäße Protokollierung und Überwachung einzurichten. Jedes Mal, wenn Sie eine Obduktion durchführen müssen, stehen dafür genügend Daten zur Verfügung.

SztupY
quelle
4
Um dem Konsolenzugriff entgegenzuwirken, bietet AWS EC2 keinen Konsolenzugriff. Wenn Sie SSH nicht konfigurieren, haben Sie keinen Zugriff auf den Computer. Das Erstellen eines Snapshots des Computervolumens kann hilfreich sein, indem Sie es als neue Festplatte in einer "forensischen" Instanz bereitstellen, um die Daten zu analysieren.
Tensibai