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

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

开发者学堂课程【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)

相关文章
|
3月前
|
存储 Kubernetes 负载均衡
在k8S中,Master节点高可用是如何做的?
在k8S中,Master节点高可用是如何做的?
|
4月前
|
消息中间件 运维 监控
中间件故障转移主-备配置
【7月更文挑战第25天】
39 2
|
4月前
|
消息中间件 存储 监控
深入理解Kafka核心设计及原理(六):Controller选举机制,分区副本leader选举机制,再均衡机制
深入理解Kafka核心设计及原理(六):Controller选举机制,分区副本leader选举机制,再均衡机制
93 1
|
6月前
|
NoSQL 算法 Redis
详解Redis哨兵模式下,主节点掉线而重新选取主节点的流程
所谓选举的过程不是直接选出新的主节点,而是先在哨兵节点中选出 leader ,再由 leader 负责后续主节点的指定。
180 1
|
6月前
Zookeeper的选举机制原理(图文深度讲解)——过半选举
Zookeeper的选举机制原理(图文深度讲解)——过半选举
471 0
|
NoSQL Redis Sentinel
从哨兵Leader选举学习Raft协议实现(下)(二)
从哨兵Leader选举学习Raft协议实现(下)
53 0
|
Sentinel
从哨兵Leader选举学习Raft协议实现(下)(一)
从哨兵Leader选举学习Raft协议实现(下)
55 0
|
算法 大数据 开发者
ZooKeeper 集群选举:概念&全新集群选举|学习笔记
快速学习 ZooKeeper 集群选举:概念&全新集群选举
185 0
ZooKeeper 集群选举:概念&全新集群选举|学习笔记
|
SQL 分布式计算 Hadoop
Hadoop主节点宕机第二节点补救
Hadoop主节点宕机第二节点补救
392 0
Hadoop主节点宕机第二节点补救
|
NoSQL MongoDB 开发者
添加副本节点和仲裁节点|学习笔记
快速学习添加副本节点和仲裁节点