config server高可用的懷疑(非副本集模式)

SCCC和CRCS的區別

在mongo3.4版本之前,configsvr的高可用有兩種方式,一種是SCCC,即非副本集模式,一種是CSRS(副本集模式)。在mongo3.4以後已經不支持SCCC了,就我使用SCCC模式的經驗看,SCCC確實太坑。個人認爲,CSRS相對SCCC大概有以下優點
1 節點宕機後SCCC模式只讀不可寫,這時mongos無法負載均衡。而CSRS存在副本集的高可用,宕機一臺的情況下不影響config本身的讀寫,故不影響後臺負載均衡。

2 節點宕機,如果數據損壞,這時修復還得去健康的節點mongodump,mongorestore,麻煩死了,而CRCS重建副本集只是一條命令那麼簡單

3  SCCC的高可用不靠譜,其中一臺宕機容易引發mongos連接超時,卡頓,不穩定,也就是下文提到的問題。

SCCC(非副本集模式)大概原理一般就是通過創建3個節點的config server,每個節點數據完全一致,當其中一個節點宕機後,這時config server集羣禁止寫入,可以讀取(可以這麼理解,mongos不能再做負載均衡,直到宕機的config server重新啓動,但是並不影響業務讀寫)。不過在實際使用過程中,我發現只要有一臺config server宕機,這時mongos連接基本都是超時,能連上的執行各種查詢操作也非常卡

復現方法

創建了三個config server,配置成SCCC,另外新建了一個mongos


任意關閉其中一個config server   10.10.5.196,這時登陸mongos卡住


卡了很久終於登陸上了,這時執行sh.status()依然很卡

猜測原因

應該是官方客戶端mongo shell的問題,應用代碼訪問可能問題不大


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章