Serverausfall & Migration

Der DigitalOcean-Server, der meine Discourse-Website hostet, hatte offenbar ein Problem, und DigitalOcean versucht, meine Website auf einen anderen Server zu migrieren. Ich stehe bereits mit dem Support in Kontakt, aber ich wollte fragen, ob jemand in der Discourse-Community bereits eine ähnliche Erfahrung gemacht hat.

Hat jemand Tipps für diese Situation? Werden Nutzer normalerweise benachrichtigt, sobald der Vorgang abgeschlossen ist? Bisher habe ich noch keine Antwort auf meine E-Mails erhalten. Meine Website ist seit einigen Tagen komplett offline, was für meine Community nicht gut ist. Ich habe keine Änderungen an Discourse vorgenommen, daher weiß ich, dass das Problem durch das Serverproblem bei DigitalOcean verursacht wurde. Gibt es etwas Bestimmtes, das ich auf meiner Seite tun sollte, oder sollte ich einfach noch etwas warten?

Ich habe den Droplet aus- und wieder eingeschaltet und Discourse mit ./launcher rebuild app neu aufgebaut. Nach dem Neuaufbau erhalte ich diesen Fehler:

Error response from daemon: driver failed programming external connectivity on endpoint app (fd1221330787160dee95f94a1256ca0dc8ddb8be2bc3c4d576ab54d3b768613a): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.

E-Mail von DigitalOcean:

Wir haben ein Problem auf dem physischen Server identifiziert, auf dem einer oder mehrere Ihrer Droplets gehostet werden, die unten aufgeführt sind. Um Störungen zu minimieren, werden wir die Droplets auf einen gesünderen physischen Server migrieren. Während der Migration werden Aktionen im Control Panel und über die API – einschließlich: Herunterfahren, Ändern der Größe und Versuche, den Droplet zu löschen – für die betroffenen Droplets nicht erfolgreich sein.

Um Ausfallzeiten zu minimieren, werden wir in allen möglichen Fällen eine Live-Migration durchführen. Eine Live-Migration würde keine Ausfallzeit bedeuten, jedoch zu leichten Leistungseinbußen bei der Festplatten-E/A und zu einem Paketverlust von weniger als einer Sekunde führen, während das Netzwerk auf den neuen physischen Host umgeschaltet wird.

Falls wir keine Live-Migration eines Droplets durchführen können, führen wir eine Offline-Migration durch, bei der der Droplet heruntergefahren und im Zeitfenster offline migriert wird.

Meine Vermutung ist, dass die Digital Ocean-Sache nichts damit zu tun hat und dass auf deinem Server irgendwie ein anderer Webserver installiert oder aktiv ist. Ist Apache oder Nginx installiert? Startet ein Webserver auf deiner Seite, obwohl Discourse nicht läuft?

Ich habe beim ursprünglichen Einrichten den DigitalOcean Discourse-Automatik-Installer verwendet. Dieser nutzt Ubuntu sowie weitere vorinstallierte Pakete. Auf diesem Droplet sind keine weiteren Websites gehostet. Es scheint, als wäre Nginx aktiv und läuft. Der Apache-Status meldet einen Fehler.

So sieht die Seite in Firefox aus, wenn sie aufgerufen wird:

Error 521Ray ID: 5c686964ad310d1a • 2020-08-22 00:17:35 UTC
Web server is down

Browser - Cloudflare - Host
Working - Working - Error

Ich habe den Befehl systemctl status apache2 ausgeführt, um zu prüfen, ob Apache läuft. Die Ausgabe lautet:

    ● apache2.service - The Apache HTTP Server
       Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
      Drop-In: /lib/systemd/system/apache2.service.d
               └─apache2-systemd.conf
       Active: failed (Result: exit-code) since Fri 2020-08-21 16:16:24 UTC; 7h ago
      Process: 912 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILUR
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: AH0055
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: (98)Ad
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: (98)Ad
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: no lis
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: AH0001
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: Action
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: The Ap
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: apache2.se
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: apache2.se
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: Failed to 
lines 1-17/17 (END)

Außerdem habe ich den Befehl systemctl status nginx ausgeführt, um Nginx zu prüfen. Die Ausgabe lautet:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running) since Fri 2020-08-21 16:16:24 UTC; 8h ago
     Docs: man:nginx(8)
  Process: 972 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=
  Process: 917 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process o
 Main PID: 976 (nginx)
    Tasks: 2 (limit: 1108)
   CGroup: /system.slice/nginx.service
           ├─976 nginx: master process /usr/sbin/nginx -g daemon on; master_proc
           └─977 nginx: worker process

Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: Starting A
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: nginx.serv
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: Started A
lines 1-15/15 (END)

Wenn man sich diese E-Mail anschaut, sieht es so aus, als könntest du einfach abwarten und sehen, was sie tun. Ich würde aber auf jeden Fall ein Backup außerhalb des Servers erstellen, nur für den Fall!

Im Allgemeinen ist es viel besser, die offizielle Installationsmethode zu verwenden. Wenn du diesen Droplet nicht zusätzlich für etwas anderes als Discourse nutzt, würde ich empfehlen, diese Gelegenheit zu nutzen, um mit einem neuen Droplet ganz von vorne zu beginnen und die offiziellen, unterstützten Anweisungen hier zu befolgen: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

Anschließend kannst du ein Backup von deiner alten Instanz herunterladen und auf deine neue Instanz hochladen. So bist du wieder betriebsbereit – mit einer Instanz, die offiziell unterstützt wird und einfacher zu warten ist.