docker容器下安裝分布式redis集群3主3從以及擴(kuò)縮容

啟動(dòng)6臺(tái)redis容器實(shí)例

docker run -d --name redis-node-1 --net host --privileged -v /usr/local/zl/tools/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged -v /usr/local/zl/tools/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged -v /usr/local/zl/tools/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged -v /usr/local/zl/tools/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged -v /usr/local/zl/tools/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged -v /usr/local/zl/tools/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
執(zhí)行docker ps查看啟動(dòng)的容器實(shí)例


image.png

配置

進(jìn)入一臺(tái)reids容器,執(zhí)行命令:docker exec -it redis-node-1 /bin/bash,然后執(zhí)行創(chuàng)建redis集群的命令

redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1
image.png

測(cè)試

登錄redis-node-1,執(zhí)行docker exec -it redis-node-1 /bin/bash進(jìn)入容器,執(zhí)行登錄命令redis-cli -p 6381 -c 記得加上-c,以集群方式連接,不加-c表示以單機(jī)形式連接,有時(shí)設(shè)置key會(huì)報(bào)錯(cuò)


image.png

擴(kuò)容

啟動(dòng)兩臺(tái)redis容器作為擴(kuò)容的一主一從

docker run -d --name redis-node-7 --net host --privileged -v /usr/local/zl/tools/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387
docker run -d --name redis-node-8 --net host --privileged -v /usr/local/zl/tools/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

添加節(jié)點(diǎn)進(jìn)去集群

登錄redis-node-1容器,執(zhí)行命令redis-cli --cluster check 127.0.0.1:6381查看集群slot的分布情況,3主3從


image.png

執(zhí)行命令docker exec -it redis-node-7 /bin/bash , 進(jìn)入redis-node-7,執(zhí)行命令redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6381


image.png

執(zhí)行執(zhí)行redis-cli --cluster check 127.0.0.1:6381查看集群的狀態(tài),發(fā)現(xiàn)master數(shù)量變?yōu)?,但是6387暫時(shí)還沒(méi)有分配槽位


image.png

重新分配槽位

執(zhí)行命令redis-cli --cluster reshard 127.0.01:6381,執(zhí)行后,會(huì)提示需要移動(dòng)slot的個(gè)數(shù),16384/4=4096,平均分的話一個(gè)節(jié)點(diǎn)4096個(gè)槽位,然后在輸入移動(dòng)到的節(jié)點(diǎn)的ID也就是node-7的節(jié)點(diǎn)ID:e72e099426014951e94dff62aa680f6a51ab6a31,來(lái)源節(jié)點(diǎn)輸入:all


image.png

再次執(zhí)行命令:redis-cli --cluster check 127.0.0.1:6381檢查集群slots的分配情況


image.png

給6387添加從節(jié)點(diǎn)

執(zhí)行命令redis-cli --cluster add-node 127.0.01:6388 127.0.0.1:6387 --cluster-slave --cluster-master-id e72e099426014951e94dff62aa680f6a51ab6a31
e72e099426014951e94dff62aa680f6a51ab6a31為6387主節(jié)點(diǎn)的ID

再次檢查集群狀態(tài)

執(zhí)行命令redis-cli --cluster check 127.0.0.1:6381,發(fā)現(xiàn)變成了4主4從


image.png

縮容

方案:先刪除6388,分配6387上的slot到其他節(jié)點(diǎn),刪除6387節(jié)點(diǎn)

查看6387以及6388節(jié)點(diǎn)

執(zhí)行命令redis-cli --cluster check 127.0.0.1:6381,6387節(jié)點(diǎn)ID:e72e099426014951e94dff62aa680f6a51ab6a31 6388節(jié)點(diǎn)ID: 19bc4cf11ce605c747dff70b83ee4c2547a838df


image.png

刪除6388

redis-cli --cluster del-node 127.0.0.1:6388 19bc4cf11ce605c747dff70b83ee4c2547a838df

查看集群還剩下4主3從


image.png

重新分配槽號(hào)

redis-cli --cluster reshard 127.0.0.1:6381
需要分配4096個(gè)槽位,這里使用6381這個(gè)節(jié)點(diǎn)來(lái)接收所有的槽位,節(jié)點(diǎn)ID為e9ade431c79ef38649c160f8f3ee301c4c7e5883
source node:來(lái)源表示6387節(jié)點(diǎn)ID的槽點(diǎn),e72e099426014951e94dff62aa680f6a51ab6a31


image.png

重新檢查集群

reids-cli --cluster check 127.0.01:6381
發(fā)現(xiàn)4個(gè)M 3個(gè)S,但是發(fā)現(xiàn)6387上的slot變?yōu)榱?


image.png

刪除6387節(jié)點(diǎn)

redis-cli --cluster del-node 127.0.0.1:6381 e72e099426014951e94dff62aa680f6a51ab6a31
刪除后變?yōu)榱?主3從


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容