pong|Redis高可用架构—Redis集群(Redis Cluster)详细介绍( 三 )


其中 , 第一个参数是新的Redis节点的IP和端口 , 第二个参数是任意一个已经存在的Redis节点的IP和端口 。 执行之后效果如下:

上面命令执行成功之后 , 新的节点就已经添加到集群中了 , 可以通过cluster nodes命令查看:

但此时 , 这个新的master节点上是没有分配任何哈希槽的 , 我们还需要使用下面命令重新分配master节点的哈希槽:
redis-cli --cluster reshard 192.168.31.79:7006 --cluster-from 已有节点id , 多个id之间使用半角逗号分隔 --cluster-to 新节点id --cluster-slots 新节点的哈希槽数量
其中 , 节点id可以从cluster nodes结果中查看:

此处 , 我们需要将之前已存在的3个master节点上的部分哈希槽重新分配给新的节点 , 执行后结果如下:

输入yes确认后 , 结果如下 , 可以看到哪些哈希槽被分配到了新节点:

此时 , 就可以用该节点操作数据了:

●添加一个slave节点:添加slave节点与添加master节点差不多 , 我们首先在一台虚拟机上启动一个端口为7007的Redis实例 , 然后执行下面的命令将该Redis实例添加到集群中:
./bin/redis-cli --cluster add-node --slave 192.168.31.79:7007 192.168.31.77:7000 --cluster-master-id 0a55dba682340a513cce51a626e81c1789423249
其中 , --slave表示添加的是slave节点 , 192.168.31.79:7007是要添加的新节点 , 192.168.31.77:7000是集群中任意一个节点 , --cluster-master-id后面跟的是新的slave节点要添加到哪个master节点下面 , 此处 , 我们将新的slave节点添加到192.168.31.79:7006这台master节点下 。 执行结果如下:

此时 , cluster nodes结果中可以看到新的节点已经加入集群中了:

并且 , 使用新的节点也可以正常查询数据:

从Redis集群中移除节点移除集群中某个节点也分两种情况:移除master节点和移除slave节点 。
●移除master节点:由于master节点上分配的有哈希槽 , 所以当移除某个master节点之前 , 需要先将该节点上的哈希槽分配到其他节点上 , 然后在移除该节点 。
首先通过下面命令重新分配哈希槽:
redis-cli --cluster reshard 192.168.31.79:7006
其中 , 192.168.31.79:7006表示要删除的master节点地址和端口 。
然后 , 执行下面命令移除该节点:
redis-cli --cluster del-node 192.168.31.79:7006 节点id 。
●移除slave节点:移除slave节点比较简单 , 直接执行下面命令移除即可:
【pong|Redis高可用架构—Redis集群(Redis Cluster)详细介绍】redis-cli --cluster del-node 192.168.31.79:7007 节点id
其中 , 192.168.31.79:7007表示要删除的slave节点地址和端口 , 节点id表示该节点的id 。
点关注不迷路 , 跟我一起学技术!