关于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识别网卡不正确导致的问题。

总结

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

相关文章

  • Java 超详细图解集合框架的数据结构

    Java 超详细图解集合框架的数据结构

    什么是集合框架呢?集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。最简单的集合如数组、列表和队列等,任何集合框架一般包含:对外的接口、接口的实现和对集合运算的算法
    2022-04-04
  • JAVA各种OOM代码示例与解决方法

    JAVA各种OOM代码示例与解决方法

    这篇文章主要给大家介绍了关于JAVA各种OOM代码示例与解决方法的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • Java ArrayDeque使用方法详解

    Java ArrayDeque使用方法详解

    这篇文章主要为大家详细介绍了Java ArrayDeque的使用方法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Spring Boot 使用观察者模式实现实时库存管理的步骤

    Spring Boot 使用观察者模式实现实时库存管理的步骤

    在现代软件开发中,实时数据处理非常关键,本文提供了一个使用SpringBoot和观察者模式开发实时库存管理系统的详细教程,步骤包括创建项目、定义实体类、实现观察者模式、集成Spring框架、创建RESTful API端点和测试应用等,这将有助于开发者构建能够即时响应库存变化的系统
    2024-09-09
  • JAVA用for循环打印空心菱形

    JAVA用for循环打印空心菱形

    大家好,本篇文章主要讲的是JAVA用for循环打印空心菱形,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 教你怎么使用Java实现WebSocket

    教你怎么使用Java实现WebSocket

    这篇文章主要介绍了教你怎么使用Java WebSocket,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • Java常用正则表达式验证工具类RegexUtils.java

    Java常用正则表达式验证工具类RegexUtils.java

    相信大家对正则表达式一定都有所了解和研究,这篇文章主要为大家分享了Java 表单注册常用正则表达式验证工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 在Java中Collection的一些常用方法总结

    在Java中Collection的一些常用方法总结

    今天给大家带来的知识是关于Java的,文章围绕着Java中Collection的一些常用方法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java如果通过jdbc操作连接oracle数据库

    Java如果通过jdbc操作连接oracle数据库

    这篇文章主要介绍了Java如果通过jdbc操作连接oracle数据库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • spring-boot-maven-plugin 配置有啥用

    spring-boot-maven-plugin 配置有啥用

    这篇文章主要介绍了spring-boot-maven-plugin 配置是干啥的,这个是SpringBoot的Maven插件,主要用来打包的,通常打包成jar或者war文件,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08

最新评论