环境描述:
nacos 2.2.1,后台服务部署在windows,nacos部署在Linux。
问题描述:
当服务是临时实例时,服务状态正常。当时切换到永久实例后,nacos控制台,健康检查显示为 false。检查nacos 日志以及后台服务均无异常报告。
分析原因:
Nacos中的两种服务实例分别对应了两种健康检查机制:
- 临时实例(非持久化实例):对应客户端主动上报机制
- 永久实例(持久化实例):对应服务器端主动下探机制
当把服务设置为永久实例时,服务端需要主动下探实现健康检查,但是nacos server部署在Linux,Linux上ping 实例的ip即:192.168.136.1,ping不通。
解决:
如果实在要把服务设置为永久实例,就需要把服务部署在nacos server一起。(后面,我在本地部署了nacos,就正常了)但是我也认为只要能让nacos server能向用户服务器发起的TCP连接/HTTP请求应该也行。奇怪的是,我以前用低版本的时候nacos也是部署在Linux的,那会儿怎么没有这个问题。。。。。。
附上一个参考链接,和我想的差不多:如何解决Nacos持久化实例HTTP/TCP的健康检查不通过问题_微服务引擎 MSE-阿里云帮助中心 (aliyun.com)