故障测试2|学习笔记

简介: 快速学习故障测试2

开发者学堂课程【MongoDB精讲课程(下)故障测试2学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/727/detail/12979


故障测试2

 

刚刚模拟主节点的这个故障现在也知道主节点故障了之后,副本节点会自动的升级为主节点,现在再把这个主节点启动起来,主节点直接就在这改就行了。

image.png

主节点的应该就是2701再启动起来,再检查  mongo  一下服务,同样,27017 27018 27019这三个服务,27017因为刚才是挂机,给退出一下,再重新连一下,会发现变成了副本节点了,这个结点也就是副本节点,副本节点就算带起来之后也不是老大了,老大其实现在是27018因为已经升级成这个主节点了,那升升级成主节点之后,原来的这个主节点27017在启动的时候,并不会去触发这个选举规则,已经降级为老二了

降级为这个副本节点了,接下来再来看,如果说这个仲裁结点和这个主节点都故障之后只剩下这个2701,现在这个主节点应该是27018 ,27019仲裁节点,这两个都给挂了之后。同样在这一块,先给它 clean 一下,看清楚一点,现在要挂的是主节点,是这个27018然后再挂掉这个仲裁节点27019把这两个给挂掉,那这两个挂掉之后,再来看一下现在的这个副本节点,再敲回车发现它还是副本节点。

image.png

按理说这个主节点挂了之后,它应该会触发重新选举,再来看一下选举规则:

第一,它不仅是要票数最高,按理说它现在应该是票数最高,因为只有它自己存在,它给自己投票它的票数就是最高的。

第二个条件,是否满足它需要大多数成员的一个支持,那什么叫大多数,再来看一下之前的这个架构图:

image.png

看一下这个架构目标。首先来看一下,现在是这个主节点和这个副本节点都挂了。

主节点和这个仲裁者,这两个都挂了,都挂了之后它就剩它自己了,它虽然拿到的是一票,它拿到最高,但是它不满足第二个条件,因为第二个条件,是需要获得大多数成员的一个认同,现在获得的是一,一个人给投票,就是自己给自己投票。

但是副本级里面是有三个成员,它并不满足第二个条件呢,大多数成员,至少可以获得两个人的赞同,现在这里面只有一个一,只有一个一之后,也没办法去获得这个主节点,它还是作为一个副本节点,说白了它自己指纹也没有老大,它自己还是老二,作为这个副本节点,虽然在这个架构图上也是,但是实际上现在这个副本节点应该是27017。刚刚模拟的是这个仲裁结点和这个主结点的故障。

仲裁节点和主节点故障之后,并不会导致这个剩下的这个副本节点升级为主节点。因为它不满足一个大多数成员的条件。

最后再来演示一下,如果仲裁结点和这个,从节点也就是这个副本节点,副本节点两个都挂了。这两个都挂了之后,它会怎么样,它这个主节点会成为一个什么样的情况,在模拟之前呢,还是需要把这个这两个服务,给它启动一下,找到们在一起的就不是27017了,要把这个27018和这个27019呢,都给它启动起来。

image.png

现在这时候会发现又触发了重新选取,因为成员数已经够了,这时候27017又成为这个主节点了,因为默认的情况下,刚刚的那个主节点挂了之后,这个数据默认是最新的,所以它触发了一个重新选取之后,还有这块儿27017又升级为主节点了,那刚刚的这个主节点它就会降级为这个副本节点。

27018就变成了这个副本节点,就是这个从节点,现在再来模拟一下,就是说如果说要去关掉,再去把这个27019和这个的副本节点27018都给它关掉试一下,首先查看一下,把它 clean 一下吧,看的清晰, mongo 服务找到27018和2019,分别给它挂了。

找一下27018和27019,把这两个再给它划掉,再来看现在的这个主节点27017,按回车。

image.png

会发现过了大概十秒钟的时间吧,它又降级成这个副本节点。就降级成这个从节点,这实际上就是一个服务降级,就是当前仲裁也没有了,这个副本节点也没有了,现在只剩下自己一个孤家寡人,也因为也没办法去触发这个读写分离,那这时候,它会自动的降级为副本节点,通俗意义上,这个叫服务降级啊,就是现在只剩下副本集里面只剩下一个主节点了,这个主节点,它自己又干不了,没办法去完成整个副本级的服务,把它主动的将为副本节点,这是这个故障相关的一些测试,测试完之后去了解这个主节点的一些选举原则。

相关文章
|
Web App开发 JavaScript 前端开发
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
快速学习 NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文
496 0
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
|
18天前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
79 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
18天前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
17 2
|
18天前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
40 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
3月前
|
安全 数据库连接 数据库
可靠性测试-故障注入工具
【7月更文挑战第19天】可靠性测试中的故障注入工具对评估系统容错性与稳定性至关重要。常见工具如 **FaultInjector** (模拟多类故障)、**Xception** (针对特定组件注入错误) 和 **Chaos Monkey** (验证云环境下系统弹性) 帮助开发者提前发现潜在问题, 优化系统设计, 如电商公司通过测试确保促销期稳定, 金融机构降低交易风险。选择合适工具并结合业务场景测试对提升可靠性至关重要。
110 0
|
6月前
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
|
Kubernetes jenkins 测试技术
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
257 1
java202303java学习笔记第四十六天-请求-postman接口测试
java202303java学习笔记第四十六天-请求-postman接口测试
76 0
|
测试技术
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
76 0
|
存储 Kubernetes 监控
PolarDB-X 混沌测试系统搭建赛题解析 | 学习笔记
快速学习 PolarDB-X 混沌测试系统搭建赛题解析
PolarDB-X 混沌测试系统搭建赛题解析 | 学习笔记