Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

用docker启动的nacos2.3.1修改配置后应用拉取不到最新的修改 #12047

Open
noday opened this issue Apr 30, 2024 · 7 comments
Open

Comments

@noday
Copy link

noday commented Apr 30, 2024

Describe the bug
docker run --name nacos231 -e MODE=standalone -p 8848:8848 -p 9848:9848 -d --restart=always nacos/nacos-server:v2.3.1
用docker启动的nacos2.3.1修改配置后应用拉取不到最新的修改,修改时应用也收到了Refresh keys changed: [skip-url[2]],但明显不是最新配置,因为我从2个增加到了3个。重启应用也拉不到最新配置,磁盘中的nacos目录中的文件时间也是最新的,但内容却是旧的,多改几次配置也不行
只有重启nacos容器才能拉到最新配置

Desktop (please complete the following information):

  • OS: centos7.9
  • Version nacos-server 2.3.1 client 2.3.1
  • Module [e.g. naming/config]
  • SDK [e.g. original, spring-cloud-alibaba-nacos, dubbo]

Additional context

@bwangll
Copy link

bwangll commented Apr 30, 2024

nacos容器把参数都做了环境变量,他是从环境变量读取参数的。不知道你的修改方式是修改的哪里。可以进入容器执行env看一下变量。建议的方式是通过run的时候传入环境变量或者挂载配置文件的方式优雅处理

@bwangll
Copy link

bwangll commented Apr 30, 2024

可以分析一下nacos-docker这个项目。了解一下它在容器化的时候做了什么

@KomachiSion
Copy link
Collaborator

有可能是nacos-client已经获取到新配置并且通知了应用,但是应用不使用新配置;
也有可能是nacos-client已经获取到新配置并且通知了应用,但应用应用新配置时出错导致新配置不被使用。

可以查看下${user.home}/logs/nacos 下的日志,看下有没有信息, 同时排查下应用在使用新配置时的逻辑是否有问题。

@noday
Copy link
Author

noday commented May 8, 2024

我是从界面上修改的配置。
现象我已经描述过了,楼上应该是没看清,我再次描述一遍:界面上修改配置yaml,修改后看日志client收到了变更通知,但通知的配置不是最新的,从数量上可以判断,而且重启应用也拉不到最新的配置(本地缓存的配置我删除了,新建的缓存还是旧配置)
而当我重启nacos容器,拉到的配置就是最新的

@noday
Copy link
Author

noday commented May 8, 2024

刚刚又出现注册的服务网关获取不到的情况,nacos控制台上能看到注册服务,网关日志里服务列表就是空数组init new ips(1) service: DEFAULT_GROUP@@app-system -> []
我已经关闭容器,改用直接启动方式了

@noday
Copy link
Author

noday commented May 8, 2024

目前发现一个影响点是系统时间不对,暂时没时间验证是不是这个问题

@KomachiSion
Copy link
Collaborator

首先Refresh keys changed 这个日志不是nacos打印的, 应该是你的应用或者应用框架打印的,如果nacos-client的日志(不是应用日志)打印的是已经获取到了新配置,那么就一定是新的配置,因为nacos-client是按照md5值做校验的,md5不一致不会通知lisntner,

另外网关上获取的服务列表是新的问题,建议不要混在一个issue里讨论。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants