1.新增一个redis,更改端口号为7006,同样放到7006文件夹中。
[root@server redisCluster]#mkdir 7006
[root@server redisCluster]# cp./7000/7000.conf ./7006/7006.conf
[root@server redisCluster]#vi ./7006/7006.conf
2.启动该redis节点服务。
# redis-server ./7006/7006.conf
3.查看redis服务是否启动。
# ps -ef|grep redis
[root@server redisCluster]# ps -ef|grepredis
root 1965 1 0 23:51 ? 00:00:00 redis-server192.168.8.150:7006 [cluster]
root 1970 2954 0 23:52 pts/0 00:00:00 grep redis
root 3537 1 0 Dec29 ? 00:04:14 redis-server192.168.8.150:7000 [cluster]
root 3550 1 0 Dec29 ? 00:04:18 redis-server192.168.8.150:7001 [cluster]
root 3562 1 0 Dec29 ? 00:04:18 redis-server192.168.8.150:7002 [cluster]
root 3575 1 0 Dec29 ? 00:04:17 redis-server192.168.8.150:7003 [cluster]
root 3587 1 0 Dec29 ? 00:04:10 redis-server192.168.8.150:7004 [cluster]
root 3654 1 0 Dec29 ? 00:04:15 redis-server 192.168.8.150:7005[cluster]
4.启动完成之后,进入redis安装目录下src目录下输入增加节点命令。
# cd redis-3.2.9/src/
# ./redis-trib.rb add-node 192.168.8.150:7006 192.168.8.150:7000
执行之后,成功提示:
>>> Adding node192.168.8.150:7006 to cluster 192.168.8.150:7000
>>> Performing ClusterCheck (using node 192.168.8.150:7000)
S: b15e99ebcbcffc1f221412716ee33b03c45a3e3b192.168.8.150:7000
slots: (0 slots) slave
replicatese4922caef55cca4793c16a1767c42602ca8cdb3b
M:4c8f74d896f0b550ae41211e04d5d4fbe44b2bd3 192.168.8.150:7001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M:7e21d69e8038185ea0a419fccfdeed99e7a6fdcb 192.168.8.150:7005
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S:68f45e1b0c4832b6681565a8ddfcdb5195b7b1bd 192.168.8.150:7004
slots: (0 slots) slave
replicates 4c8f74d896f0b550ae41211e04d5d4fbe44b2bd3
M:e4922caef55cca4793c16a1767c42602ca8cdb3b 192.168.8.150:7003
slots:0-5460 (5461 slots) master
1 additional replica(s)
S:5289466e00cdb535512a3d4d4208b619f3313878 192.168.8.150:7002
slots: (0 slots) slave replicates 7e21d69e8038185ea0a419fccfdeed99e7a6fdcb
[OK]All nodes agree about slots configuration.
>>> Check for openslots...
>>> Check slotscoverage...
[OK]All16384 slots covered.
>>>Send CLUSTER MEET to node 192.168.8.150:7006 to make it join the cluster.
[OK] New node added correctly.
加入成功。
5. 使用redis-trib程序,将集群中的某些哈希槽移动到新节点里,这个新节点就成为真正的主节点了,还是在src目录下执行命令对集群中的哈希槽进行移动。
# cd redis-3.2.9/src/
# ./redis-trib.rb reshard 192.168.8.150:7000
执行后信息如下:
[root@server src]# ./redis-trib.rb reshard192.168.8.150:7000
>>> Performing ClusterCheck (using node 192.168.8.150:7000)
S: b15e99ebcbcffc1f221412716ee33b03c45a3e3b192.168.8.150:7000
slots: (0 slots) slave
replicatese4922caef55cca4793c16a1767c42602ca8cdb3b
M:4c8f74d896f0b550ae41211e04d5d4fbe44b2bd3 192.168.8.150:7001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: 7e21d69e8038185ea0a419fccfdeed99e7a6fdcb192.168.8.150:7005
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S:68f45e1b0c4832b6681565a8ddfcdb5195b7b1bd 192.168.8.150:7004
slots: (0 slots) slave
replicates 4c8f74d896f0b550ae41211e04d5d4fbe44b2bd3
M:e4922caef55cca4793c16a1767c42602ca8cdb3b 192.168.8.150:7003
slots:0-5460 (5461 slots) master
1 additional replica(s)
M:82002358e7805a0151bcf63e6fb7255ad4b3d3a3192.168.8.150:7006
slots: (0 slots) master
0 additional replica(s)
S:5289466e00cdb535512a3d4d4208b619f3313878 192.168.8.150:7002
slots: (0 slots) slave
replicates7e21d69e8038185ea0a419fccfdeed99e7a6fdcb
[OK] All nodes agree about slotsconfiguration.
>>> Check for openslots...
>>> Check slotscoverage...
[OK] All 16384 slots covered.
How many slots do you
want to move (from 1 to 16384)? 1000(此处为想移动多少个哈希槽)
What is the receiving node ID? 82002358e7805a0151bcf63e6fb7255ad4b3d3a3(此处为移动到哪一个节点的id,应该为加入的新节点的id)
Please enter all the source nodeIDs.
Type 'all' to use all the nodes as sourcenodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1:all(此处选择all,全部使用并移动,表示从所有主节点中随机转移,凑够1000个哈希槽)
提示信息为,是否执行上述移动的计划,当然是yes、、、
如果输错了或者选择了no之后,就要重新执行移动。
输入yes之后执行,并转移完成。
使用命令查看主节点集群的各个节点信息
命令如下
redis-cli -c -h 192.168.8.150 -p 7000 cluster nodes
操作后信息
[root@server src]# redis-cli -c -h 192.168.8.150 -p 7000 cluster nodes
4c8f74d896f0b550ae41211e04d5d4fbe44b2bd3192.168.8.150:7001master - 0 1514650927177 2connected 5795-10922
7e21d69e8038185ea0a419fccfdeed99e7a6fdcb192.168.8.150:7005master - 0 1514650926169 8connected 11256-16383
68f45e1b0c4832b6681565a8ddfcdb5195b7b1bd192.168.8.150:7004slave 4c8f74d896f0b550ae41211e04d5d4fbe44b2bd30 1514650927682 5 connected
e4922caef55cca4793c16a1767c42602ca8cdb3b192.168.8.150:7003master - 0 1514650927177 7connected 333-5460
b15e99ebcbcffc1f221412716ee33b03c45a3e3b192.168.8.150:7000 myself,slave e4922caef55cca4793c16a1767c42602ca8cdb3b0 0 1 connected
82002358e7805a0151bcf63e6fb7255ad4b3d3a3192.168.8.150:7006 master - 0 1514650926169 9 connected 0-332 5461-579410923-11255
5289466e00cdb535512a3d4d4208b619f3313878192.168.8.150:7002slave 7e21d69e8038185ea0a419fccfdeed99e7a6fdcb0 1514650927682 8 connected
6.如果添加的新节点作为从节点,那么就不必分配转移哈希槽给它了。
操作:
1)再次创建一个新的端口号为7007的redis服务
2)将新的redis节点加入集群中,和上述步骤一样
[root@server local]#cd /usr/local/redis-3.2.9/src/
[root@server src]# ./redis-trib.rb add-node 192.168.8.150:7007 192.168.8.150:7000
[OK] All nodes agree about slotsconfiguration.
>>> Check for openslots...
>>> Check slotscoverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEETto node 192.168.8.150:7007 to make it join the cluster.
[OK] New node added correctly.
成功!
3)使用下面命令,将新加的7007节点成为7006节点的从节点。
# redis-cli -c -h 192.168.8.150 -p 7007 cluster replicate 82002358e7805a0151bcf63e6fb7255ad4b3d3a3
注意,最后面加的是7006主节点的ID。
成功。
3)输入查看集群信息命令查看各节点信息,验证是否成功加入。
# redis-cli -c -h 192.168.8.150 -p 7000 cluster nodes
成功成为了7006的从节点。