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