[alibaba/nacos]k8s部署的nacos服务端2.1.1版本,客户端是1.x版本,服务一会儿注册一会下线,刷新控制台一两次就能看到不停在下线或者上线

2023-12-11 473 views
2

k8s部署的nacos服务端2.1.1版本,客户端是1.x版本,服务一会儿注册一会下线,刷新控制台一两次就能看到不停在下线或者上线

有台nacos节点里naming-server.log,一直有刷INFO Remove expired metadata ExpiredMetadataInfo{service=Service

[root@nacos-0 logs]# tail -100f naming-server.log 一直disconnect, remove的

2023-11-01 16:33:42,184 INFO Client connection 10.75.0.183:50417#true disconnect, remove instances and subscribers

2023-11-01 16:33:43,228 INFO Client connection 10.75.0.135:35996#true disconnect, remove instances and subscribers

2023-11-01 16:33:44,679 INFO Client connection 10.75.0.102:40467#true connect

2023-11-01 16:33:44,758 INFO Client connection 10.75.0.159:59925#true disconnect, remove instances and subscribers

2023-11-01 16:33:48,223 INFO Client connection 10.75.1.149:34439#true disconnect, remove instances and subscribers

2023-11-01 16:33:49,443 INFO Client connection 10.75.0.183:50417#true connect

2023-11-01 16:33:50,136 INFO Client connection 10.75.0.159:59925#true connect

2023-11-01 16:33:52,184 INFO Client connection 192.168.0.59:55409#true disconnect, remove instances and subscribers

2023-11-01 16:33:52,411 INFO Client connection 10.75.1.149:34439#true connect

2023-11-01 14:20:39,192 INFO Client remove for service Service{namespace='dev', group='DEFAULT_GROUP', name='schedule-master', ephemeral=true, revision=38}, 10.75.0.201:8048#true

2023-11-01 14:21:12,012 INFO Client connection 10.75.0.201:8048#true disconnect, remove instances and subscribers

2023-11-01 15:31:28,811 INFO Client connection 10.75.0.201:8048#true connect

2023-11-01 15:31:28,811 INFO Client change for service Service{namespace='dev', group='DEFAULT_GROUP', name='schedule-master', ephemeral=true, revision=51}, 10.75.0.201:8048#true

回答

4

我们服务部署在k8s,服务在发布时老的pod里会执行preStop.sh调接口nacos/v1/ns/instance?serviceName=***&enabled=false下线服务。nacos server 1.4没问题,但是升级到nacos server 2.1.1就有问题

8

试过在网关的pod(192.168.0.59)里注销192.168.0.59这个实例,但刷新nacos服务详情服务没下线。

root@iZbp13nl1j5t7ufd8tmha0Z:/data# curl -X DELETE 'nacos.dev:8848/nacos/v1/ns/instance?serviceName=gateway&ip=192.168.0.59&port=8033&clusterName=DEFAULT' ok root@iZbp13nl1j5t7ufd8tmha0Z:/data# curl -X DELETE 'nacos.dev:8848/nacos/v2/ns/instance?serviceName=gateway&ip=192.168.0.59&port=8033&clusterName=DEFAULT' {"code":0,"message":"success","data":"ok"} root@iZbp13nl1j5t7ufd8tmha0Z:/data# curl -X DELETE 'nacos.dev:8848/nacos/v2/ns/instance?serviceName=gateway&ip=192.168.0.59&port=8033&clusterName=DEFAULT&groupName=DEFAULT_GROUP&namespaceId=dev' {"code":0,"message":"success","data":"ok"}

2

看起来就是服务自身有问题, 心跳一直续不上导致的, 和更新元数据的那个上下线没关系,建议检查服务提供者是否有异常,导致心跳一直断断续续。

6

看了原来的nacos server 1.4.0的日志里naming-server.log没有一直disconnect, remove的,服务本身没问题的。

对应的服务pod里执行了注销接口DELETE也正常返回了,但是服务没下线,请问会是什么原因? image

7

因为你心跳还在续约,只DELETE后很快也会被心跳补偿回来。 非持久化的服务需要从注册的client上注销才行。

3

@KomachiSion 就是非持久化的服务,在注册的client上注销的。

1

nacos server 2.1.1 遇到同样的问题,我在控制台下线一个服务节点,多刷两次页面就变成了下线,再刷就上线。

4

那就是应用自身有问题了啊, 心跳不稳定。 需要排查应用

7

应用能稳定维持跟nacos的心跳,只是在nacos上操作下线后会出现这种情况。目前是部署三个节点,其中有个节点之前宕机过,现在是在控制台下线后,刷新两次都是已下线第三次就会是上线状态,再刷新又是已下线。我怀疑是不是宕机后重启的这个节点数据已经不同步了。

8

非持久化的服务,在注册的client上注销的。上面图可以看到,是在客户端的pod里执行的注销接口,再查询接口发现服务还在。注销接口,无法实现注销服务?

另外,K8S的Deployment里去掉preStop调nacos更新接口enabled=false,这几天没再复现问题了。但是之前nacos server 1.4就没这个问题。

9

你可以先停nacos server,删除所有节点的nacos的data目录文件,再启动nacos试试

9

那本地环境部署问题就需要自己排查一下了, 或者抓去有用的日志。

5

pod里执行有什么用, 你的程序还在发心跳,你要用程序里的nacos-client注销,才能停止心跳。

7

@airacle thinks,删除data目录重启nacos-server之后问题得到解决