Sidekiq läuft nicht. Sidekiq-Heartbeat-Test fehlgeschlagen, Neustart

Ich frage mich, ob ich dieses Problem lösen kann, indem ich Redis entweder leere oder aktualisiere; es wurde in den letzten 8+ Monaten kaum verändert. Ich habe persönlich noch nie mit Redis gearbeitet, aber unsere Tests-Pass-Discourse-Instanz wurde mit local_discourse eingerichtet und nicht mit dem Discourse Docker, das in diesem Forum jetzt empfohlen wird. Die Probleme, auf die ich stoße, betreffen das Nicht-Versenden von E-Mails an Benutzer. Jegliche Hilfe und Vorschläge sind willkommen!

Sidekiq läuft nicht. Viele Aufgaben, wie das Versenden von E-Mails, werden asynchron von Sidekiq ausgeführt. Stellen Sie sicher, dass mindestens ein Sidekiq-Prozess läuft.

Sidekiq-Herzschlag-Test fehlgeschlagen, Neustart

config/unicorn.conf.rb:147:in `check_sidekiq_heartbeat
config/unicorn.conf.rb:164:in `master_sleep'
unicorn-5.5.4/lib/unicorn/http_server.rb:296:in `join'
unicorn-5.5.4/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

Wenn eine Migration sinnvoll ist, bin ich für Vorschläge offen.

Ich empfehle, ein Backup deiner aktuellen Installation zu erstellen und eine komplett neue Installation gemäß der offiziellen Standardinstallation von Discourse durchzuführen.

Das ist seit mindestens den letzten 4 Jahren die Empfehlung.

Ich unterstütze Rafaeles Vorschlag.

Würde es helfen, wenn ich den Launcher verwende, um den Redis-Container neu zu erstellen oder neu zu starten?

Verwendung: launcher COMMAND CONFIG [–skip-prereqs] [–docker-args STRING]
Befehle:
start: Einen Container starten/initialisieren
stop: Einen laufenden Container stoppen
restart: Einen Container neu starten
destroy: Einen Container stoppen und entfernen
enter: Eine Shell öffnen, um Befehle innerhalb des Containers auszuführen
logs: Die Docker-Protokolle für einen Container anzeigen
bootstrap: Einen Container basierend auf einer Vorlage für die Konfiguration initialisieren
run: Den angegebenen Befehl mit der Konfiguration im Kontext des zuletzt initialisierten Images ausführen
rebuild: Einen Container neu erstellen (alten zerstören, initialisieren, neuen starten)
cleanup: Alle Container entfernen, die seit mehr als 24 Stunden gestoppt sind
start-cmd: Den Docker-Befehl generieren, der zum Starten des Containers verwendet wird

Optionen:
–skip-prereqs Keine Überprüfung der Launcher-Voraussetzungen
–docker-args Zusätzliche Argumente beim Ausführen von Docker übergeben
–skip-mac-address Keine MAC-Adresse zuweisen
–run-image Das für den Start des Containers verwendete Image überschreiben

Haben Sie die Installation gemäß dem offiziellen Standard-Installationsleitfaden von Discourse oder auf eine andere Weise durchgeführt? Wenn Sie eine Standardinstallation haben, wird der Befehl ./launcher rebuild app Ihr Problem höchstwahrscheinlich lösen.

Noch nicht, aber wir planen einen Zeitpunkt für die Migration. Unser Discourse läuft seit fast drei Jahren, und ich möchte einfach keine unnötigen Ausfallzeiten hinzufügen. :slight_smile: Unsere Instanz wird ausschließlich von Freiwilligen gewartet, daher habe ich mir im letzten Monat selbst beigebracht, wie man sie verwaltet. Wenn eine schnelle Redis-Reparatur hilft (dieser Container läuft seit einem Jahr ohne Änderungen), würde ich sie gerne anwenden.

Wenn Sie ursprünglich keine Standard-Installation durchgeführt haben, ist es reine Spekulation, was Ihr aktuelles Problem beheben könnte.

Ich würde eine neue VM einrichten und dort eine Testinstallation durchführen, um sicherzustellen, dass alles funktioniert. Bei der Migration können Sie das alte Forum in den Nur-Lese-Modus versetzen, ein Backup erstellen, es auf der neuen VM wiederherstellen und die DNS-Einstellungen ändern, sodass es praktisch keine Ausfallzeit gibt. (Es wird tatsächlich eine kurze Unterbrechung geben, da Sie nach der DNS-Änderung einen Neuaufbau durchführen müssen, um ein Let’s Encrypt-Zertifikat zu installieren.)

Vielen Dank, Let’s Encrypt sollte eigentlich recht einfach sein, da es als einfache Nginx-Reverse-Proxy-Konfiguration eingerichtet wurde. Gut zu hören, und zu erwarten ist, dass es zu einigen Ausfallzeiten kommen wird. Es muss nur in einer Nebenzeitspanne geplant werden.

Ich bin dabei, das Backup auf offizielle Images zu migrieren und wiederherzustellen. Gibt es etwas, das ich im Hinblick auf das Löschen gesicherter E-Mails usw. beachten sollte, damit die Benutzer nicht gespammt werden, sobald Sidekiq usw. ordnungsgemäß läuft? Danke!

Die Sidekiq-Job-Warteschlange wird nicht übertragen, sodass viele E-Mails verworfen werden, während Digests weiterhin normal versendet werden.

Also, wir versuchen, die Dokumentation zur Installation offizieller Discourse-Docker-Images zu befolgen, stoßen aber auf Probleme. Wir haben festgestellt, dass uns der Redis-Container, der Mail-Empfänger-Container und der Datencontainer fehlen, die wir zuvor in Docker hatten.

Unser vorheriges Setup scheint Folgendes zu enthalten:
app.yml
data.yml
mail-receiver.yml
redis.yml

Dieses Multi-Container-Setup unterscheidet sich von den grundlegenden Installationsanweisungen. Ich habe jedoch ein Backup unseres alten /var/discourse zur Referenz.

FAILED                                                                                                                                                        │················································································································
--------------------                                                                                                                                          │················································································································
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' fehlgeschlagen mit Rückgabewert #<Process::Status: pid 645 exit 1>                 │················································································································
Fehlerort: /pups/lib/pups/exec_command.rb:112:in `spawn'                                                                                            │················································································································
Ausführung fehlgeschlagen mit den Parametern {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}                                   │················································································································
bbf0e57ac69f1febe2a5f149aa7e6e12541c3c23aaf199188fdf19d507254b58                                                                                              │················································································································
** BOOTSTRAP FEHLGESCHLAGEN ** Bitte scrollen Sie nach oben und suchen Sie nach früheren Fehlermeldungen; es kann mehr als eine geben.                                                   │················································································································
./discourse-doctor kann bei der Diagnose des Problems helfen.

Anscheinend haben wir den Schritt ./launcher bootstrap data und ./launcher start redis übersehen.

[Mon 11 May 2020 12:53:20 AM UTC] Reload-Befehl ausführen: sv reload nginx                                                                                             │················································································································
Fehler: nginx: runsv läuft nicht                                                                                                                                │················································································································
[Mon 11 May 2020 12:53:20 AM UTC] Reload-Fehler für :                                                                                                          │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Domains nicht geändert.                                                                                                        │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Übersprungen, nächste Erneuerungszeit ist: Thu 09 Jul 2020 11:33:04 PM UTC                                                                 │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Fügen Sie '--force' hinzu, um die Erneuerung zu erzwingen.                                                                                            │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Schlüssel installieren nach:/shared/ssl/discuss.noisebridge.info_ecc.key                                                              │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Vollständige Kette installieren nach:/shared/ssl/discuss.noisebridge.info_ecc.cer                                                       │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Reload-Befehl ausführen: sv reload nginx                                                                                             │················································································································
Fehler: nginx: runsv läuft nicht                                                                                                                                │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Reload-Fehler für :                                                                                                          │················································································································
run-parts: Ausführung von /etc/runit/1.d/remove-old-socket                                                                                                         │················································································································
runsvdir gestartet, PID ist 626                                                                                                                                  │················································································································
ok: run: redis: (pid 636) 0s                                                                                                                                  │················································································································
chgrp: ungültige Gruppe: 'syslog'                                                                                                                                │················································································································
ok: run: postgres: (pid 639) 0s                                                                                                                               │················································································································
rsyslogd: imklog: Kann Kernel-Log nicht öffnen (/proc/kmsg): Vorgang nicht erlaubt.                                                                               │················································································································
rsyslogd: Aktivierung des Moduls imklog fehlgeschlagen [v8.1901.0 siehe https://www.rsyslog.com/e/2145 ]                                                                  │················································································································
supervisor pid: 640 unicorn pid: 667

Okay, wir haben unsere vorherige Discourse-Instanz erfolgreich wiederhergestellt! Jetzt wird angezeigt:

Alle ausgehenden E-Mails wurden von einem Administrator global deaktiviert. Es werden keine E-Mail-Benachrichtigungen jeglicher Art versendet.

Das ist korrekt, die Importeure haben das so eingestellt, damit Sie nach einer Migration nicht 50.000 E-Mails versenden. Schalten Sie E-Mails in Ihren Site-Einstellungen vorsichtig ein.