向集群中添加新节点,有两种情况:
(1)添加一个新节点,做为master,需要移动一部分slot到此节点
(2)添加一个新节点,做为slave,设置为集群中某个节点的slave
添加master
(1)配置启动新节点
在之前创建集群的目录下新建目录 7006
复制 7005 下的 redis.conf 到 7006
编辑 7006/redis.conf 修改端口号为 7006
在 7006 目录下执行 redis-server redis.conf
执行命令
ps -ef | grep redis
查看7006端口的redis是否启动成功
(2)添加到集群
redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000
>>> Adding node 127.0.0.1:7006 to cluster 127.0.0.1:7000
......
[OK] New node added correctly
add-node 表示我们要将一个节点添加到集群里面
127.0.0.1:7006 是新节点的IP地址和端口号
127.0.0.1:7000 是集群中任意一个已存在节点的 IP 地址和端口号
(3)检查新节点
执行集群节点的检查命令
redis-trib.rb check 127.0.0.1:7000
......
M: ba1887453858e3d66f87092f2600a76a0d220f12 127.0.0.1:7006
slots: (0 slots) master
0 additional replica(s)
......
可以看到,出现了一个新的master节点,slot的数量为 0
(4)向新节点移动slot
使用之前介绍的集群重新分片方法,把一部分slot移动到这个新节点,它就可以正常工作了
添加slave
和上面一样,配置启动新的redis节点,并添加到集群,然后登陆到新节点,指定做为哪个节点的slave就可以了
操作:
使用客户端命令登陆到新节点
redis-cli -c -p 7006
查看集群中各个节点的信息
127.0.0.1:7006> cluster nodes
这里我们把新节点指定为7002的slave,复制7002的节点ID,执行:
127.0.0.1:7006> cluster replicate 9b569ab95eb442550299dab16aef6a5c5db295cf
注意,只能设置为master的slave,不能设置为现有slave节点的slave
再次查看集群节点信息,就可以看到从属关系了
127.0.0.1:7006> cluster nodes