笔者今天kill掉全部cluster的全部从节点,原本是想试试读写分离的,但Kill掉之后重启之后却无法主从
可以看到,只有主节点在运行,于是笔者进入到redis中 输入命令 cluster nodes 后出现以下的信息
cluster nodes显示的每一行信息,由下面的字段组成。
《id》《ip:port》《flags》《master》《ping-sent》《pong-recv》《config-epoch》《link-state》《slot》《slot》《slot》
每个字段的含义如下
- id: 节点ID,一个40字节的随机字符串,节点创建时生成,且不会变化(除非使用CLUSTER RESET HARD命令)。
- ip:port: 客户端访问的地址。
- flags: 逗号分隔的标记位,可能值有:myself, master, slave, fail?, fail, handshake, noaddr, noflags。
- master: 若是已知master节点的slave,这里出现的是master的节点ID,否则是"-"。
- ping-sent: 最近一次发送ping的unix毫秒时间戳,0代表没有发送过。
- pong-recv: 最近一次收到pong的unix毫秒时间戳。
- config-epoch: 该节点或其master节点的epoch值。每次故障转移都会生成一个新的,唯一的,递增的epoch值。若多个节点竞争相同的slot,epoch值大的获胜。
- link-state: 节点和集群总线间的连接状态,可以是connected或disconnected。
- slot: 该节点负责的slot。
flags字段各标记含义如下:
myself: 当前连接的节点。
master: 节点是master。
slave: 节点是slave。
fail?: 节点处于pfail状态,当前节点无法和其联系,但其它节点可以。
fail: 节点处于fail状态,大多数节点都无法和其联系,将其由pfail升级到fail状态。
handshake: 还没完全加入集群,正在握手阶段。
noaddr: 不知道节点地址。
noflags: 没有任何标记。
根据noaddr的含义,可知有此标记的节点属于无用节点,而笔者通过新增子节点依然无效,最后尝试
ps -aux|grep redis
pkill -9 redis
注意,这里不能kill -9 进程号,需要全部的redis都Kill 掉并且重新启动
/usr/local/redis/bin/redis-server redis.conf
启动时可以会出现无法启动的问题,我们需要清除掉dump.rdb 文件
最后重启成功