在容器环境下开启快照功能后,由于pod重启后ip会发生变化,会导致一些问题。比如上一次快照的consul1节点ip是127.0.0.1,重启后consul1的实际ip换成了127.0.0.2.但是你查看consul ui,发现他显示的ip还是127.0.0.1.
下面我们通过源码看一下究竟是为啥。
-
首先找到ui调用的接口 127.0.0.1/v1/internal/ui/nodes
image.png -
查看这个方法是通过rpc调用了nodedump
image.png -
这个nodedump其实是一个blockingquery(consul的阻塞查询)
image.png -
这个查询去watch node节点变化
image.png 由于第一次快照后节点并没有变化,而数据用的是快照的数据,所以就导致了页面显示和实际的对不上。但是不影响实际的是用。
解决办法:只能重启节点了。否则没变化是不会更新的。



