Consul und Spring Boot Dienste in Docker - nicht Abmeldung

8

Wir haben also Java-Microservices mit Spring-Boot geschrieben, die Consul für die Dienstsuche und die Konfigurationsverwaltung verwenden und in Docker-Containern ausgeführt werden. Alles funktioniert, aber wenn ein Container stirbt oder ein Dienst neu gestartet wird, verschwindet die alte Service-ID in Consul nicht und der Dienst wird für immer als "Fehlgeschlagen" in der Konsul-Benutzeroberfläche angezeigt, obwohl der neue Container registriert wurde und alle anzeigt Grün.

Wir verwenden keinen Herzschlag - aber ich kann nicht viel Dokumentation darüber finden, was der Unterschied zwischen Herzschlag und Gesundheitscheck für Konsul ist.

Hier ist meine bootstrp.yml

%Vor%

Es gibt noch andere Einstellungen, um den Heartbeat zu aktivieren, aber die Dokumente sagen etwas darüber, was den Consul-Cluster belastet.

Hat jemand es geschafft, dass Consul und Spring Boot / Docker Dienste sich automatisch abmelden? Es verursacht eigentlich keine wirklichen Probleme, aber es macht die Consul UI ziemlich nutzlos, um Up / Down-Dienste zu überwachen.

    
Gandalf 10.04.2017, 00:36
quelle

2 Antworten

1

Consul nimmt die Dienste nicht automatisch ab.

Siehe Ссылка für den Hinweis zu derselben Frage. Gemäß diesem Thread müssen Sie entweder die Konfiguration aktualisieren oder einen Agenten-API-Aufruf durchführen. Da der Agent die Quelle der Wahrheit ist, sollten Sie nicht versuchen, über Catalog API zu aktualisieren. Weitere Informationen finden Sie unter GitHub . Sie erwähnen in der Google-Gruppe auch, dass Sie die Dienste nicht unbedingt abmelden müssen, wenn der Knoten ordnungsgemäß heruntergefahren wird, aber das scheint nicht Ihr Anwendungsfall zu sein.

Bitte werfen Sie einen Blick auf Konsul, der die Zombie-Dienste nicht abmeldet , um Hinweise zur Automatisierung zu erhalten Service Deregistrierung entweder mit dem API oder Tools wie Registrator .

    
gesellix 20.04.2017 23:08
quelle
1

Sie haben erwähnt, dass Sie einen Docker-Container verwenden, um den Microservice auszuführen. Überfüllen Sie das SIGTERM in Ihrem Einstiegsskript im Andockcontainer? Wenn ein SIGTERM gesendet wird, wird die Boot-Anwendung es erhalten und Sie werden das folgende Protokoll sehen, dass der Microservice die Registrierung bei Consul aufgibt.

%Vor%

In diesem Blogbeitrag wird dies besprochen.

>     
cherit 27.04.2017 13:27
quelle