Nacos 常见问题
大约 1 分钟
Nacos 常见问题
[1]failover switch is not found, failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00
将Nacos日志设置到Debug级别,在服务运行起来之后,就会发现控制台持续输出以上Debug信息。
说明
这不是代码Bug,而是Nacos自身机制,想要详细了解请阅读Nacos源代码或自行百度。
这是Nacos Client本地缓存及故障转移机制。在Nacos源代码中,ServiceInfoHolder的构造方法中,会初始化一个FailoverReactor类。FailoverReactor的作用便是用来处理故障转移的。
FailoverReactor的构造方法会拼接故障根目录:${user.home}/nacos/naming/public/failover,其中public也有可能是其他的自定义命名空间;
主要逻辑就是:
基本操作就是读取failover目录,查找故障转移【开关】文件为名为“failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00”。
如果故障转移文件不存在,则直接返回,不断输出Debug信息。
如果故障转移文件存在,比较文件修改时间,如果已经修改,则获取故障转移文件中的内容。
故障转移文件中存储了0和1标识。0表示关闭,1表示开启。
当为开启状态时,执行线程FailoverFileReader。
解决办法
- 将Nacos日志级别调整为INFO级别以上。
- 手动在
${user.home}/nacos/naming/public
目录下,新建文件failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00
。