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的问题,应用代码访问可能问题不大


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