繁体   English   中英

无法从领事注销服务(Spring 启动应用程序)

[英]Unable to deregister service(Spring boot app) from consul

无法从 Consul 注销服务。 基本上 Consul 官方页面说它会自动取消注册服务,但在我的情况下它不会像所说的那样工作。

https://www.consul.io/docs/agent/basics.html

嗨,提到领事生命周期,它说

为了防止死节点(处于失败或离开状态的节点)的积累,Consul 会自动将死节点从目录中删除。 这个过程称为收割。 目前这是在 72 小时的可配置间隔内完成的(不建议更改收获间隔,因为它会在中断情况下产生后果)。 Reaping 类似于离开,导致所有相关服务被注销。

这是我的 bootstrap.yml 文件

server:
 port: 8089
spring:
 application:
   name: ***-service
 cloud:
   consul:
     host: consul-ui
     port: 8500
     discovery:
       deregister: true
       instance-id: ${spring.application.name}:${random.value}
       enabled: true
       register: true
       health-check-interval: 20s
       prefer-ip-address: true
     config:
       enabled: true
       prefix: configuration
       defaultContext: shared
       format: YAML
       data-key: data
       watch:
         enabled: true
 endpoints:
   shutdown:
     enabled: true

使用清除命令删除服务后,在 Consul UI 中,仍然显示在 Consul UI 上。 所以意味着它没有被领事注销

您需要在 Consul 上进行配置,因为您的应用程序似乎无法正常退出。 检查领事配置属性deregister_critical_service_after

在 Consul 0.7 及更高版本中,与服务相关联的检查还可能包含可选的deregister_critical_service_after字段,它是与intervalttl具有相同 Go 时间格式的超时。 如果检查处于临界状态的时间超过此配置值,则其关联的服务(及其所有关联的检查)将自动取消注册。 最小超时时间为1分钟,收割关键服务的进程每30秒运行一次,因此触发注销的时间可能比配置的超时时间稍长。 这通常应该配置一个超时,该超时比给定服务的任何预期可恢复中断要长得多。

该文档是关于领事节点,而不是服务节点。

您究竟是如何终止应用程序的?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM