Nacos 2.2.3+Seata+Sentinel 版本踩坑

在升级Nacos至2.2.3版本后,Seata1.6.1与Nacos配置中心连接时出现500错误,原因是Nacos的新版本默认关闭了登录验证,而Seata配置中仍包含用户名和密码。解决方法包括将Nacos的`nacos.core.auth.caching.enabled`设置为`true`或者移除Seata配置中的用户名和密码信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nacos 2.2.3+Seata+Sentinel 版本踩坑

Seata1.6.1使用Nacos2.2.3配置中心时报错

问题出现场景

本地Nacos版本基于2.2.1进行正常seata以及sentinel环境搭建配置成功运行,开发环境进行了Nacos版本升级,并未及时告知,导致链接失败。

seata+nacos配置中心进行配置的时候, seata日志里会一直报错:


c.a.nacos.client.security.SecurityProxy : [SecurityProxy] login http request failed url: http://10.10.*.1*:8848/nacos/v1/auth/users/login, params: {username=nacos}, 
bodyMap: {password=nacos}, 
errorMsg: Server returned HTTP response code: 500 for URL:

java.lang.NullPointerException: null
at com.alibaba.nacos.plugin.auth.impl.token.impl.JwtTokenManager.getTokenTtlInSeconds(JwtTokenManager.java:150)
at com.alibaba.nacos.plugin.auth.impl.token.TokenManagerDelegate.getTokenTtlInSeconds(TokenManagerDelegate.java:89)

问题出现原因

由于以前版本配置文件中配置文件默认开启登录验证,新版本配置中默认不开启登录验证,导致seata配置文件中配置了登录用户名以及密码,登录失败。
当前排查版本差异。2.2.1版本默认为true,2.2.3版本默认为false。
nacos.conf.application.properties文件中138行左右

nacos.core.auth.caching.enabled=true/false
### The ignore urls of auth
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**

### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=nacos

### If turn on auth system:
nacos.core.auth.enabled=false

### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=true

### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
nacos.core.auth.enable.userAgentAuthWhite=false

### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=
nacos.core.auth.server.identity.value=

问题解决

解决方式其两种,任选其一
其一:将nacos配置文件中修改为true
nacos.core.auth.caching.enabled=true
其二:将seata中配置链接nacos的用户名和密码去除
seata:
  # 配置中心,以下是以nacos为配置中心
  config:
    # support: nacos, consul, apollo, zk, etcd3
    type: nacos
    nacos:
      server-addr: 10.10.*.*:8848
      # 以下namespace命名空间,需要在nacos中手动创建
      namespace: 07ccbec381a011d121a215719199ac49
      group: DEFAULT_GROUP
#      username: nacos
#      password: nacos
      context-path:
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key:
      #secret-key:
      data-id: seataServer.properties

仅此做个记录,后续有待继续更新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值