Arthas排查Nacos客户端持续报token expired

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arthas排查Nacos客户端持续报token expired相关的知识,希望对你有一定的参考价值。

参考技术A

先说下现象,在k8s上部署了微服务应用,注册和配置中心使用了nacos 2.0.3(3节点集群)。某一天开始,应用日志里输出了很多 token expired的 异常

打开nacos的日志,也是一堆的token过期信息

这里有个疑问,为什么会有这么多个token值,是不是SecurityProxy对象本身有多个?
通过jmap -histo 1 |grep SecurityProxy,查看到有6个对象
跟踪源码,发现SecurityProxy是ConfigService和NamingService创建的
用于nacos集群是3节点,那这里每个类型的对象是3个也就可以理解了

发现只有NamingClientProxyDelegate里面在调用。ConfigTransportClient里并没在调用

Nacos跨服务器调用服务报错

利用gateway做springcloud微服务网关路由服务时出现报错情况,发现是和网关不在一个服务器的服务无法使用

Nacos服务注册的IP Nacos注册中心是: https://github.com/alibaba/nacos[1] 各个服务通过Nacos客户端将服务信息注册到Nacos上 当Nacos服务注册的IP默认选择出问题时,可以通过查阅对应的客户端文档,来选择配置不同的网卡或者IP

问题场景

nacos配置

如果选择固定Ip注册可以配置spring.cloud.nacos.discovery.ip = 10.2.11.11spring.cloud.nacos.discovery.port = 9090
如果选择固定网卡配置项spring.cloud.nacos.discovery.networkInterface = eth0
#如果想更丰富的选择,可以使用spring cloud 的工具 InetUtils进行配置 具体说明可以自行检索: https://github.com/spring-cloud/spring-cloud-commons/blob/master/docs/src/main/asciidoc/spring-cloud-commons.adocspring.cloud.inetutils.default-hostnamespring.cloud.inetutils.default-ip-addressspring.cloud.inetutils.ignored-interfaces[0]=eth0 # 忽略网卡,eth0spring.cloud.inetutils.ignored-interfaces=eth.* # 忽略网卡,eth.*,正则表达式spring.cloud.inetutils.preferred-networks=10.34.12 # 选择符合前缀的IP作为服务注册IPspring.cloud.inetutils.timeout-secondsspring.cloud.inetutils.use-only-site-local-interfaces

其他配置

spring.cloud.nacos.discovery.server-addr #Nacos Server 启动监听的ip地址和端口spring.cloud.nacos.discovery.service #给当前的服务命名spring.cloud.nacos.discovery.weight #取值范围 1 到 100,数值越大,权重越大spring.cloud.nacos.discovery.network-interface #当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址spring.cloud.nacos.discovery.ip # 优先级最高spring.cloud.nacos.discovery.port # 默认情况下不用配置,会自动探测spring.cloud.nacos.discovery.namespace # 常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
spring.cloud.nacos.discovery.access-key # 当要上阿里云时,阿里云上面的一个云账号名spring.cloud.nacos.discovery.secret-key # 当要上阿里云时,阿里云上面的一个云账号密码spring.cloud.nacos.discovery.metadata #使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息spring.cloud.nacos.discovery.log-name # 日志文件名spring.cloud.nacos.discovery.enpoint # 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址ribbon.nacos.enabled # 是否集成Ribbon 默认为true

关注Github:1/2极客[2]

关注博客:御前提笔小书童[3]

关注网站:HuMingfeng[4]

References

[1]https://github.com/alibaba/nacos
[2] 1/2极客: https://github.com/humingfeng
[3] 御前提笔小书童: https://blog.csdn.net/qq_22260641
[4] HuMingfeng: https://royalscholar.cn



喜欢就点个"在看"呗^_^


以上是关于Arthas排查Nacos客户端持续报token expired的主要内容,如果未能解决你的问题,请参考以下文章

Nacos Client 1.4.1 版本踩坑记录

springCloud集成nacos启动时报错排查

Java诊断利器Arthas优雅排查生产环境

线上问题排查利器Arthas

java生产环境调试问题排查神器arthas(阿里中台开源的)

使用 Arthas 排查开源 Excel 组件问题