51的內容長度限制,這裏繼續 redis cluster 的簡單使用和維護。
7,下面簡單測試一下 cluster
7.1 測試數據分佈
使用 redis-cli 來測試 cluster shard,可以看到 foo->bar 被存儲到了 7002 節點上,並且自動跳轉到了 7002 上,然後 7002 上 hello-world 是存儲在 7000 上,再次重定向到 7000 節點上了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
7.2 reshard
重新分佈,這裏測試reshard 1000 個 slots 到 7000 節點的情形:
1 2 3 4 5 6 7 8 9 10 11 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 |
|
7.3 failover 測試(這裏沒有做一致性檢查,只是看一下是否 master-slave 做了切換)
首先通過 debug segfault 命令停止了 7002 節點(從上面的運行日誌中,可以看到該節點爲 master 節點)
1 2 3 4 5 6 7 8 9 10 |
|
然後從 cluster nodes 命令輸出可以看到 7002 節點 fail,同時它的 slave 7005 節點升級爲了 master 節點
1 2 3 4 5 6 7 8 |
|
把 7002 節點再次啓動後,7002 節點自動成爲了 7005 節點的 slave 節點
1 2 3 4 5 6 7 8 |
|
7.4 新增節點
7.4.1 新增 master 節點
默認是新增一個 master 節點,同樣的,這裏測試是先新增 7006/ 目錄,再編輯 redis.conf 配置文件
在 7006 目錄下啓動 7006 節點 redis-server redis.conf
下面通過 redis-trib 工具在當前的 cluster 中新增 7006 節點
1 2 3 4 5 6 7 8 9 |
|
此時,7006 節點已經加入 cluster,可以接收客戶端的指令,並執行 redirection
7.4.2 新增 slave 節點
有兩種方式來添加 slave 節點:
1) 通過 --slave 選項添加 slave 節點,這裏以新增的 7007 節點作爲 7005(當前已經爲master節點)的 slave 節點爲例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
2) 通過 cluster replicate 命令來添加 slave 節點,如下:
1 2 |
|
---------
7.4 刪除節點
7.4.1 刪除 slave 節點
對於刪除 slave 節點,可以直接使用 redis-trib 的 del-node 命令來刪除,如:
1 |
|
node-id 爲待刪除的slave節點的 NodeID。
7.4.2 刪除 master 節點
也可以使用 del-node 命令來刪除 master 節點,但是必須爲空,因此需要在刪除 master 節點之前先通過 reshard 將數據遷移至其他的 master 節點上。
當然也可以使用上面的 CLUSTER FAILOVER 命令來刪除 master 節點,並選擇一個 slave 作爲新的 master 節點。