开发者社区 > 云原生 > 正文

从Nacos 1.3.2升级到Nacos 2.0.1,持续打印upgrade check resul

3个节点从Nacos 1.3.2升级到Nacos 2.0.1,按照升级文档操作后,3个节点都持续打印upgrade check result false。

定位到完成Check工作的类是com.alibaba.nacos.naming.core.v2.upgrade.UpgradeJudgement类,改造了checkServiceAndInstanceNumber方法打印Check工作的现场信息。

改造后checkServiceAndInstanceNumber方法如下:

private boolean checkServiceAndInstanceNumber() { boolean result = serviceManager.getServiceCount() == MetricsMonitor.getDomCountMonitor().get(); result &= serviceManager.getInstanceCount() == MetricsMonitor.getIpCountMonitor().get();

    Loggers.SRV_LOG.error("TAG: ServiceCount-{}-{}, InstanceCount-{}-{}", serviceManager.getServiceCount(),
        MetricsMonitor.getDomCountMonitor().get(), serviceManager.getInstanceCount(),
        MetricsMonitor.getIpCountMonitor().get());

    return result;
}

基于改造后的JAR包运行后,发现日志如下:

2021-05-10 14:33:50,785 ERROR TAG: ServiceCount-0-0, InstanceCount-0-0 2021-05-10 14:33:55,775 ERROR TAG: ServiceCount-38-0, InstanceCount-251-251 2021-05-10 14:34:00,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-251 2021-05-10 14:34:05,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-251 2021-05-10 14:34:10,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-251 2021-05-10 14:34:15,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-251 2021-05-10 14:34:20,776 ERROR TAG: ServiceCount-38-38, InstanceCount-251-251 2021-05-10 14:34:25,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-219 2021-05-10 14:34:30,776 ERROR TAG: ServiceCount-38-38, InstanceCount-251-182 2021-05-10 14:34:35,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-182 2021-05-10 14:34:40,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-182 2021-05-10 14:34:45,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-182 2021-05-10 14:34:50,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-182 2021-05-10 14:34:55,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-214 2021-05-10 14:35:00,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-214 2021-05-10 14:35:05,774 ERROR TAG: ServiceCount-38-38, InstanceCount-251-214

也就是说通不过Check的原因是serviceManager.getInstanceCount() == MetricsMonitor.getIpCountMonitor().get()持续返回false.

问题1:请问如何解决以上问题?

问题2:另外,还有1个困惑:假如当前升级成功+关闭双写后,下次重启一个节点是否仍然会做以上检查,如果彼时检查通不过,会不会产生数据一致性问题,而不能正常工作?

原提问者GitHub用户dslztx

展开
收起
学习娃 2023-05-22 16:28:20 196 0
1 条回答
写回答
取消 提交回答
  • 1、由于实例数量无法达到一致,所以无法升级,您可以看一下naming-event,是哪些实例在变化

    2、关闭双写后,关闭双写的标记会被持久化到SwitchDomain里,该内容会通过raft协议持久化,重启后会在启动时读取raft持久化的数据,自动关闭双写,关闭双写的时候会清理掉旧版本的数据内容,只保留新版本的数据内容。应该能够正常工作。

    原回答者GitHub用户KomachiSion

    2023-05-23 09:49:58
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
Nacos架构&原理 立即下载
workshop专场-微服务专场-开发者动手实践营-微服务-使用Nacos进行服务的动态发现和流量调度 立即下载
Nacos 启航,发布第一个版本, 云原生时代助力用户微服务平台建设 立即下载