Redis 腦裂測(cè)試

2018-08-03 11:50 更新

恢復(fù)集群狀態(tài),2.128為主,2.129、2.130為從。首先進(jìn)行一個(gè)從網(wǎng)絡(luò)分離的測(cè)試:

 

此時(shí)集群狀態(tài)為(從master看): 

此時(shí)切斷2.130這個(gè)鏈路,2.128和2.129分別為主從形成一個(gè)集群,2.130會(huì)失敗,因?yàn)闆]有足夠的sentinel進(jìn)行投票完成failover。剩余集群如下: 

第三臺(tái)機(jī)器則為slave失敗狀態(tài):

此時(shí)由于沒有發(fā)生切換,因此對(duì)應(yīng)用沒有影響。

另一種情況,如果將主機(jī)網(wǎng)絡(luò)斷開,剩余兩個(gè)從成為一個(gè)新的集群,其中一個(gè)從(2.129)成為主:

原來的主機(jī)則為沒有slave的主:

此時(shí)由于沒有可用的slave,舊主無法寫入(實(shí)際上由于網(wǎng)絡(luò)斷開也根本無法訪問,因此從網(wǎng)絡(luò)和數(shù)據(jù)庫本身都不具有可寫性): 

新主從可以接受讀寫請(qǐng)求: 

 此時(shí)如果舊主的網(wǎng)絡(luò)恢復(fù),由于它的epoch比較舊,因此會(huì)成為從,將部分同步(psync)網(wǎng)絡(luò)宕期間產(chǎn)生的新數(shù)據(jù)。

從上述兩種情況測(cè)試,此架構(gòu)不會(huì)導(dǎo)致雙主對(duì)外服務(wù),也不會(huì)因?yàn)榫W(wǎng)絡(luò)恢復(fù)而數(shù)據(jù)混亂。

腦裂的場(chǎng)景還可以進(jìn)行的一個(gè)測(cè)試時(shí)多個(gè)sentinel,例如下列架構(gòu)(為了便于測(cè)試在兩臺(tái)機(jī)器上開多端口模擬多臺(tái)機(jī)器):

這個(gè)場(chǎng)景配置Quorum=3. 此時(shí)切斷兩臺(tái)機(jī)器的通信網(wǎng)絡(luò)(模擬兩個(gè)機(jī)房之間通信中斷),左邊的機(jī)器(模擬主機(jī)房)集群不會(huì)受到影響,右邊的機(jī)器(模擬災(zāi)備機(jī)房)由于不夠大多數(shù)因此不會(huì)產(chǎn)生新的Master。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)