jvm端口冲突导致consul服务发现的404错误

2022-11-08  本文已影响0人  天草二十六_简村人

背景

服务名称是task-notification


image.png

某服务通过feign调用它走consul服务发现机制的时候,提示404错误。接口怎么可能不存在呢?
之前是配置了url,走的是内网域名调用,一切都OK。


404错误.png

问题就是出在consul服务发现,发现的地址不对。所以第一反应是要看注册到task-notification的节点地址是什么。

经过一些列的排查及重启服务,最后是依靠手动将之从consul注册中心下线以解决。

排查过程

可以看到,服务注册ok,因为health接口返回成功。

UP状态表示服务健康

{"status":"UP"}

但是,我们进一步查看该节点的版本号和服务名称,就傻眼了,变成了另外一个服务。

{"git":{"build":{"time":"2022-08-01T08:28:05Z","version":"1.0.31"},"commit":{"id":{"abbrev":"1edbf5a","full":"1edbf5a4e1cda68864d391fd3e5d95d520dbd4f5"}}},"build":{"version":"1.0.31","artifact":"index-service","name":"index-service","group":"com.xhtech.service","time":"2022-08-01T08:27:51.104Z"}}

服务预期是task-notification, 这里注册上来的却是index-service。

修改程序的端口号

task-notification:9033(新增端口)
index-service:7023(保持不变)
登录服务task-notification所在的机器192.168.80.149,重启生效后,见下图:


image.png

相比之前,只是将服务task-notification注册上来了,并没有解决为什么192.168.10.19节点上的服务误注册的问题。

1、http://192.168.80.149:9033/mgm/info

{"git":{"build":{"time":"2022-11-08T09:38:58Z","version":"2.3.4"},"commit":{"id":{"abbrev":"a63c6f0","full":"a63c6f0f15dc755984c3fe711964deaa8a6597e0"}}},"build":{"version":"2.3.4","artifact":"task-notification","name":"task-notification","group":"com.xuehai.crplatform","time":"2022-11-08T09:38:44.729Z"}}

注册上来的节点地址无误。。(开始怀疑一切了~~)

2、查看index-service服务的注册情况:


image.png

问题总结

task-notification-192-168-10-19-7203 为什么会注册到task-notification, 第一它的服务名是index-service,第二它已经注册到了index-service下。

1、重启过程

区别是前者只是不健康,后者是会先从consul注册中心下线的。

image.png
image.png

2、手动从consul注册中心下线

curl -X PUT http://192.168.10.19:8500/v1/agent/service/deregister/task-notification-192-168-10-19-7203?token=e18d123c-0eb9-eabe-1703-1f492eea1eb5

image.png

3、再次重启index-service,验证是否还会死灰复燃!!

image.png

相应地,它只会注册到原本属于它自己的index-service上

image.png
上一篇 下一篇

猜你喜欢

热点阅读