问题描述
protocol-raft.log文件经常巨大无比
具体错误
java.lang.IllegalStateException: Fail to get leader of group naming_service_metadata, Unknown leaderjava.lang.IllegalStateException: Fail to get leader of group naming_persistent_service_v2, Unknown leader
原因分析:
按日志提示就是无法选举出服务器
但是nacos又是活的,并且还能进行服务注册
解决方案:
方案一:
进入docker 容器内的 /data/protocol 下的东西全部删除,重启nacos,问题解决,但是过了一段时间,又发现日志又开始重复上面那个错误了
由此再次判断可能是因为网络问题引起的,重启了只能初步解决问题,查看nacos管理界面的节点列表,果然发现问题,发现节点列表的IP 和 里面的 【节点元素】的Ip不一致,而节点元素里面有的关键字正是:
naming_instance_metadata、naming_persistent_service_v2、naming_service_metadata就是日志中报的错误
大概知道问题原因了,因为nacos采用容器模式 , 里面分配的IP可能会随着容器重启会被dhcp重新再分配,导致配置文件出错(个人认为nacos本身也有问题,这个是需要优化和自适应的,毕竟nacos还能正常运行)
方案二:
给容器一个固定ip: 创建自定义网络,给静态IP给容器
方案三:
创建容器时候,指定服务IP地址为 127.0.0.1 ,不用nacos自动获取容器内部hdcp分配的IP,再用端口映射代理出去
添加容器启动参数
-e NACOS_SERVER_IP=127.0.0.1