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的從節點。