本文介绍如何解决应用服务重启后上线状态为false但健康状态正常的问题。
问题现象
应用服务在重启或发布后,在Nacos上查询该服务的上线状态为未上线的红点,但健康状态为正常的绿点。
可能原因
应用服务在注册该服务时,将
enabled
字段设置为false
。在应用停止时,调用过Nacos OpenAPI v1版本中的修改实例或OpenAPI v2版本中的更新实例,且
enabled
设置字段设置为false
。或在1分钟内又重新注册回Nacos,下线的元数据没有因为过期被删除而被重新复用。在OpenAPI v1版本中的修改实例或OpenAPI v2版本中的更新实例有详细说明。
解决方案
在应用订阅者节点上查找Nacos-Client的日志。具体操作,请参见如何获取Nacos-Client的日志?。
过滤关键字
REGISTER-SERVICE
并找到注册服务提供者的日志信息,查看提供者详细信息中的enabled
字段,不同字段值的处理方法如下所示。注册时
enabled
字段值为false
。如果日志中显示注册时
enabled
字段值为false
,请修改应用启动时,注册服务提供者的enabled
字段值为true
,或者删去对enabled
字段的设置(其缺省值已为true
)。如果无法找到设置为
false
的位置,可以在服务提供者确认自身启动完毕后,调用Nacos OpenAPI v1版本中的修改实例或OpenAPI v2版本中的更新实例,将enabled
字段设置为true
。
注册时
enabled
字段值为true
。如果日志中显示注册时
enabled
字段值为true
,那么指在前一个应用停止时,调用了OpenAPI v1版本中的修改实例或OpenAPI v2版本中的更新实例。不仅设置enabled
字段为false
,而且新注册的服务提供者IP、端口未变化且间隔小于1分钟。解决方案如下所示。移除程序停止时自动调用OpenAPI修改的
enabled
字段,接入微服务治理的配置无损滚动发布功能。确保停止服务提供者(注销、自动移除)和重新注册服务提供者的间隔大于1分钟。
在服务提供者确认自身启动完毕后,调用Nacos OpenAPI v1版本中的修改实例或OpenAPI v2版本中的更新实例,设置
enabled
字段为true
。