Fehlerbehebung — RabbitMQ
Der Cluster bleibt im Status „Creating“ oder wechselt zu „Error“
Ursache: Die Bereitstellung läuft noch, oder die Plattform konnte die Erstellung des Clusters oder seine letzte Änderung nicht anwenden (zum Beispiel mangels verfügbarer Ressourcen). Im zweiten Fall wechselt der Status zu Error; nach einer Änderung kann der Cluster mit seiner vorherigen Konfiguration weiterlaufen.
Lösung:
- Warten Sie einige Minuten: Detailseite und Liste werden automatisch aktualisiert.
- Bleibt der Status ungewöhnlich lange Creating oder wechselt er zu Error, wenden Sie sich an den Support und geben Sie den Namen des Projekts, den Namen des Clusters und seine Kennung an (unter dem Namen des Clusters angezeigt, mit einer Kopierschaltfläche).
Ein VHost oder ein Benutzer wird abgelehnt
Ursache: Der Name entspricht nicht den Benennungsregeln. Namen von VHosts und Benutzern akzeptieren nur Kleinbuchstaben, Ziffern und Bindestriche und müssen mit einem Buchstaben beginnen und mit einem Buchstaben oder einer Ziffer enden: my_vhost, App.User oder /prod werden abgelehnt.
Lösung: Wählen Sie einen konformen Namen, zum Beispiel prod oder app-user. Siehe Konzepte.
„Storage quota exceeded for this project“ im Assistenten
Ursache: Die Disk-Größe multipliziert mit der Anzahl der Replicas übersteigt den verbleibenden Speicher der Projekt-Quota.
Lösung:
- Verringern Sie Disk size (GB) oder Number of replicas.
- Geben Sie bei Bedarf Speicher im Projekt frei oder lassen Sie die Quota des Projekts erhöhen.
„A cluster with this name already exists.“
Ursache: Ein RabbitMQ-Cluster des Projekts trägt bereits diesen Namen.
Lösung: Kehren Sie zum Schritt General zurück und wählen Sie einen anderen Cluster Name.
Der Bereich External zeigt „Disabled“ oder „Waiting for allocation…“ an
Ursache: Der External Access ist deaktiviert oder die öffentliche Adresse ist noch nicht zugewiesen.
Lösung:
- „Disabled“: Aktivieren Sie den externen Zugriff (siehe Externen Zugriff konfigurieren). Aus dem Projekt ist er nicht nötig: Verwenden Sie den Host aus dem Bereich Internal.
- Wenn der externe Zugriff aktiviert ist, warten Sie und laden Sie die Seite anschließend neu.
AMQP-Verbindung abgelehnt (ACCESS_REFUSED)
Ursache: falsche Zugangsdaten oder der Benutzer hat keine Rechte auf dem angeforderten VHost.
Lösung:
- Prüfen Sie in der Tabelle Users (Spalte VHosts), ob der Benutzer ein Recht auf dem vom Client verwendeten VHost hat.
- Fügen Sie den Zugriff bei Bedarf über Manage Access hinzu.
- Wenn das Passwort verloren gegangen oder zweifelhaft ist, generieren Sie mit Change Password ein neues und aktualisieren Sie den Client.
- Prüfen Sie, ob der Client den richtigen VHost angibt (exakter Name, Groß- und Kleinschreibung beachten).
Verbindung nicht möglich (Timeout, Verbindung abgelehnt)
Ursache: externer Zugriff deaktiviert, falsche Adresse oder falscher Port oder Netzwerkfilterung auf Client-Seite.
Lösung:
- Prüfen Sie die im Abschnitt Connection verwendete Adresse: Bereich External aus dem Internet, Bereich Internal aus dem Projekt.
- Verwenden Sie den Port 5672.
- Testen Sie von der Client-Maschine aus, ob der Port offen ist:
nc -zv <host> 5672
- Prüfen Sie, ob Ihr Netzwerk oder Ihre lokale Firewall ausgehende Verbindungen zu diesem Port zulässt.
Blockierte Veröffentlichungen (Flow Control, Speicher- oder Disk-Alarm)
Ursache: RabbitMQ blockiert Veröffentlichungen, wenn der Schwellenwert für den Arbeitsspeicher (High Watermark) erreicht wird oder der Speicherplatz auf der Disk nicht ausreicht, um den Broker zu schützen. Die Clients erhalten dann eine Benachrichtigung connection.blocked.
Lösung:
- Prüfen Sie auf Anwendungsseite, ob die Consumer mit den Producern Schritt halten, und leeren Sie Queues, in denen sich nicht konsumierte Nachrichten ansammeln.
- Erhöhen Sie Disk size (GB) über Edit, wenn der Alarm die Disk betrifft (siehe Die Konfiguration eines Clusters ändern).
- Das Preset (Arbeitsspeicher) ist nach der Erstellung nicht änderbar: Erstellen Sie einen Cluster mit einem größeren Preset oder wenden Sie sich an den Support.
Nicht geroutete Nachrichten
Ursache: Der Producer veröffentlicht an einen Exchange ohne passendes Binding (falscher Exchange-Typ, falscher Routing Key, fehlendes Binding). Die Nachricht wird dann verworfen.
Lösung:
- Prüfen Sie im Code des Producers den Namen des Exchanges und den Routing Key.
- Prüfen Sie, ob der Consumer das Binding zwischen Queue und Exchange deklariert.
- Veröffentlichen Sie mit dem Flag
mandatory, um über nicht geroutete Nachrichten benachrichtigt zu werden, oder deklarieren Sie einen Alternate Exchange, um sie aufzufangen.
Das Löschen des Clusters schlägt fehl
Ursache: Ein Konflikt verhindert das Löschen („Cannot delete this cluster (conflict).“) oder der Dienst ist vorübergehend nicht verfügbar.
Lösung: Versuchen Sie es einige Minuten später erneut. Besteht der Fehler weiterhin, wenden Sie sich an den Support.