主节点的选举原则|学习笔记

简介: 快速学习主节点的选举原则

开发者学堂课程【MongoDB精讲课程(下)主节点的选举原则学习笔记与课程紧密联系,让用户快速学习知识

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


主节点的选举原则

 

内容介绍

一、概述

二、选举规则

三、优先级

四、修改优先级

 

一、概述

MongoDB在副本集中,会自动进行主节点的选举,主节点选举的触发条件:

1、主节点故障

这个服务器宕机了,这时候根据MongoDB的选举原则,会在剩下的这个服务器当中,再会去选择一个作为主节点,保证服务可用。

2、主节点网络不可达(默认心跳信息为10秒)

第二种情况其实和第一种情况基本一致,主节点的网络不可达,其实网络不可达也是一种故障,因为副本集之间会有心跳,互相之间会有心跳,默认的心跳是10秒钟,发送一个心跳请求,如果超过10秒主节点,网络就不通畅。它还是会触发重新的选举,去选举一个新的主节点,保证服务还是高可用的。

3、人工干预(rs.stepDown(600))

即主节点这台服务器我要下线了,去设置一下,这是默认的命令?Set downhou 这一块它也可以把主节点给它下掉,一样会触发新的选举是在内部,当前的副本集当中再推选一个新的主节点出来

 

二、选举规则

一旦触发选举,就要根据一定规则来选主节点。

选举规则是根据票数来决定:

票数最高,且获得了“大多数”成员的投票支持的节点获胜。“大多数”:假设复制集内投票成员数量为N,则大多数为 N/2 + 1。例如:3个投票成员,则大多数的值是2。当复制集内存活成员数量不足大多数时,整个复制集将无法选举出Primary,复制集将无法提供写服务,处于只读状态。

若票数相同,且都获得了“大多数”成员的投票支持的,数据新的节点获胜。数据的新旧是通过操作日志oplog来对比的。

 

三、优先级

在获得票数的时候,优先级(priority)参数影响重大。

可以通过设置优先级(priority)来设置额外票数。优先级即权重,取值为0-1000,相当于可额外增加0-1000的票数,优先级的值越大,就越可能获得多数成员的投票(votes)数。指定较高的值可使成员更有资格成为主要成员,更低的值可使成员更不符合条件。

默认情况下,优先级的值是1

myrs:SECONDARY> rs.conf()

{

"_id" : "myrs",

"version" : 221242,

"term" : 4,

"members" : [

{

"_id" : 0,

"host" : "192.168.20.131:27017",

"priority" : 1,

},

{

"_id" : 1,

"host" : "localhost.localdomain:27018",

"priority" : 1,

},

{

"_id" : 2,

"host" : "192.168.20.131:27019",

"priority" : 1,

},

{

"_id" : 3,

"host" : "192.168.20.131:27020",

"priority" : 1,

},

{

"_id" : 4,

"host" : "192.168.20.131:27030",

"priority" : 0,

}

],

...

}

myrs:SECONDARY>

可以看出,主节点和副本节点的优先级各为1,即,默认可以认为都已经有了一票。但选举节点,优先级是0,(要注意是,选举节点的优先级必须是0,不能是别的值。即不具备选举权,但具有投票权)

 

四、修改优先级

通过下面的步骤可以提升从节点的优先级:

# 先将配置导入cfg变量

myrs:SECONDARY> cfg=rs.conf()

# 然后修改值(ID号默认从0开始):

myrs:SECONDARY> cfg.members[1].priority=2

# 重新加载配置

myrs:SECONDARY> rs.reconfig(cfg)

相关文章
|
4月前
|
存储 Kubernetes 负载均衡
在k8S中,Master节点高可用是如何做的?
在k8S中,Master节点高可用是如何做的?
|
5月前
|
消息中间件 运维 监控
中间件故障转移主-备配置
【7月更文挑战第25天】
47 2
|
5月前
|
消息中间件 存储 监控
深入理解Kafka核心设计及原理(六):Controller选举机制,分区副本leader选举机制,再均衡机制
深入理解Kafka核心设计及原理(六):Controller选举机制,分区副本leader选举机制,再均衡机制
108 1
|
4月前
|
存储 调度 文件存储
分布式锁设计问题之当发生节点重启时发往该节点的请求会如何解决
分布式锁设计问题之当发生节点重启时发往该节点的请求会如何解决
|
7月前
|
NoSQL 算法 Redis
详解Redis哨兵模式下,主节点掉线而重新选取主节点的流程
所谓选举的过程不是直接选出新的主节点,而是先在哨兵节点中选出 leader ,再由 leader 负责后续主节点的指定。
212 1
|
7月前
Zookeeper的选举机制原理(图文深度讲解)——过半选举
Zookeeper的选举机制原理(图文深度讲解)——过半选举
533 0
|
NoSQL Redis Sentinel
从哨兵Leader选举学习Raft协议实现(下)(二)
从哨兵Leader选举学习Raft协议实现(下)
59 0
|
Sentinel
从哨兵Leader选举学习Raft协议实现(下)(一)
从哨兵Leader选举学习Raft协议实现(下)
60 0
|
SQL 分布式计算 Hadoop
Hadoop主节点宕机第二节点补救
Hadoop主节点宕机第二节点补救
398 0
Hadoop主节点宕机第二节点补救
|
NoSQL MongoDB 开发者
添加副本节点和仲裁节点|学习笔记
快速学习添加副本节点和仲裁节点