2017-02-12 4 views
3

Wir haben eine Reihe von Spring Boot-Anwendungen, die sich bei Consul registrieren (via Spring Cloud Consul). Wenn ich diese Anwendungen über docker-compose stop myservice stoppe, dann löschen sie sich korrekt ab und verschwinden von Consul.Tote Dienste von Konsul entfernen

Wenn ich docker-compose kill myservice verwende, dann passiert die Abmeldung nicht. Ich verstehe, dass es auf einem UNIX-System unmöglich ist, das SIGKILL-Ereignis abzufangen, daher gibt es keine Möglichkeit, die Abmeldung zu erzwingen.

Was wir also sehen, sind Dienste in Consul, die nie entfernt (markiert als critical, aber immer noch sichtbar in der Benutzeroberfläche). Gibt es eine Möglichkeit, Consul zu zwingen, das, was registriert ist, zu aktualisieren, damit die toten Dienste entfernt werden?

Dank

Nick

+0

Mögliches Duplikat von [Konsul denegistrieren 'fehlgeschlagen' Dienste] (https://stackoverflow.com/questions/40010594/consul-registerfailing-services) – janisz

Antwort

0

Es scheint, dass Sie Consul HTTP-API verwenden und manuell nicht verfügbar Dienste deregistrieren. API gibt Ihnen zwei verschiedene Möglichkeiten, einen Dienst, die erste über agent endpoint wie so

curl -v -X PUT http://%CONSUL_IP%:8500/v1/agent/service/deregister/<ServiceID> 

und die zweite über catalog abzumelden. Leider müssen Sie in beiden Fällen die HTTP-Anfrage manuell durchführen.

Verwandte Themen