Was möchten Sie getan haben?
Meine Discourse-Installation lief 3 Jahre lang einwandfrei. Ich habe ein manuelles Update auf Docker durchgeführt und jetzt ist alles kaputt. Ich kann nur im Wiederherstellungsmodus auf den Server zugreifen. Ich kann Docker nicht starten. Wenn ich den Server von der Festplatte starte (anstatt im Wiederherstellungsmodus), kann ich keine Verbindung über SSH herstellen.
Wann muss es erledigt sein?
Bringen Sie Discourse wieder zum Laufen!
Ich habe einen Snapshot von vor 2 Monaten, möchte aber die Daten der letzten 2 Monate lieber NICHT verlieren. Ich habe auch einen Snapshot von unmittelbar nach dem Ausfall von Docker.
Ich habe vor ein paar Stunden einen Entwickler eingestellt, der das Projekt nicht abschließen konnte, da es für ihn spät ist, aber ich muss dies so schnell wie möglich beheben. Dies ist eine Produktionsseite.
Er gab an:
Alle Standardprüfungen wurden durchgeführt, SSH funktioniert, der Datenverkehr ist nicht blockiert, wir haben die SSH-Konfiguration aktualisiert, um die passwortbasierte Authentifizierung zu verwenden. Was wir tun müssen, ist zu untersuchen, welche Schritte vor diesem Ausfall unternommen wurden und die zugehörigen Protokolle zu untersuchen.
Was ist Ihr Budget in USD, das Sie für diese Aufgabe anbieten können?
Ich zahle stundenweise für die Aufgabe, zum Marktpreis. Teilen Sie einfach Ihren Stundensatz mit.
Ein großes DANKESCHÖN an @jericson für deine Hilfe!
Hier ist, was wir schließlich getan haben:
Wiederherstellung des Zugangs zur alten Website
Anhängen eines Netzwerklaufwerks (Digital Ocean Volume Block Storage)
Zippen (Erstellen eines Tar-Archivs) der /var/discourse-Dateien
Extrahieren dieser Dateien auf das Netzwerklaufwerk
Herunterfahren des alten Servers und Trennen des Netzwerklaufwerks
Erstellen einer neuen Discourse-Organisation auf einem neuen Server
Verbinden des Netzwerklaufwerks
Entpacken der Dateien
Finden eines Backups aus dem 7-Tage-Backup
Wiederherstellen zu diesem Zeitpunkt
Wir hatten versucht, den Ordner /var/discourse komplett auf den neuen Server zu verschieben, stießen aber auf Redis-Probleme (nicht sicher, ob das die Kernprobleme waren, aber das war, was gemeldet wurde).
Ich bin nur neugierig. Es gibt ein paar aktuelle Nachrichten über fehlgeschlagene Upgrades, die mit Docker und DigitalOcean zusammenhängen. Ist das nur Zufall oder gibt es eine gemeinsame Ursache, die andere Discourse-Admins auf DigitalOcean treffen wird, wenn sie ein Upgrade durchführen? Ich frage, weil ich einer von ihnen bin.
@waffleslop@jericson gute Arbeit und danke, dass du die Infos gepostet hast, wie du es behoben hast – immer gut, eine solche Ressource als Self-Hoster zu haben, falls ich jemals Probleme bekomme!
@icaria36 Ich bin auf Digital Ocean für die meisten meiner Instanzen und habe sowohl das Betriebssystem als auch die Discourse-Codebasis kürzlich ohne Probleme aktualisiert. (Hoffentlich verfluche ich mich nicht, indem ich das poste!)
Ich kann bestätigen, dass alle Upgrades bisher einfach waren, bis gestern. Ich habe Docker über die GUI aktualisiert und es hat funktioniert. Dann wollte ich die nächsten 3 Elemente aktualisieren und drückte zuerst auf eines von ihnen (ich weiß nicht mehr, welches). Nichts geschah. Ich wartete ein paar Sekunden und drückte dann auf das andere… dann auf das andere. Vielleicht habe ich zu schnell gehandelt und die Dinge blockiert? Ich habe mich schließlich in die Konsole eingeloggt und eine Nachricht gefunden, dass ein Neustart vorgeschlagen wurde, also habe ich die Maschine neu gestartet. Sie war danach nie wieder vollständig online.
Es ist möglich, dass ich während eines Upgrades/Updates neu gestartet habe, was mir, während ich das hier schreibe, ziemlich dumm vorkommt!
Wir haben keine Zeit damit verbracht, herauszufinden, was das Problem verursacht hat, da ich @waffleslop so schnell wie möglich zum Laufen bringen wollte. Ich habe meine Discourse-Server (gehostet auf DigitalOcean) ohne Probleme aktualisiert. Allerdings benutze ich die Kommandozeile anstelle der grafischen Benutzeroberfläche, da ich eine nicht standardmäßige Installation habe.
Ich kann ein paar Dinge empfehlen, um das Risiko von längeren Ausfallzeiten zu minimieren:
Erstellen Sie ein Backup, bevor Sie etwas unternehmen! Ich frage mich, ob es eine Warnung in der Benutzeroberfläche geben sollte, die ein Backup dringend empfiehlt, bevor Sie ein Update durchführen können. Ein aktuelles Backup gibt mir die Gewissheit, dass wir im schlimmsten Fall zumindest einen neuen Droplet starten und die Dinge wiederherstellen können.
Stellen Sie sicher, dass Sie auf Ihr Backup zugreifen können!@waffleslop und ich haben einen erheblichen Teil unserer Zeit damit verbracht, herauszufinden, wie wir eine Kopie von /var/discourse auf den neuen Droplet bekommen. Mit dem ursprünglichen Droplet war etwas sehr Seltsames los, und wir konnten die Dateien nicht einfach per scp auf den neuen Droplet übertragen. Für meine eigenen Server speichere ich Backups auf S3 und kopiere sie jede Nacht auf meinen lokalen Rechner. Ist das übertrieben? Wahrscheinlich. Aber es gibt mir viele Optionen, wenn die Dinge aus irgendeinem Grund nicht mehr funktionieren.
Testen Sie Ihre Backups von Zeit zu Zeit. Wenn Ihre Produktionsserver ausgefallen sind, möchten Sie sicher sein, dass Sie wissen, was Sie tun. Idealerweise würden Sie ein Backup kurz vor einem Update testen, damit Sie im Falle von Problemen mit der Produktion eine Ausweichmöglichkeit haben. Aber es reicht normalerweise aus, ein Backup so oft wie nötig zu testen, um den Prozess in Ihrem Gedächtnis frisch zu halten.
Zwei Köpfe sind besser als einer. Vielleicht spreche ich hier aus Eigeninteresse, aber es kann viel einfacher sein, einen Notfall zu überstehen, wenn Sie Ihren Bildschirm in einem Anruf mit jemandem teilen können, der Erfahrung mit dieser Art von Situation hat. Idealerweise möchten Sie jemanden, der weiß, wie man die Kommandozeile benutzt.
Solange Sie ein Backup erstellen, sollten Sie ziemlich sicher sein, ein Upgrade durchzuführen.