tutorial starter oss eureka spring-cloud netflix-eureka

spring cloud - starter - Eureka nunca anula el registro de un servicio.



spring cloud tutorial (2)

Actualmente estoy enfrentando un problema donde Eureka no anula el registro de un servicio registrado. He sacado el ejemplo del servidor Eureka directamente desde git hub e hice solo un cambio, eureka.enableSelfPreservation = false . Mi application.yml se ve así:

server: port: 8761 eureka: enableSelfPreservation: false client: registerWithEureka: false fetchRegistry: false server: waitTimeInMsWhenSyncEmpty: 0

He leído que si el 85% de los servicios registrados dejan de emitir latidos en 15 minutos, Eureka asume que el problema está relacionado con la red y no anula el registro de los servicios que no responden. En mi caso, solo tengo un servicio en ejecución, así que deshabilité el modo de autoconservación. Estoy matando abruptamente el proceso y Eureka deja el servicio registrado por lo que parece una cantidad de tiempo indefinida.

El archivo application.yml de mi cliente tiene este aspecto:

eureka: instance: leaseRenewalIntervalInSeconds: 3 client: healthcheck: enabled: true serviceUrl: defaultZone: http://localhost:8761/eureka/ appInfo: replicate: interval: 3 initial: replicate: time: 3 spring: rabbitmq: addresses: ${vcap.services.${PREFIX:}rabbitmq.credentials.uri:amqp://${RABBITMQ_HOST:localhost}:${RABBITMQ_PORT:5672}}

Mi objetivo es crear una demostración en la que Eureka detecte rápidamente que el servicio ya no se está ejecutando y que otro servicio que se inicie pueda registrarse rápidamente.

A partir de ahora, una vez que se inicia el cliente eureka, se registra en 3 segundos. Simplemente nunca se anula el registro cuando el servicio se termina abruptamente. Después de matar el servicio, el panel de Eureka lee:

¡EMERGENCIA! EUREKA PUEDE SER INCORRECTAMENTE RECLAMAR QUE LAS INSTANCIAS ESTÁN ARRIBA CUANDO NO ESTÁN. LOS RENOVACIONES SON MENOS QUE EL UMBRAL Y, ENTONCES, LAS INSTANCIAS NO SE EXPIRAN PARA SER SEGURAS.

¿Cómo puedo prevenir este comportamiento?


Me di cuenta de que el modo de autoconservación nunca se desactivaba. Resulta que la propiedad real es

eureka.server.enableSelfPreservation=false

(Ver Código DefaultEurekaServerConfig ), que no he encontrado documentado en ninguna parte. Esto resolvió mi problema.


Realicé el trabajo de desregistro estableciendo los siguientes valores

Eureka server application.yml

eureka: server: enableSelfPreservation: false

Servicio application.yml

eureka: instance: leaseRenewalIntervalInSeconds: 1 leaseExpirationDurationInSeconds: 2

El ejemplo completo está aquí https://github.com/ExampleDriven/spring-cloud-eureka-example