錯(cuò)誤日志:
request: /nacos/v1/ns/instance/beat failed, servers: [xxx.xxx.xx.xxxx:8848], code: 503, msg: server is DOWN now, please try again later!
[CLIENT-BEAT] failed to send beat: {"cluster":"DEFAULT","ip":"192.168.0.107","metadata":{"preserved.register.source":"SPRING_CLOUD"},"period":5000,"port":8080,"scheduled":false,"serviceName":"DEFAULT_GROUP@@ROUTEBASESERVICE","stopped":false,"weight":1.0}, code: 503, msg: failed to req API:/api//nacos/v1/ns/instance/beat after all servers([192.168.0.107:8848]) tried: server is DOWN now, please try again later!
protocol-raft.log中日志:
java.lang.IllegalArgumentException: Blank leader
at com.alipay.sofa.jraft.util.Requires.requireTrue(Requires.java:85)
at com.alipay.sofa.jraft.RouteTable.updateLeader(RouteTable.java:181)
at com.alipay.sofa.jraft.RouteTable.refreshLeader(RouteTable.java:264)
at com.alibaba.nacos.core.distributed.raft.JRaftServer.refreshRouteTable(JRaftServer.java:501)
at com.alibaba.nacos.core.distributed.raft.JRaftServer.lambda$createMultiRaftGroup$1(JRaftServer.java:276)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
2020-12-21 16:41:50,677 INFO shutdown jraft server
start.out輸出正常
背景:
1坷襟、nacos版本:1.4;jdk8
2、單機(jī)模式下(非首次啟動(dòng))config可以正確注冊(cè)獲取瞬场,discovery無法正常注冊(cè)服務(wù)
錯(cuò)誤原因:
nacos1.4.0使用了jraft聪姿, jraft會(huì)記錄前一次啟動(dòng)的集群地址乾胶,如果重啟機(jī)器ip變了的話褥影,會(huì)導(dǎo)致jraft記錄的地址失效飒筑,從而導(dǎo)致選主出問題。
解決辦法:
刪除{nacos.home}/nacos/data/protocol文件夾后重新啟動(dòng)
參考資料:
https://github.com/alibaba/nacos/issues/4210