Redis還是挺好玩的,今天測試了叢集的添加、删除節點、重配置設定slot等。更深入的了解redis的遊戲規則。步驟繁多,但是詳細。
環境解釋:
我是在一台Centos 6.9上測試的,各個redis節點以端口号區分。文中針對各個redis,我隻是以端口号代表。
1
2
3
4
5
6
7
8
9
10
11
<code>~~~~Master Node~~~~~</code>
<code>172.16.32.116:7000</code>
<code>172.16.32.116:7001</code>
<code>172.16.32.116:7002</code>
<code>~~~~Slave Node~~~~~</code>
<code>172.16.32.116:8000</code>
<code>172.16.32.116:8001</code>
<code>172.16.32.116:8002</code>
<code>~~~~用來折騰的Node~~~~~</code>
<code>172.16.32.116:9000</code>
<code>172.16.32.116:9001</code>
1. 建立redis叢集
注:更多redis叢集建立,請參閱
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<code># ./redis-trib.rb </code><code>create</code> <code>--replicas 1 172.16.32.116:7000 172.16.32.116:7001 172.16.32.116:7002 172.16.32.116:8000 172.16.32.116:8001 172.16.32.116:8002</code>
<code>>>> Creating cluster</code>
<code>>>> Performing hash slots allocation </code><code>on</code> <code>6 nodes...</code>
<code>Using 3 masters:</code>
<code>Adding replica 172.16.32.116:8000 </code><code>to</code> <code>172.16.32.116:7000</code>
<code>Adding replica 172.16.32.116:8001 </code><code>to</code> <code>172.16.32.116:7001</code>
<code>Adding replica 172.16.32.116:8002 </code><code>to</code> <code>172.16.32.116:7002</code>
<code>M: a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000</code>
<code> </code><code>slots:0-5460 (5461 slots) master</code>
<code>M: 273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001</code>
<code> </code><code>slots:5461-10922 (5462 slots) master</code>
<code>M: 88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002</code>
<code> </code><code>slots:10923-16383 (5461 slots) master</code>
<code>S: aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000</code>
<code> </code><code>replicates a0b91f48e933c1f1d427c54917ce970bd25d29f8</code>
<code>S: a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001</code>
<code> </code><code>replicates 273107e5ac994d675749be0979556e761274bb93</code>
<code>S: 3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002</code>
<code> </code><code>replicates 88fe075375295b59eabe69fa1438ed7c7c314f43</code>
<code>Can I </code><code>set</code> <code>the above configuration? (type </code><code>'yes'</code> <code>to</code> <code>accept): yes</code>
<code>>>> Nodes configuration updated</code>
<code>>>> Assign a different config epoch </code><code>to</code> <code>each node</code>
<code>>>> Sending CLUSTER MEET messages </code><code>to</code> <code>join</code> <code>the cluster</code>
<code>Waiting </code><code>for</code> <code>the cluster </code><code>to</code> <code>join</code><code>...</code>
<code>>>> Performing Cluster </code><code>Check</code> <code>(using node 172.16.32.116:7000)</code>
<code>M: aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000</code>
<code> </code><code>slots: (0 slots) master</code>
<code>M: a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001</code>
<code>M: 3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002</code>
<code>[OK] </code><code>All</code> <code>nodes agree about slots configuration.</code>
<code>>>> </code><code>Check</code> <code>for</code> <code>open</code> <code>slots...</code>
<code>>>> </code><code>Check</code> <code>slots coverage...</code>
<code>[OK] </code><code>All</code> <code>16384 slots covered.</code>
2. 檢查叢集狀态
<code># ./redis-trib.rb </code><code>check</code> <code>172.16.32.116:7000</code>
<code> </code><code>1 additional replica(s)</code>
<code> </code><code>slots: (0 slots) slave</code>
~~~~~~~~~~~~~~~~~~~~~~~~~~~添加節點~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3. 添加新節點redis-trib.rb add-node 新增節點名 原叢集節點名
<code># ./redis-trib.rb </code><code>add</code><code>-node 172.16.32.116:9000 172.16.32.116:7000</code>
<code>>>> Adding node 172.16.32.116:9000 </code><code>to</code> <code>cluster 172.16.32.116:7000</code>
4. 檢視目前叢集狀态,9000是一個空的Master
<code># ./redis-cli -p 9000 cluster nodes</code>
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 master - 0 1505321254767 1 connected 0-5460</code>
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 master - 0 1505321250759 2 connected 5461-10922</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505321251761 3 connected 10923-16383</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505321255769 3 connected</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505321253765 1 connected</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505321256771 2 connected</code>
5. 為9000配置設定slot, redis的solt是固定的,就16384個,隻能從其他節點擷取slot,然後配置設定到9000
48
49
50
51
52
<code># ./redis-trib.rb reshard 172.16.32.116:9000</code>
<code>>>> Performing Cluster </code><code>Check</code> <code>(using node 172.16.32.116:9000)</code>
<code>M: 364ae8322ab2627e25b05d45b702448c74afad10 172.16.32.116:9000</code>
<code> </code><code>0 additional replica(s)</code>
<code>How many slots do you want </code><code>to</code> <code>move</code> <code>(</code><code>from</code> <code>1 </code><code>to</code> <code>16384)? </code>
<code>What </code><code>is</code> <code>the receiving node ID? 364ae8322ab2627e25b05d45b702448c74afad10 Please enter </code><code>all</code> <code>the source node IDs.</code>
<code> </code><code>Type </code><code>'all'</code> <code>to</code> <code>use </code><code>all</code> <code>the nodes </code><code>as</code> <code>source nodes </code><code>for</code> <code>the hash slots.</code>
<code> </code><code>Type </code><code>'done'</code> <code>once you entered </code><code>all</code> <code>the source nodes IDs.</code>
<code>Source node #1:</code><code>all</code>
<code>Ready </code><code>to</code> <code>move</code> <code>300 slots.</code>
<code> </code><code>Source nodes:</code>
<code> </code><code>M: a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000</code>
<code> </code><code>M: 273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001</code>
<code> </code><code>M: 88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002</code>
<code> </code><code>Destination node:</code>
<code> </code><code>M: 364ae8322ab2627e25b05d45b702448c74afad10 172.16.32.116:9000</code>
<code> </code><code>Resharding plan:</code>
<code> </code><code>Moving slot 5461 </code><code>from</code> <code>273107e5ac994d675749be0979556e761274bb93</code>
<code> </code><code>Moving slot 5469 </code><code>from</code> <code>273107e5ac994d675749be0979556e761274bb93</code>
<code>Do you want </code><code>to</code> <code>proceed </code><code>with</code> <code>the proposed reshard plan (yes/</code><code>no</code><code>)? yes</code>
<code>Moving slot 5461 </code><code>from</code> <code>172.16.32.116:7001 </code><code>to</code> <code>172.16.32.116:9000:</code>
6. 可以看到,9000已經配置設定到的slot是0-98 5461-5561 10923-11021
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 master - 0 1505324905062 1 connected 99-5460</code>
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 master - 0 1505324910075 2 connected 5562-10922</code>
<code>364ae8322ab2627e25b05d45b702448c74afad10 172.16.32.116:9000 myself,master - 0 0 7 connected 0-98 5461-5561 10923-11021</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505324908070 3 connected</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505324911077 1 connected</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505324902057 3 connected 11022-16383</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505324909073 2 connected</code>
~~~~~~~~~~~~~~~~~~~~~~~~~~~将9000變為slave~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7. 希望将9000變成7000的slave,但是由于有slot,執行失敗,需要先轉移slot
<code># redis-cli -c -p 9000 cluster replicate a0b91f48e933c1f1d427c54917ce970bd25d29f8</code>
<code>(error) ERR </code><code>To</code> <code>set</code> <code>a master the node must be empty </code><code>and</code> <code>without assigned slots.</code>
8. 删除節點也是不可以的,總之,隻要上面有slot。redis是不會讓你删除的,而且需要人工介入,rebalance這些slot之後才行
<code># ./redis-trib.rb del-node 172.16.32.116:9000 364ae8322ab2627e25b05d45b702448c74afad10</code>
<code>>>> Removing node 364ae8322ab2627e25b05d45b702448c74afad10 </code><code>from</code> <code>cluster 172.16.32.116:9000</code>
<code>[ERR] Node 172.16.32.116:9000 </code><code>is</code> <code>not</code> <code>empty! Reshard data away </code><code>and</code> <code>try again.</code>
9.重新配置設定9000的slot到7000上
<code># ./redis-trib.rb reshard 172.16.32.116:9000 <<<<<<重新配置設定slot</code>
<code> </code><code>slots:0-98,5461-5561,10923-11021 (299 slots) master</code>
<code> </code><code>slots:99-5460 (5362 slots) master</code>
<code> </code><code>slots:5562-10922 (5361 slots) master</code>
<code> </code><code>slots:11022-16383 (5362 slots) master</code>
<code>How many slots do you want </code><code>to</code> <code>move</code> <code>(</code><code>from</code> <code>1 </code><code>to</code> <code>16384)? 300 <<<9000節點全部需要遷移的節點</code>
<code>What </code><code>is</code> <code>the receiving node ID? a0b91f48e933c1f1d427c54917ce970bd25d29f8 <<<<<<7000的ID</code>
<code>Please enter </code><code>all</code> <code>the source node IDs.</code>
<code>Source node #1:364ae8322ab2627e25b05d45b702448c74afad10 <<<<<<9000的ID</code>
<code>Source node #2:done</code>
<code> </code><code>M: 364ae8322ab2627e25b05d45b702448c74afad10 172.16.32.116:9000 <<<<<<Source nodes</code>
<code> </code><code>M: a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 <<<<<<<Destination node</code>
<code> </code><code>Moving slot 0 </code><code>from</code> <code>364ae8322ab2627e25b05d45b702448c74afad10</code>
<code>.........</code>
<code> </code><code>Moving slot 11021 </code><code>from</code> <code>364ae8322ab2627e25b05d45b702448c74afad10</code>
<code>Moving slot 0 </code><code>from</code> <code>172.16.32.116:9000 </code><code>to</code> <code>172.16.32.116:7000:</code>
<code>Moving slot 1 </code><code>from</code> <code>172.16.32.116:9000 </code><code>to</code> <code>172.16.32.116:7000:</code>
<code>........</code>
10. 查詢,可以看到9000已經沒有slot了
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 master - 0 1505328938056 8 connected 0-5561 10923-11021</code>
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 master - 0 1505328939059 2 connected 5562-10922</code>
<code>364ae8322ab2627e25b05d45b702448c74afad10 172.16.32.116:9000 myself,master - 0 0 7 connected</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505328936053 3 connected</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505328933046 8 connected</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505328937054 3 connected 11022-16383</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505328934049 2 connected</code>
11. 再次執行指令,将9000變成7000的slave,成功
<code>OK</code>
12. 檢視狀态,9000已經成為7000的slave
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 master - 0 1505329564286 8 connected 0-5561 10923-11021</code>
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 master - 0 1505329561281 2 connected 5562-10922</code>
<code>364ae8322ab2627e25b05d45b702448c74afad10 172.16.32.116:9000 myself,slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 0 7 connected <<<<<<<<<<<<<<</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505329558274 3 connected</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505329554266 8 connected</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505329563285 3 connected 11022-16383</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505329562283 2 connected</code>
13. 删除節點9000,成功删除
<code>>>> Sending CLUSTER FORGET messages </code><code>to</code> <code>the cluster...</code>
<code>>>> SHUTDOWN the node.</code>
14. 連接配接9000,發現已經shutdown,無法連接配接
<code>Could </code><code>not</code> <code>connect</code> <code>to</code> <code>Redis </code><code>at</code> <code>127.0.0.1:9000: </code><code>Connection</code> <code>refused</code>
15. 檢視叢集狀态,9000已經不見了
<code># ./redis-cli -p 7000 cluster nodes</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505329693835 3 connected 11022-16383</code>
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 master - 0 1505329694837 2 connected 5562-10922</code>
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 myself,master - 0 0 8 connected 0-5561 10923-11021</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505329696841 6 connected</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505329695840 5 connected</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505329692833 8 connected</code>
~~~~~~~~~~~~~~~~~~~~~~~~~~~再次啟動9000,發現不同~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16. 再次啟動9000,發現一個有意思的事情。上面檢查7000,叢集已經沒有9000了
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505329898241 3 connected 11022-16383</code>
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 master - 0 1505329899242 2 connected 5562-10922</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505329902249 6 connected</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505329901246 5 connected</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505329900244 8 connected</code>
17. 但是檢視9000,确仍然能看到整個叢集的資訊。說明,在删除節點的過程,隻是在原有叢集中删除9000的資訊。但是9000自身的資訊并沒有被删除,依然保留全部的資訊,隻是9000執行個體被關閉而已。
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 master - 0 1505329902003 8 connected 0-5561 10923-11021</code>
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 master - 0 1505329903006 2 connected 5562-10922</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505329906013 3 connected</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505329908019 2 connected</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505329904008 8 connected</code>
<code>364ae8322ab2627e25b05d45b702448c74afad10 172.16.32.116:9000 myself,slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 0 7 connected</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505329907016 3 connected 11022-16383</code>
18. 而9000的全部資訊,是記錄在自身目錄的nodes.conf中
<code># more nodes.conf</code>
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 master - 0 1505329544244 8 connected 0-5561 10923-11021</code>
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 master - 0 1505329542241 2 connected 5562-10922</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505329541239 3 connected</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505329545246 8 connected</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505329543242 3 connected 11022-16383</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505329546248 2 connected</code>
<code>vars currentEpoch 8 lastVoteEpoch 0</code>
19. 到7001等其他節點中檢視,nodes.conf已經沒有9000的資訊
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 myself,master - 0 0 2 connected 5562-10922</code>
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 master - 0 1505329680312 8 connected 0-5561 10923-11021</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505329684319 8 connected</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505329686321 6 connected</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505329685318 5 connected</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505329683317 3 connected 11022-16383</code>
~~~~~~~~~~~~~~~~~~~~~~~~~~~再次添加9000,以及9001~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20. 将9000和9001再次加入叢集,開始下面的折騰。
注意:需要将9000和9001下的redis.conf外的檔案清除,重新開機。然後才能再次加入叢集。不然會遇到錯誤:
<code>[ERR] Node 172.16.32.116:9001 </code><code>is</code> <code>not</code> <code>empty. Either the node already knows other nodes (</code><code>check</code> <code>with</code> <code>CLUSTER NODES) </code><code>or</code> <code>contains</code> <code>some</code> <code>key</code> <code>in</code> <code>database</code> <code>0.</code>
21. 加入叢集
<code>./redis-trib.rb </code><code>add</code><code>-node 172.16.32.116:9000 172.16.32.116:7002</code>
<code>./redis-trib.rb </code><code>add</code><code>-node 172.16.32.116:9001 172.16.32.116:7002</code>
22. 現在是兩個空的Master節點
<code># ./redis-trib.rb </code><code>check</code> <code>172.16.32.116:9001</code>
<code>>>> Performing Cluster </code><code>Check</code> <code>(using node 172.16.32.116:9001)</code>
<code>M: c4ba7a1f537ac66076791461d6af9012741fee74 172.16.32.116:9001</code>
<code>M: dbf78b73f2ab9e37cbf31abbc2beb3d5413d5516 172.16.32.116:9000</code>
<code> </code>
23. 重配置設定100個slot到9000上,其實redis很聰明的,我連接配接的是9001,但是在配置設定的時候,它會問你,receiving node是誰,Source node 是誰。
<code># ./redis-trib.rb reshard 172.16.32.116:9001</code>
<code>......</code>
<code>How many slots do you want </code><code>to</code> <code>move</code> <code>(</code><code>from</code> <code>1 </code><code>to</code> <code>16384)? 100</code>
<code>What </code><code>is</code> <code>the receiving node ID? dbf78b73f2ab9e37cbf31abbc2beb3d5413d5516 <<<<<<<<<receiving node ID</code>
<code>Source node #1:aeb684429d220c0fd1392574d193cc1ae7577782 <<<<<<<Source node我選的是 8000</code>
<code>*** The specified node </code><code>is</code> <code>not</code> <code>known </code><code>or</code> <code>is</code> <code>not</code> <code>a master, please retry. <<<<<<<然而,并沒能欺騙redis,它發現了,這個是slave,沒有slot可以提供的。 </code>
<code>Source node #1:273107e5ac994d675749be0979556e761274bb93 <<<<<<<<Source node再次指定為7001,開始配置設定了</code>
<code>Ready </code><code>to</code> <code>move</code> <code>100 slots.</code>
<code> </code><code>M: dbf78b73f2ab9e37cbf31abbc2beb3d5413d5516 172.16.32.116:9000</code>
<code> </code><code>Moving slot 5562 </code><code>from</code> <code>273107e5ac994d675749be0979556e761274bb93</code>
<code> </code><code>Moving slot 5563 </code><code>from</code> <code>273107e5ac994d675749be0979556e761274bb93</code>
24. 檢視配置設定情況,redis還是很聰明靈活的。
<code># redis-cli -p 7001 cluster nodes</code>
<code>273107e5ac994d675749be0979556e761274bb93 172.16.32.116:7001 myself,master - 0 0 2 connected 5662-10922</code>
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 master - 0 1505330856605 8 connected 0-5561 10923-11021</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505330853598 8 connected</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505330860611 6 connected</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505330859608 5 connected</code>
<code>c4ba7a1f537ac66076791461d6af9012741fee74 172.16.32.116:9001 master - 0 1505330862615 9 connected <<<<<<<<<<<<<<<<<<<<<依然是空的</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505330861612 3 connected 11022-16383</code>
<code>dbf78b73f2ab9e37cbf31abbc2beb3d5413d5516 172.16.32.116:9000 master - 0 1505330858607 10 connected 5562-5661 <<<<<<<<<<<<<<<<<<<<<從7001要來100個slot</code>
25. 将9001添加為9000的slave節點 redis-cli -p <slave IP:port> cluster nodes <Master ID 号>
<code># redis-cli -p 9001 cluster nodes dbf78b73f2ab9e37cbf31abbc2beb3d5413d5516</code>
<code>a0b91f48e933c1f1d427c54917ce970bd25d29f8 172.16.32.116:7000 master - 0 1505331457798 8 connected 0-5561 10923-11021</code>
<code>aeb684429d220c0fd1392574d193cc1ae7577782 172.16.32.116:8000 slave a0b91f48e933c1f1d427c54917ce970bd25d29f8 0 1505331454791 8 connected</code>
<code>3d27f60a1cc4d9c8f09aca928b03f0e083722d3b 172.16.32.116:8002 slave 88fe075375295b59eabe69fa1438ed7c7c314f43 0 1505331456795 6 connected</code>
<code>a96cad95dca2a8e1e0302bff4f835260d92e3d31 172.16.32.116:8001 slave 273107e5ac994d675749be0979556e761274bb93 0 1505331458799 10 connected</code>
<code>c4ba7a1f537ac66076791461d6af9012741fee74 172.16.32.116:9001 slave dbf78b73f2ab9e37cbf31abbc2beb3d5413d5516 0 1505331459801 10 connected</code>
<code>88fe075375295b59eabe69fa1438ed7c7c314f43 172.16.32.116:7002 master - 0 1505331455793 3 connected 11022-16383</code>
<code>dbf78b73f2ab9e37cbf31abbc2beb3d5413d5516 172.16.32.116:9000 master - 0 1505331453788 10 connected 5562-5661</code>
經過各種折騰,redis添加,删除,重配置設定slot等操作,都測試完了。
中間有很多指令輸出部門,視乎有點重複。但是為了更好的閱讀了解,觀察每一步操作的變化。後面查閱也更容易一些。
畢竟,年紀大了,記性不好。好多自己寫過的blog,回頭翻閱的時候,發現某些步驟,不是很好了解了。雖然我的blog,都是基于自己測試的結果,但是依然會忘記。
本文轉自 hsbxxl 51CTO部落格,原文連結:http://blog.51cto.com/hsbxxl/1965706,如需轉載請自行聯系原作者