问题记录
- 一、问题描述
- 1.1 产生原因
- 1.2 产生问题
- 二、问题解决
- 2.1 docker部署的nacos解决方案
- 2.1.1 进入nacos容器
- 2.1.2 查看当前目录
- 2.1.3 进入data文件夹
- 2.1.4 删除protocol文件
- 2.2 本地部署的nacos
一、问题描述
1.1 产生原因
在运行项目时,在本地启动了一个服务,但是在虚拟机中也有相同的服务启动,因为是在开发阶段,要先在本地进行代码编写,完成后再提交到服务器进行部署上线。
我在本地修改完代码后,需要与网关联调,进行测试,但由于本地和服务器都启动了该服务,所以需要在nacos的服务中心对该服务的两个实例(本地、虚拟机)中的一个进行权重的修改,目的是保证服务请求一定进入本地启动的服务。
1.2 产生问题
我在修改权重时,点击确定后,nacos产生了报错信息,如(caused: errCode: 500, errMsg: do metadata operation failed ;caused: com.alibaba.nacos.consistency.exception.ConsistencyException:
The Raft Group [naming_instance_metadata] did not find the Leader node;caused: The Raft Group [naming_instance_metadata] did not find the Leader node;)
二、问题解决
在网上找到的解决方案主要是以下几个:
- 检查网络:确保Nacos集群中的所有节点之间的网络通信是正常的。网络分区或网络故障可能导致节点之间的通信中断,从而影响Raft协议的正常工作。
- 检查节点状态:检查Nacos集群中所有节点的状态,确保它们都在正常运行。如果有节点故障,需要修复或更换故障节点。
- 检查配置:检查Nacos的配置,特别是与Raft协议相关的配置,确保它们是正确的。不正确的配置可能导致Raft协议无法正常工作。
- 日志分析:详细分析Nacos的日志,这可能帮助你找到问题的根本原因。例如,你可能能找到关于节点为何无法选举Leader,或者为何Leader节点无法被其他节点找到的更多信息。
大部分的报错原因应该都是网络节点的问题,一般解决方案都是删除nacos目录下data目录中的protocol文件夹,但是我是用docker部署的nacos,其实也是一样的
2.1 docker部署的nacos解决方案
2.1.1 进入nacos容器
docker exec -it nacos bash
2.1.2 查看当前目录
ls
2.1.3 进入data文件夹
cd data
2.1.4 删除protocol文件
rm -rf protocol/
- 做完这些后重启nacos,然后再修改权重即可成功
2.2 本地部署的nacos
找到本地nacos安装目录,找到data文件夹,删除protocol文件即可