Docker高級篇:實戰(zhàn)Redis集群!從3主3從變?yōu)?主4從

通過前面兩篇糯而,我們學會了三主三從的Redis集群搭建及主從容錯切換遷移,隨著業(yè)務增加肪跋,可能會有主從擴容的歧蒋,所以,本文我們來實戰(zhàn)主從擴容

PS本系列:《Docker學習系列》教程已經(jīng)發(fā)布的內(nèi)容土砂,凱哥會在文末加上。

在之前3主3從的架構(gòu)谜洽,隨著業(yè)務的增加萝映,流量扛不住了。需要由3主3從變?yōu)?主4從阐虚。架構(gòu)變化圖如下:

dd0f4dfc861a62cd60e3d25204c8b989.png

回顧下之前3主3從槽位分配如下:

image.png

那么現(xiàn)在變成了4主4從了序臂。多出來的這一對主從,槽位怎么分配ne?

實戰(zhàn)步驟

1:新建6387实束、6388兩個節(jié)點+新建后啟動+查看是否8個節(jié)點

命令

<pre class="brush:bash;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">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
</pre>

2b5c356d74e7737955550c0609b4a56c.png

通過docker ps 可以查看8個redis都成功

2:進入6387容器實例內(nèi)部

命令:

<pre class="brush:bash;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">docker exec -it redis-node-7 /bin/bash
</pre>

3:將新增的6387節(jié)點(空槽號)作為master節(jié)點加入原集群中

將新機器加入集群的命令公式:

<pre class="brush:bash;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">redis-cli -cluster add-node ip:6387 ip:6381
</pre>

命令說明:

add-node:加入節(jié)點

ip:自己宿主機的實際ip

6387:將要作為master的新增節(jié)點端口

6381:就是原來集群節(jié)點的領(lǐng)路人奥秆。相當于是6387拜了6381的碼頭了。從而找到了組織加入了集群

比如我們需要將6387這臺redis作為master加入集群中咸灿。

根據(jù)命令公式构订,替換成我們自己的宿主機ip:192.168.50.128

所以本次將6387加入集群的命令為:

<pre class="brush:bash;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">redis-cli --cluster add-node 192.168.50.128:6387 192.168.50.128:6381
</pre>

image.png

new node added correctly.

4:檢查集群情況第1次

使用cluster chk命令。

進入之前任意三個master容器后執(zhí)行命令:

<pre class="brush:bash;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">redis-cli --cluster check 192.168.50.128:6381
</pre>

image.png

我們可以看到避矢,6387已經(jīng)作為master加入集群了悼瘾。其對應的從節(jié)點是0個。

image.png

5:重新分配槽號

新命令审胸,公式:

<pre class="brush:as3;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">redis-cli --cluster reshard ip:端口
</pre>

參數(shù)說明:

--cluster reshard :重新hash分配槽位

ip:宿主機的ip(對應本次實戰(zhàn)凱哥宿主機的ip:192.168.50.128)

端口:集群的領(lǐng)路人的端口(對應本次實戰(zhàn)凱哥宿主機的ip:6381)

實戰(zhàn)命令:

<pre class="brush:bash;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">redis-cli --cluster reshard 192.168.50.128:6381
</pre>

870c70c8879b5e79138ffe1e3312a043.png
d8bcac9822800a3d0ad8d430c35e6a2e.png

我們可以看到亥宿,詢問我們打算怎么重新分配?

我們來算下:16384/4=4096.所以砂沛,我們就寫4096

輸入4096后烫扼,又詢問了:

145e8430166659da83dad3f6d43ff3b2.png

這4096準備分配給node id呢?

請注意碍庵,這里只能分配給新加入的節(jié)點的id.也就是本次案例中6387對應的node節(jié)點

image.png

接著又詢問了

c6a875582c5f51cd4eb632fe05233b11.png

我們輸入all.

因為16384/master機器數(shù)量=4096

輸入yes后映企,所有槽位就會重新分配了。

重新分配需要等待一段時間怎抛。耐心等待卑吭。

6:檢查集群情況第2次

命令:

<pre class="brush:bash;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">redis-cli --cluster check 192.168.50.128:6381
</pre>

fd7bd5c0b47d23ac5ceee5e2f8261454.png

我們可以發(fā)現(xiàn)了6387的槽位不是連續(xù)的。而是由三段槽位組成的马绝。

所以豆赏,我們可以知道,新加入的master節(jié)點富稻,是從原來所有節(jié)點都給出一些槽位掷邦,最終使得新master節(jié)點達到預設的槽位的。

為什么要這么設計呢?

為什么6387是3個新區(qū)間呢椭赋?原來三個主節(jié)點還是連續(xù)的抚岗?

因為重新分配的成本太高了。所以前3個主節(jié)點各自勻出一部分哪怔,從6381/6382/6383三個舊節(jié)點分別勻出1364個槽位給了新加入master節(jié)點6387了宣蔚。

7:為主節(jié)點6387分配從節(jié)點6388

新命令:

redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主機節(jié)點id

命令參數(shù)說明:

ip:宿主機的ip向抢。對應本次案例就是:192.168.50.128

新slave端口:對應本次案例就是6388

新master端口:對應本次案例就是6387

新主機節(jié)點id:可以通過cluster check 命令查看

所以本次案例的命令為:

<pre class="brush:as3;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">redis-cli --cluster add-node 192.168.50.128:6388 192.168.50.128:6387 --cluster-slave --cluster-master-id 2b0751e59cdf0ae0f74be7ab74981ab41e37e372
</pre>

image.png

8:檢查集群情況第3次

<pre class="brush:bash;toolbar:false" style="margin: 0.5em 0px; padding: 0.4em 0.6em; border-radius: 8px; background: rgb(248, 248, 248);">redis-cli --cluster check 192.168.50.128:6381
</pre>

image.png

所以最終4主4從的架構(gòu)及槽號如下圖:

image.png

結(jié)束語

如操作有問題歡迎去 我的 個人博客(www.kaigejava.com)留言或者 微信公眾號(凱哥Java)留言交流哦。

本系列教程直通車

直通車胚委,本系列教程已發(fā)布文章挟鸠,快速到達,《Docker學習系列》教程已經(jīng)發(fā)布的內(nèi)容如下:

【圖文教程】Windows11下安裝Docker Desktop

【填坑】在windows系統(tǒng)下安裝Docker Desktop后遷移鏡像位置

【Docker學習系列】Docker學習1-docker安裝

【Docker學習系列】Docker學習2-docker設置鏡像加速器

【Docker學習系列】Docker學習3-docker的run命令干了什么?docker為什么比虛擬機快亩冬?

【Docker學習系列】Docker學習2-常用命令之啟動命令和鏡像命令

【Docker學習系列】Docker學習系列3:常用命令之容器命令

【Docker學習系列】Docker學習4-常用命令之重要的容器命令

【Docker教程系列】Docker學習5-Docker鏡像理解

【Docker教程系列】Docker學習6-Docker鏡像commit操作案例

【Docker學習教程系列】7-如何將本地的Docker鏡像發(fā)布到阿里云

【Docker學習教程系列】8-如何將本地的Docker鏡像發(fā)布到私服艘希?

「Docker學習系列教程」9-Docker容器數(shù)據(jù)卷介紹

「Docker學習系列教程」10-Docker容器數(shù)據(jù)卷案例

Docker學習11-Docker常規(guī)方式安裝軟件

「Docker學習系列教程」基礎(chǔ)篇小總結(jié)及高級篇預告

docker高級篇1-dockeran安裝mysql主從復制

docker高級篇2-分布式存儲之三種算法

docker高級篇第二章-分布式存儲之實戰(zhàn)案例:3主3從redis集群擴容配置

docker高級篇第二章-分布式存儲之實戰(zhàn)案例:主從容錯切換遷移案例

【Docker學習教程系列匯總】筆記及遇到問題解決文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市硅急,隨后出現(xiàn)的幾起案子覆享,更是在濱河造成了極大的恐慌,老刑警劉巖营袜,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撒顿,死亡現(xiàn)場離奇詭異,居然都是意外死亡荚板,警方通過查閱死者的電腦和手機核蘸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啸驯,“玉大人,你說我怎么就攤上這事祟峦》6罚” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵宅楞,是天一觀的道長针姿。 經(jīng)常有香客問我,道長厌衙,這世上最難降的妖魔是什么距淫? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮婶希,結(jié)果婚禮上榕暇,老公的妹妹穿的比我還像新娘。我一直安慰自己喻杈,他們只是感情好彤枢,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筒饰,像睡著了一般缴啡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓷们,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天业栅,我揣著相機與錄音秒咐,去河邊找鬼。 笑死碘裕,一個胖子當著我的面吹牛携取,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播娘汞,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼歹茶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了你弦?” 一聲冷哼從身側(cè)響起惊豺,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎禽作,沒想到半個月后尸昧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡旷偿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年烹俗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萍程。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡幢妄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茫负,到底是詐尸還是另有隱情蕉鸳,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布忍法,位于F島的核電站潮尝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏饿序。R本人自食惡果不足惜勉失,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望原探。 院中可真熱鬧乱凿,春花似錦、人聲如沸踢匣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽离唬。三九已至后专,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間输莺,已是汗流浹背戚哎。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工裸诽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人型凳。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓丈冬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親甘畅。 傳聞我的和親對象是個殘疾皇子埂蕊,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容