在redis-cli终端执行cluster nodes命令如下:
> cluster nodes
fefc8a5afb007617102171cb1731daca38adeb3d 127.0.0.1:32521@42521 master - 0 1640833962176 10 connected 0-5460
dbc6571081e55390bdd8dfdc78d4c489cf16d8e2 127.0.0.1:32507@42507 myself,slave fefc8a5afb007617102171cb1731daca38adeb3d 0 1640833961000 10 connected
89ab3aac9d50fee47c2f53936066b3d38903c551 127.0.0.1:32506@42506 slave fefc8a5afb007617102171cb1731daca38adeb3d 0 1640833963179 16 connected
4eed23624e241463834bbd3d7d08905a42242fb5 127.0.0.1:32507@42507 slave 5624f550a15a1bc0d9a91e0018496b3691c81ab0 0 1640833963680 15 connected
5624f550a15a1bc0d9a91e0018496b3691c81ab0 127.0.0.2:32521@42521 master - 0 1640833962000 15 connected 5461-10922
ab7992e5d868b4ec9bf0a2ed32f10c76d6c455ff 127.0.0.1:32515@42515 master - 0 1640833960000 0 connected 10923-16383
e12e40cb760017825a7e5993f75de4c26bc149a1 127.0.0.2:32507@42507 slave ab7992e5d868b4ec9bf0a2ed32f10c76d6c455ff 0 1640833961000 13 connected
上述9项结果各项的含义如下:
myself: 当前连接的节点
master: 节点是master
slave: 节点是slave
fail?: 节点处于PFAIL 状态。 当前节点无法联系,但逻辑上是可达的 (非 FAIL 状态)
fail: 节点处于FAIL 状态. 大部分节点都无法与其取得联系将会将改节点由 PFAIL 状态升级至FAIL状态
handshake: 还未取得信任的节点,当前正在与其进行握手
noaddr: 没有地址的节点
noflags: 没有标记(No flags at all)
1、config-epoch 和 2、current-epoch:
每个主节点自身维护一个配置纪元(clusterNode.configEpoch)标示当前主节点的版本,所有主节点的配置纪元都不相等,从节点会复制主节点的配置纪元,主要解决不同的节点的配置发生冲突的情况;
整个集群又维护一个全局的配置纪元(clusterState.current Epoch),用于记录集群内所有主节点配置纪元的最大版本:当集群的状态发生改变,某个节点为了执行一些动作需要寻求其他节点的同意时,就会增加自己的 currentEpoch 的值,比如slave节点故障转移。
执行cluster info命令可以查看配置纪元信息:
127.0.0.1:6379> cluster info
...
cluster_current_epoch:15 // 整个集群最大配置纪元
cluster_my_epoch:13 // 当前主节点配置纪元
配置纪元的应用场景有:
·新节点加入。
·槽节点映射冲突检测。
·从节点投票选举冲突检测。
每次集群发生重要事件时,如出现新的主节点(新加入的或者由从节点转换而来),或从节点竞争选举。都会递增集群全局的配置纪元并赋值给相关主节点,用于记录这一关键事件。