mongo高可用之python

序言

    我上班本来是玩的。。。现在是她玩我了。。。风水轮流转。。。。弹弹弹,弹走鱼尾纹


    清晨起来玩mongo。。。然后被玩了一天。。。今天的风有点凉。。

mongodb高可用

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

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

image.png

    配置文件如下所示:

image.png

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

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

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


    测试脚本如下:

图片

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

    运行的进程如下所示:

image.png

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

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

风言风语

    很多时候,本来是我玩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试了一把。。。


    总有那么几个B认为SLB天天有问题。。。WTF

     


猜你喜欢

转载自blog.51cto.com/15060545/2653095
今日推荐