MongoDB全自动容灾集群节点角色解析
Posted 360云计算
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB全自动容灾集群节点角色解析相关的知识,希望对你有一定的参考价值。
女主宣言
大家在使用mongodb的时候一定知道什么是数据节点,什么是投票节点,因为这是mongodb复制集结构中最常用的节点了。其实mongodb还有多个其它类型的节点,相信他们可以在一些场景中帮到你,快来看看吧!
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!
1
数据节点[primary/seconadry] 存放着完整的数据,在rs集群中,数据节点可为PRIMARY,也可为SECONDARY角色 一个普通的数据节点,拥有选举权及被选举权
适用场景:数据节点是最长用的节点,用来提供db服务
配置方式:
{
"setName" : "bbset",
"ismaster" : true,
"secondary" : false,
"arbiters" : [
"127.0.0.1:17001"
],
"primary" : "127.0.0.1:7002",
"me" : "127.0.0.1:17001",
"maxBsonObjectSize" : 16777216,
"localTime" : ISODate("2013-08-14T10:11:09.571Z"),
"ok" : 1
}
数据节点的添加方式(假设新的节点为127.0.0.1:9001):
rs.add("127.0.0.1:9001")
在有权重配置的情况下:
rs.add({ "_id": 3, "host": "127.0.0.1:9001", "priority": 5 })
仲裁节点[arbiter] 的作用仅为负责选举,当一个集群发生问题,主库挂掉而其余数据节点权重相同的时候,需要仲裁节点来辅助选出新的主库 仲裁节点不存放任何数据,也不产生oplog,所以不会转为数据节点 仲裁节点的特征:下方的”arbiterOnly” : true。需要注意的是,每个集群都最好有一个仲裁节点,这能够在最大程度上避免无主故障的发生
适用场景:在服务器资源不足又需要满足replicaSet节点为奇数个的场景下,不需要存放任何数据的仲裁节点仅需要一个虚拟机即可部署,能够大大降低服务器成本
配置方式:
{
"setName" : "bbset",
"ismaster" : false,
"secondary" : false,
"arbiters" : [
"127.0.0.1:7001"
],
"primary" : "127.0.0.1:7002",
"arbiterOnly" : true,
"me" : "127.0.0.1:17001",
"maxBsonObjectSize" : 16777216,
"maxMessageSizeBytes" : 48000000,
"localTime" : ISODate("2013-08-14T10:14:42.797Z"),
"ok" : 1
}
仲裁节点的添加方式(假设新的节点为127.0.0.1:9001):
rs.addArb("127.0.0.1:9001")
隐藏节点[hidden] 通常用于备份。它存放着完整的数据并实时从主库同步 程序通过driver连接到Rs集群的时候会自动忽略被设置为隐藏的节点,仅可直连,所以隐藏节点是不提供服务的,而他的存活也不会影响到前端的程序 隐藏节点永远不会被升级为主库,他的权重为0 隐藏节点的特点特征:下方的”hidden” : true
适用场景:如果在你的场景中需要一个实例用来充当备份,或者是统计分析,但又不想让它承载线上的请求,那么隐藏节太适合你了。
配置方式:
{
"setName" : "bbset",
"ismaster" : false,
"secondary" : false,
"arbiters" : [
"127.0.0.1:7001"
],
"primary" : "127.0.0.1:7002",
"passive" : true,
"hidden" : true,
"me" : "127.0.0.1:7001",
"maxBsonObjectSize" : 16777216,
"maxMessageSizeBytes" : 48000000,
"localTime" : ISODate("2013-08-14T10:31:58.656Z"),
"ok" : 1
}
隐藏节点的添加方式(假设新的节点为127.0.0.1:9001):
rs.add({ "_id": 3, "host": "127.0.0.1:9001","priority" : 0, "hidden" : true})
表决节点[votes] 的功能与仲裁节点不同,它能够提供正常的读写服务,但不具备投票的权利 表决节点仅具备否决权,在集群中提供服务,也可被升级为主库,权重默认为1 表决节点的特征:下方的”votes” : 0 需要注意的是,表决节点不会被rs集群计入7个节点的限制,你可以在已有7个节点的rs集群中再增加最多5个表决节点,让整个集群的节点数量达到12个
适用场景:如果你的集群已经达到了7个节点的上线但仍然无法承载业务的请求量又无法短时间内调整为mongoS集群,那么请立即增加表决节点吧。
配置方式:
{
"_id" : 24,
"host" : "127.0.0.1:7003",
"votes" : 0,
"priority" : 1,
}
表决节点的添加方式(假设新的节点为127.0.0.1:9001):
rs.add({ "_id": 3, "host": "127.0.0.1:9001", "votes":0})
延迟节点[slaveDelay] 用于数据的延迟备份,功能类似隐藏节点,同样不会提供服务,程序看不到,但可直连 延迟节点同样不会被升级为主库,它的存活对整个集群也不会有任何影响。需要注意的是,在设置延迟复制节点的时候,该参数会把它同时设置为隐藏节点 延迟节点的特征:下方的”slaveDelay” : 3600
适用场景:对于某些存在“数据快速恢复“需求的场景,延迟节点可以在发生此类问题时拯救你,通常延迟同步的数据会帮你保住一份可以立即使用的备份数据,但要注意的是,延迟时间需要按需设置,太长太短都不好
配置方式:
{
"_id" : 15,
"host" : "127.0.0.1:7001",
"priority" : 0,
"slaveDelay" : 3600,
"hidden" : true
}
延迟节点的添加方式(假设新的节点为127.0.0.1:9001):
rs.add({"_id" : 3, "host" : "127.0.0.1:9001", "slaveDelay" : 3600})
看到这里,你已经掌握了mongoDB replicaSet集群中所有角色的特点,快去试试看吧!
以上是关于MongoDB全自动容灾集群节点角色解析的主要内容,如果未能解决你的问题,请参考以下文章