前情提要
最近公司因?yàn)閮纱螜C(jī)房故障決定部署同城雙機(jī)房,方案確定為雙活單寫
雙活單寫
兩個(gè)機(jī)房A.B都正常提供服務(wù)糙申,所有寫操作定位到A機(jī)房
// TODO 單寫與多寫的比較
// TODO 雙活和冷備的比較
Kafka雙活方案
-
延展集群
我們可以將kafka集群分布的布在兩個(gè)機(jī)房,通過機(jī)架信息保證每個(gè)主題在每個(gè)機(jī)房都擁有副本
優(yōu)點(diǎn):強(qiáng)一致 高度同步 實(shí)現(xiàn)簡單
缺點(diǎn):對Zookeeper的依賴導(dǎo)致雙機(jī)房下實(shí)現(xiàn)較為困難 zookeeper需要過半節(jié)點(diǎn)存活 只能防止機(jī)房故障 無法防止kafka故障
具體實(shí)現(xiàn):- A機(jī)房斷網(wǎng)
① 外網(wǎng)斷 機(jī)器正常 有條件的情況 手動下線A機(jī)房kafka broker
② 機(jī)器崩潰 所有副本自動轉(zhuǎn)移到B機(jī)房 無需手動操作 - B機(jī)房斷網(wǎng)
① 外網(wǎng)斷 機(jī)器正常 無影響
② 機(jī)器崩潰 無影響 - 專線斷 同B機(jī)房斷網(wǎng)
- A機(jī)房斷網(wǎng)
-
雙活集群 同步數(shù)據(jù)
在兩個(gè)機(jī)房分別布置一個(gè)集群,通過mirrormaker同步數(shù)據(jù)
優(yōu)點(diǎn): 可以應(yīng)對kafka故障 具有彈性
缺點(diǎn): 成本高,偏移量難以管理
具體實(shí)現(xiàn):- A機(jī)房故障
① 外網(wǎng)斷 機(jī)器正常 停止A向B的mirrormaker 清空A集群所有數(shù)據(jù) 碾牌,啟動B向A的mirrormaker 手動切換到B集群
② 機(jī)器崩潰 切換到B集群 A回復(fù)后清空數(shù)據(jù) 啟動B向A的mirrormaker - B機(jī)房故障
① 外網(wǎng)斷 機(jī)器正常 無影響
② 機(jī)器崩潰 恢復(fù)后啟動mirrormaker 無影響 - 專線斷
同B機(jī)器崩潰情形
- A機(jī)房故障
總結(jié)
可以看到 兩種實(shí)現(xiàn)方式 在B集群或?qū)>€崩潰時(shí) 受到的影響都較小
兩個(gè)實(shí)現(xiàn)方式主要的區(qū)別是
第一種方法需要線下操作且需要保證zookeeper集群可用
第二種方法需要管理偏移量和mirrormaker