关于nacos无法正常下线问题记录

 更新时间:2024年07月29日 09:23:10   作者:113部的小马  
这篇文章主要介绍了关于nacos无法正常下线问题记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题描述

公司搭建了nacos集群,但是在微服务下线时会无法正常下线,点击下线提示

caused: errCode: 500, errMsg: do metadata operation failed ;caused: com.alibaba.nacos.consistency.exception.ConsistencyException: com.alibaba.nacos.core.distributed.raft.exception.NoLeaderException: The Raft Group [naming_instance_metadata] did not find the Leader node;caused: com.alibaba.nacos.core.distributed.raft.exception.NoLeaderException: The Raft Group [naming_instance_metadata] did not find the Leader node;
ERROR Fail to refresh route configuration for group : naming_instance_metadata, status is : Status[UNKNOWN<-1>: Fail to get leader of group naming_instance_metadata]
ERROR Fail to refresh route configuration for group : naming_service_metadata, status is : Status[UNKNOWN<-1>: Fail to get leader of group naming_service_metadata]

解决方案

单机情况下直接删除data/protocol文件夹重启就可以解决,但是我们使用的是集群部署的模式,尝试删除此文件夹重启后问题依旧存在。

经过对比发现集群节点的元数据是不正常的

{
    "lastRefreshTime": 1648556157101,
    "raftMetaData": {
        "metaDataMap": {
            "naming_persistent_service": {
                "leader": "192.168.96.77:7848",
                "raftGroupMember": [
                    "192.168.96.77:7848",
                    "192.168.96.79:7848",
                    "192.168.96.82:7848"
                ],
                "term": 5
            }
        }
    },
    "raftPort": "7848",
    "version": "2.0.3"
}

下面才是正常的元数据

{
    "lastRefreshTime": 1648604205057,
    "raftMetaData": {
        "metaDataMap": {
            "naming_instance_metadata": {
                "leader": "192.168.3.156:7852",
                "raftGroupMember": [
                    "192.168.3.156:7852",
                    "192.168.3.156:7848",
                    "192.168.3.156:7850"
                ],
                "term": 29
            },
            "naming_persistent_service": {},
            "naming_persistent_service_v2": {
                "leader": "192.168.3.156:7852",
                "raftGroupMember": [
                    "192.168.3.156:7852",
                    "192.168.3.156:7848",
                    "192.168.3.156:7850"
                ],
                "term": 29
            },
            "naming_service_metadata": {
                "leader": "192.168.3.156:7852",
                "raftGroupMember": [
                    "192.168.3.156:7852",
                    "192.168.3.156:7848",
                    "192.168.3.156:7850"
                ],
                "term": 29
            }
        }
    },
    "raftPort": "7848",
    "readyToUpgrade": true,
    "version": "2.0.4"
}

虽然本地的版本和线上的版本不一致,但是可以看出来正常的nacos集群选举出来的元数据有naming_persistent_service、naming_service_metadata、naming_instance_metadata这三个字段同时出现的。

所以大概可以猜到是我们线上的nacos选举出现了问题。

检查了线上的各个端口后并没有发现端口不通的问题,经过查找资料,我认为应该是多个网卡导致的nacos识别网卡不正确导致的问题。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring的@RequestParam对象绑定方式

    Spring的@RequestParam对象绑定方式

    这篇文章主要介绍了Spring的@RequestParam对象绑定方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • SpringBoot集成阿里云OSS图片上传

    SpringBoot集成阿里云OSS图片上传

    这篇文章主要为大家详细介绍了SpringBoot集成阿里云OSS图片上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 使用spring连接及操作mongodb3.0实例

    使用spring连接及操作mongodb3.0实例

    这篇文章主要介绍了使用spring连接及操作mongodb3.0实例,详细的介绍了使用spring的情况下,在java中简单操作mongodb。有兴趣的可以了解一下。
    2016-12-12
  • Java深入了解数据结构之优先级队列(堆)

    Java深入了解数据结构之优先级队列(堆)

    普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现
    2022-01-01
  • JDK9为何要将String的底层实现由char[]改成了byte[]

    JDK9为何要将String的底层实现由char[]改成了byte[]

    String 类的源码已经由 char[] 优化为了 byte[] 来存储字符串内容,为什么要这样做呢?本文就详细的介绍一下,感兴趣的可以了解一下
    2022-03-03
  • SpringMVC实现全局异常处理器的经典案例

    SpringMVC实现全局异常处理器的经典案例

    文章介绍了如何使用@ControllerAdvice和相关注解实现SpringMVC的全局异常处理,通过统一的异常处理类和自定义业务异常类,可以将所有控制器的异常集中处理,并以JSON格式返回给前端,感兴趣的朋友一起看看吧
    2025-03-03
  • MyBatis连接池的深入和动态SQL详解

    MyBatis连接池的深入和动态SQL详解

    这篇文章主要介绍了MyBatis连接池的深入和动态SQL详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring Boot 配置 Hikari 数据库连接池的操作代码

    Spring Boot 配置 Hikari 数据库连接池的操作代码

    数据库连接池是一个提高程序与数据库的连接的优化,连接池它主要作用是提高性能、节省资源、控制连接数、连接管理等操作,这篇文章主要介绍了SpringBoot配置Hikari数据库连接池,需要的朋友可以参考下
    2023-09-09
  • 如何使用新方式编写Spring MVC接口

    如何使用新方式编写Spring MVC接口

    这篇文章主要介绍了如何使用新方式编写Spring MVC接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • java String.split 无法使用小数点分割的问题

    java String.split 无法使用小数点分割的问题

    这篇文章主要介绍了java String.split 无法使用小数点分割的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论