原生命令搭建redis cluster 分佈式3主3從node
這裏演示單機多部署(生產環境多機)首先準備6個節點分別是7000-7005端口redis
先配置7000端口shell
這裏說明下cluster相關的配置bash
cluster-enabled表示該節點是否開啓cluster模式分佈式
cluster-config-file 是生成本地cluster的一個配置文件ui
cluster-require-full-coverage 這個是說,若是集羣中有一個節點掛掉,整個集羣將不可用 默認yes 這裏改爲 no,即某節點掛掉,集羣依然對外提供服務。spa
接着配置其餘節點 (同7000)code
接着啓動全部節點ip
這裏咱們隨便選擇一個節點set數據,發現報了個錯部署
這裏由於咱們未分配槽,集羣是不可用的,能夠輸入cluster info命令看下集羣的狀態
將節點配置啓動後,接下來就要進行節點握手(meet操做)
在節點上執行cluster meet ip port 對集羣中某節點進行握手操做
cluster nodes命令列出集羣中全部節點發現6個,其中7000是master節點
再執行下cluster info命令觀察:
兩個節點都發現有6個節點,表名集羣中全部節點都已經互通完畢。
分配槽的命令是 cluster addslots 【slot】其中slot參數就是槽節點一次只能分配一個,若是咱們要爲7000節點分配0~5000這個範圍的槽,要執行5000次命令,所以須要寫一個shell腳原本完成分配槽:
start=$1 end=$2 port=$3 for slot in `seq ${start} ${end}` do echo "slot:${slot}" redis-cli -p ${port} cluster addslots ${slot} done
cluster一共有16384個槽(0-16383) 所以爲了平均分配到3個節點(7000-7002是主,7003-7005是從),咱們計劃16384/3 也就是分別爲 0~546一、5462~1092二、三個範圍。
接下來咱們執行分配槽腳本:
sh addslots.sh 0 5461 7000
sh addslots.sh 5462 10922 7001
sh addslots.sh 10923 16383 7002
執行cluster nodes和cluster info查看,全部槽已經分配完畢。
這時候咱們set一個值就成功了
配置方式:在選擇的從節點上執行 cluster replicate 【nodeId】,nodeId能夠經過cluster nodes得到
執行完後看下節點狀態,發現主從關係已經有了
輸入cluster slots能夠看到槽的分配以及主從
至此,原生手動安裝方式演示完畢!