您現在的位置是:首頁 > 動漫首頁動漫
Docker高階篇:實戰!從3主3從變為4主4從
怎麼刪除linux系統
透過前面兩篇,我們學會了三主三從的Redis叢集搭建及主從容錯切換遷移,隨著業務增加,可能會有主從擴容的,所以,本文我們來實戰主從擴容
在之前3主3從的架構,隨著業務的增加,流量扛不住了。需要由3主3從變為4主4從。架構變化圖如下:
回顧下之前3主3從槽位分配如下:
那麼現在變成了4主4從了。多出來的這一對主從,槽位怎麼分配ne?
實戰步驟
1:新建6387、6388兩個節點+新建後啟動+檢視是否8個節點
命令
docker run -d ——name redis-node-7 ——net host ——privileged=true -v /data/redis/share/redis-nod-7:/data redis:6。0。8 ——cluster-enabled yes ——appendonly yes ——port 6387
docker run -d ——name redis-node-8 ——net host ——privileged=true -v /data/redis/share/redis-nod-8:/data redis:6。0。8 ——cluster-enabled yes ——appendonly yes ——port 6388
透過docker ps 可以檢視8個redis都成功
2:進入6387容器例項內部
命令:
docker exec -it redis-node-7 /bin/bash
3:將新增的6387節點(空槽號)作為master節點加入原叢集中
將新機器加入叢集的命令公式:
redis-cli -cluster add-node ip:6387 ip:6381
命令說明:
add-node:加入節點
ip:自己宿主機的實際ip
6387:將要作為master的新增節點埠
6381:就是原來叢集節點的領路人。相當於是6387拜了6381的碼頭了。從而找到了組織加入了叢集
比如我們需要將6387這臺redis作為master加入叢集中。
根據命令公式,替換成我們自己的宿主機ip:192。168。50。128
所以本次將6387加入叢集的命令為:
redis-cli ——cluster add-node 192。168。50。128:6387 192。168。50。128:6381
new node added correctly。
4:檢查叢集情況第1次
使用cluster chk命令。
進入之前任意三個master容器後執行命令:
redis-cli ——cluster check 192。168。50。128:6381
我們可以看到,6387已經作為master加入叢集了。其對應的從節點是0個。
5:重新分配槽號
新命令,公式:
redis-cli ——cluster reshard ip:埠
引數說明:
——cluster reshard :重新hash分配槽位
ip:宿主機的ip(對應本次實戰凱哥宿主機的ip:192。168。50。128)
埠:叢集的領路人的埠(對應本次實戰凱哥宿主機的ip:6381)
實戰命令:
redis-cli ——cluster reshard 192。168。50。128:6381
我們可以看到,詢問我們打算怎麼重新分配?
我們來算下:16384/4=4096。所以,我們就寫4096
輸入4096後,又詢問了:
這4096準備分配給node id呢?
請注意,這裡只能分配給新加入的節點的id。也就是本次案例中6387對應的node節點
接著又詢問了
我們輸入all。
因為16384/master機器數量=4096
輸入yes後,所有槽位就會重新分配了。
重新分配需要等待一段時間。耐心等待。
6:檢查叢集情況第2次
我們可以發現了6387的槽位不是連續的。而是由三段槽位組成的。
所以,我們可以知道,新加入的master節點,是從原來所有節點都給出一些槽位,最終使得新master節點達到預設的槽位的。
為什麼要這麼設計呢?
為什麼6387是3個新區間呢?原來三個主節點還是連續的?
因為重新分配的成本太高了。所以前3個主節點各自勻出一部分,從6381/6382/6383三個舊節點分別勻出1364個槽位給了新加入master節點6387了。
7:為主節點6387分配從節點6388
新命令:
redis-cli ——cluster add-node ip:新slave埠 ip:新master埠 ——cluster-slave ——cluster-master-id 新主機節點id
命令引數說明:
ip:宿主機的ip。對應本次案例就是:192。168。50。128
新slave埠:對應本次案例就是6388
新master埠:對應本次案例就是6387
新主機節點id:可以透過cluster check 命令檢視
所以本次案例的命令為:
redis-cli ——cluster add-node 192。168。50。128:6388 192。168。50。128:6387 ——cluster-slave ——cluster-master-id 2b0751e59cdf0ae0f74be7ab74981ab41e37e372
8:檢查叢集情況第3次
所以最終4主4從的架構及槽號如下圖:
,樂於分享,每日更新技術文章,歡迎大家關注“凱哥Java”,及時瞭解更多。讓我們一起學Java。也歡迎大家有事沒事就來和凱哥聊聊
docker高階篇4-分散式儲存之實戰案例:主從容錯切換遷移案例
docker高階篇3-分散式儲存之實戰案例:3主3從redis叢集擴容配置
docker高階篇2-分散式儲存之三種演算法
docker高階篇1-dockeran安裝mysql主從複製