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.11
spring.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.adoc
spring.cloud.inetutils.default-hostname
spring.cloud.inetutils.default-ip-address
spring.cloud.inetutils.ignored-interfaces[0]=eth0 # 忽略网卡,eth0
spring.cloud.inetutils.ignored-interfaces=eth.* # 忽略网卡,eth.*,正则表达式
spring.cloud.inetutils.preferred-networks=10.34.12 # 选择符合前缀的IP作为服务注册IP
spring.cloud.inetutils.timeout-seconds
spring.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的主要内容,如果未能解决你的问题,请参考以下文章