美文网首页
MongDB-4.2.6集群的搭建

MongDB-4.2.6集群的搭建

作者: 李小二的倔强 | 来源:发表于2020-04-21 14:08 被阅读0次

没来由此去经年,总把新人换旧颜。
江山父老能容我,不使人间造孽钱。

本篇开始

mongodb的集群搭建方式主要有三种,主从模式,Replica set模式,sharding模式, 三种模式各有优劣,适用于不同的场合,属Replica set应用最为广泛,主从模式现在用的较少,sharding模式最为完备,但配置维护较为复杂。本文我们来看下Replica Set模式的搭建方法。

Mongodb的Replica Set即副本集方式主要有两个目的,一个是数据冗余做故障恢复使用,当发生硬件故障或者其它原因造成的宕机时,可以使用副本进行恢复。另一个是做读写分离,读的请求分流到副本上,减轻主(Primary)的读压力。

(1)主节点(Primary)

接收所有的写请求,然后把修改同步到所有Secondary。一个Replica Set只能有一个Primary节点,当Primary挂掉后,其他Secondary或者Arbiter节点会重新选举出来一个主节点。默认读请求也是发到Primary节点处理的,需要转发到Secondary需要客户端修改一下连接配置。

(2)副本节点(Secondary)

与主节点保持同样的数据集。当主节点挂掉的时候,参与选主。

(3)仲裁者(Arbiter)

不保有数据,不参与选主,只进行选主投票。使用Arbiter可以减轻数据存储的硬件需求,Arbiter跑起来几乎没什么大的硬件资源需求,但重要的一点是,在生产环境下它和其他数据节点不要部署在同一台机器上。
注意,一个自动failover的Replica Set节点数必须为奇数,目的是选主投票的时候要有一个大多数才能进行选主决策。

(4)选主过程

其中Secondary宕机,不受影响,若Primary宕机,会进行重新选主:


image.png

下边我们来使用Arbiter搭建Replica Set
偶数个数据节点,加一个Arbiter构成的Replica Set方式:


image.png
集群配置:
主节点——172.16.128.85
从节点——172.16.128.86
仲裁节点——172.16.128.87

1.下载资源包:

下载MongoDB资源包

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.6.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-4.2.6.tgz

2.配置文件:

三台MongoDB配置文件都是同样的写法,ip和路径做适当修改即可

vi  /usr/local/pid/mongodb-linux-x86_64-rhel70-4.2.6.tgz/mongodb.conf
    
port=27017 #端口 
dbpath= /usr/local/pid/mongodb-linux-x86_64-rhel70-4.2.6.tgz/db #数据库存文件存放目录 
logpath= /usr/local/pid/mongodb-linux-x86_64-rhel70-4.2.6.tgz/mongodb.log #日志文件存放路径 
logappend=true #使用追加的方式写日志 
fork=true #不以守护程序的方式启用,即不在后台运行
replSet=pid#Replica Set的名字 集群名称
maxConns=100 #最大同时连接数 
noauth=true #不启用验证 (用户进行认证是要把这个属性删除)
journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。 
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。 
storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocks 
bind_ip = 0.0.0.0 #这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB

3.启动MongoDB

启动三台MongoDB服务
在bin目录下

./mongod -f /usr/local/pid/mongodb-linux-x86_64-rhel70-4.2.6.tgz/mongodb.conf

4.在主节点进行配置

还是在bin目录下依次进行操作

./mongo 172.16.128.85     #进入mongo控制台
> use admin                #使用内置的admin库
> cfg={ _id:"cct", members:[ {_id:0,host:'172.16.128.85:27017',priority:2}, {_id:1,host:'172.16.128.86:27017',priority:1}, {_id:2,host:'172.16.128.87:27017',arbiterOnly:true}] };
备注:

cfg名字可选,只要跟mongodb参数不冲突,_id为Replica Set名字,members里面的优先级priority值高的为主节点,对于仲裁点一定要加上arbiterOnly:true,否则主备模式不生效
priority表示优先级别,数值越大,表示是主节点
arbiterOnly:true表示仲裁节点


image.png

使集群cfg配置生效rs.initiate(cfg)
注意:如果出现一下信息,查看一下服务器的防火墙

image.png

正确提示如下:

image.png

查看是否生效rs.status()


image.png

接上


image.png

图片长度限制这里只列出部分说明情况

登陆之后cct:<stateStr>
“stateStr” : “PRIMARY”表示主节点, “stateStr” : “SECONDARY”表示从节点, “stateStr” : “ARBITER”,表示仲裁节点

添加节点命令:

添加secondary:rs.add({host: “172.16.128.86:27019”, priority: 1 })
添加仲裁点:rs.addArb(“172.16.128.87:27019”)
移除节点:rs.remove({host: “172.16.128.86:27019”})

此时已经完成MongoDB集群的搭建,可以在主节点插入数据查看从节点是否可以把数据同步过去

在配置文件中修改
spring:
  data:
    mongodb:
      uri: mongodb://172.16.128.85:27017,172.16.128.86:27017,172.16.128.87:27017/cold-chain-tracing?replicaSet=sdb&slaveOk=true&readPreference=secondaryPreferred

相关文章

网友评论

      本文标题:MongDB-4.2.6集群的搭建

      本文链接:https://www.haomeiwen.com/subject/nfeuihtx.html