mongo高可用之python

mongodb高可用

背景:在使用mongodb的时候,发现复制集集群的时候,大量的写入操作会造成集群的主进行切换,从而导致程序报错。

使用方式:搭建三个节点的mongo集群,在集群之间使用replicaset来进行复制,配置文件中,如果是在同一个机器上运行,那么就修改监听的地址,修改数据文件和日志文件的路径即可。

配置文件如下所示:

在进行试验的时候,出现两个问题:

1、 当在两个机器之间做成集群之后,使用同一个复制集之后,备机的状态一直是startup,没有变成secondary,主要是因为防火墙的原因,从而导致配置信息无法加载和同步。

2、 在进行同步的时候,发现端口总是自动消失,没有任何报错,最后发现是因为磁盘空间到达了百分百,数据文件日志文件无法写入,从而进程自动关闭。

测试脚本如下:

在进行运行脚本的时候,当数据量太大,大概百十万条之后,就可能会出现重新选主的情况,使用如上的脚本,会自动进行重连,从而继续写入相关的测试。。。上面的脚本,会将所有的range这个列表加载入内存中,懒得改了。。。反正也是随手找的一个测试内容。。。所以执行如上脚本的时候,在开始的时候会很慢很慢。。。

运行的进程如下所示:

可以查看帮助,然后进行相关的设置或者进行相关的操作:

其实你可以发现,以上的测试并没有解决高并发的时候出现选主的情况,而是保证了程序的高可用。

风言风语

很多时候,本来是我玩mongo的,最后出现一堆问题,变成了她玩我。。。世道绕过谁。。。饶饶饶。。。

1、python只是玩具

现在很流行自动化开发,都想用python,最后变成了各种各样的python问题,葛华中数据结构,各种模块的使用。。。这又有什么含义?

使用python只是提高运维的效率,而去追寻python的各种魔法,感觉没什么太大的含义,我需要知道python的list和dict有什么区别么?我不需要,我只要使用我需要的数据类型就好了;我需要知道子类和父类的区别么?我不需要,我只要能运行就好了。。

python只是一种手段之一,选择它只是因为和linux走的近,而使用任何一门语言,其实就那么几个东西,基本的数据类型,循环逻辑判断,其他的就是各种类,各种模块,各种框架,并不像卷入各种框架之战。。。

原来觉得框架之战是最好的,其实选择的原因不过是因为自己熟悉,每一种框架都有合适的场景,只要你想。。。都可以做到。

不要为了python而python,最后都是拿来用的。。。何必在意一些细节?

2、 优化

曾几何时,也在追求各种优化,从操作系统层面的优化,从中间件层面的优化,从数据库方面进行优化,但是。。。单纯的优化又有什么意义?

优化,浪费的时间有多少?能提高多少性能?现在要么是使用云平台,要么是使用各种VM,性能不够?机器来凑。。。。无效加班了解一下

何时优化,也是一门学问。客户反馈响应慢,那么慢在哪里?中间件一定需要优化?数据库一定需要优化?每一个环节是否记录了响应时间?从而能正对性的进行优化。。。

再谈优化,优化就修改几个参数,又有几个人去追寻底层的含义。。。吹牛逼了解一下。。

3、 技术细节

什么样的人应该关注技术细节?

很多时候,并不需要记住每一个方法,每一个模块怎么来写,这样虽然显示了熟练度,但是熟练度这个东西,三天就可以学会的玩意儿。。。

很多时候,思想更重要。。未来如何走向?下一跳是哪里。。。

用忙碌掩盖无效的勤奋了解一下。。。

能读取缓存的,不要放在磁盘上;能用异步的,不要用同步;能用消息队列的,不要直接调用接口;能用dns的,不要直接用ip。。。

4、 SLB和SB傻傻分不清楚

突然发现http码的502和520好像。。。嗯。。。我是说单纯的数字

吓死我了,还以为下午和人撕逼撕错了。。。所谓的502还是后端的RS不行。。。吓得我赶紧安装一个nginx和httpd试了一把。。。

原文发布于微信公众号 - SRE运维实践(gh_319dd73ec076)

原文发表时间:2018-09-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券