redis集羣(5.0版本以前)的搭建,請參考筆者的這篇博客 https://blog.csdn.net/yzf279533105/article/details/103696990
redis集羣(5.0版本以後)的搭建,請參考筆者的這篇博客 https://blog.csdn.net/yzf279533105/article/details/105563361
簡言
1.本篇博客講解redis集羣的操作實驗
2. 實驗例子如集羣的查看 : cluster info ; cluster
示範
1. 單點故障時,集羣的自動修復 -- 當某個redis主節點掛掉時,剩餘的主節點會自動從其從節點中選舉出一個作爲主節點
redis集羣剛建立時,主從情況如下
8001 <- 8006
8002 <- 8004
8003 <- 8005
我們連接進8002的redis,執行命令 cluster nodes 可以看到集羣目前的狀態,master表主節點的意思,後面的數字表該節點負責的slot範圍
可以看到當前的6個redis進程如下
現在我們執行 kill -9 殺掉8002的進程,執行後可以看到只剩下5個redis進程了,因爲8002的進程已經被我們殺掉了
此時我們再通過redis-cli連接進redis,再次運行命令 cluster nodes 可以看到兩個表現
1)8002節點已經被檢測出異常,改爲了fail狀態
2) 原本8002的從節點8004已經升級成了主節點,且完全接管了8002原本負責的slot範圍5461-10922
2. 若某個主節點和它所有的從節點都掛了,那麼redis集羣無法自動進行故障轉移的,就無法提供服務了
接着上面的例子,殺掉8002的進程後,目前redis集羣的狀態是下面這樣的
8001 <- 8006
8004 <- 無從節點
8003 <- 8005
我們再殺掉8004的進程,實驗redis集羣會不會進行自動故障處理
我們再通過redis-cli連接進其他redis節點,再次運行命令 cluster nodes 可以看到
如果我們剛殺掉進程立馬運行 cluster nodes, 那麼redis集羣還沒檢測到問題,認爲集羣依然是OK的
如果我們稍等三四秒後再次運行該命令會看到,redis集羣已經檢測到了該問題,該集羣已經不可用了,只有keys命令可用,其他的命令無論是set,還是get都不行,直接提示 : (error) CLUSTERDOWN The cluster is down
運行 cluster nodes 結果如下