0

无法从 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 中使用 purge 命令删除服务后,仍然显示在 Consul UI 上。所以意味着它没有被领事注销

4

2 回答 2

2

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

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

于 2020-12-03T20:40:32.017 回答
0

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

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

于 2019-05-31T01:05:45.030 回答