Ich stehe derzeit vor einem Problem, bei dem Eureka nie zuvor veraltete Service-Instanzen gelöscht hat, weil eine VM unerwartet ausgefallen ist. Verständlicherweise trat der Selbsterhaltungsmodus von Eureka ein, da es bei Serviceverlängerungen/Heartbeat-Anfragen einen großen Rückgang (unter dem Schwellenwert) gab. Aber 15+ Stunden später sind die toten Instanzen immer noch in Eureka registriert. Dies ist ein großes Problem, da Dienstanforderungen weiterhin nur an die toten Instanzen gerichtet sind, um Fehler zurückzugeben.Der Selbsterhaltungsmodus von Eureka wird nie wiederhergestellt
Meine Hoffnung war, dass die Schwelle kontinuierlich angepasst wird und nach einer gewissen Zeit würde Eurekas Schwelle auf einem neuen Normniveau sein und der Selbsterhaltungsmodus würde zurückgesetzt werden. Wir verwenden Eureka im gespiegelten Setup und unsere Konfigurationen sind nicht sehr komplex.
Unser Setup:
Eureka über Feder-boot-Starter-parent 1.2.5.RELEASE
eureka:
dashboard:
path: services
enabled: false
instance:
hostname: localhost
leaseRenewalIntervalInSeconds: 3
metadataMap:
managementPath: /admin
instanceId: discoveryPrimary
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
waitTimeInMsWhenSyncEmpty: 0
Ist es möglich, Eureka Konfigurationen einzustellen, um die Selbsterhaltung Modus zurückgesetzt werden (wo es hört auf, Instanzen zu löschen) und erlaubt es, Dienst-Registrierungen zu löschen, wenn die Dienste für 5+ Minuten tot sind?
Wenn Sie 'renewationPercentThreshold' anpassen, wird das Problem dadurch gelöst, dass der Selbsterhaltungsmodus verzögert wird. Wir können dasselbe erreichen, indem wir 'eureka.server.enableSelfPreservation = false' setzen, aber das Problem wird immer noch nicht gelöst, wenn die Selbsterhaltung ausgelöst wird und diese Instanzen niemals wiederkommen. – restwzeasy
Nein, es wird nicht nur den Selbsterhaltungsmodus verzögern, wenn Ihr Netzwerk gesund ist oder Ihre Instanzen nicht nur jede Minute kommen und gehen. Es ist einfach für eine kleinere Infrastruktur konfiguriert. Sie können es mit 'renewationThresholdUpdateIntervalMs' weiter optimieren, so dass das Zeitfenster für die Selbsterhaltung kleiner wird.Wenn Sie es ausschalten, verwenden Sie einfach keine der Ausfallsicherungsfunktionen von Eureka. –
Unser Ziel ist es, alle Ausfallsicherheitsfunktionen von Eureka zu verwenden, einschließlich des Selbsterhaltungsmodus. Wenn Sie den Schwellenwert jedoch niedriger einstellen, wird nur der Selbsterhaltungsmodus aktiviert. Sobald er aktiviert ist, werden die toten Instanzen nach 15+ Stunden immer noch nicht gelöscht. Ich glaube nicht, dass die Schwelle aus den beschriebenen Gründen das Problem ist. Gibt es einige andere Konfigurationen, die es dem Selbsterhaltungsmodus erlauben würden, tote Instanzen zurückzusetzen und schließlich zu löschen? – restwzeasy