目录


环境说明:三台centos7虚拟机

Replica Set为副本集模式,(M)为master主节点,(S)为slaver副节点,(A)为arbiter仲裁节点。主节点挂掉后副节点能继续提供服务。仲裁节点不存储数据,客户端不需要连接。


测试时本机各节点信息:

节点 IP 端口号 数据存储 日志存储
A: master 192.168.147.131 27000 /usr/local/mongodb/data /usr/local/mongodb/log/master.log
B:slaver 192.168.147.132 27000 /usr/local/mongodb/data /usr/local/mongodb/log/slaver .log
C:arbiter 192.168.147.133 27000 /usr/local/mongodb/data /usr/local/mongodb/log/arbiter .log

 

一、安装Mongodb

在三台虚拟机上都安装Mongodb,过程看MongoDB(一)https://blog.csdn.net/my_miuye/article/details/107959378

 

二、新建配置文件夹、数据文件夹、日志文件夹

A机上:

  • 01
  • 02
  • 03
# mkdir -p /usr/local/mongodb/conf # mkdir -p /usr/local/mongodb/data # mkdir -p /usr/local/mongodb/log

B机上:

  • 01
  • 02
  • 03
# mkdir -p /usr/local/mongodb/conf # mkdir -p /usr/local/mongodb/data # mkdir -p /usr/local/mongodb/log

C机上:

  • 01
  • 02
  • 03
# mkdir -p /usr/local/mongodb/conf # mkdir -p /usr/local/mongodb/data # mkdir -p /usr/local/mongodb/log

 

三、写配置文件

A机:
# vi /usr/local/mongodb/conf/master.conf 然后将以下配置写入

  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
dbpath= /usr/local/mongodb/data logpath=/usr/local/mongodb/log/master.log directoryperdb=true logappend=true replSet=test bind_ip=0.0.0.0 port=27000 oplogSize=1000 fork=true

B机:
# vi /usr/local/mongodb/conf/slaver.conf 然后将以下配置写入

  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
dbpath= /usr/local/mongodb/data logpath=/usr/local/mongodb/log/slaver.log directoryperdb=true logappend=true replSet=test bind_ip=0.0.0.0 port=27000 oplogSize=1000 fork=true

C机:
# vi /usr/local/mongodb/conf/arbiter.conf 然后将以下配置写入

  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
dbpath= /usr/local/mongodb/data logpath=/usr/local/mongodb/log/arbiter.log directoryperdb=true logappend=true replSet=test bind_ip=0.0.0.0 port=27000 oplogSize=1000 fork=true

 

四、启动服务

A机:

  • 01
# mongod -f /usr/local/mongodb/conf/master.conf

B机:

  • 01
# mongod -f /usr/local/mongodb/conf/slaver.conf

C机:

  • 01
# mongod -f /usr/local/mongodb/conf/arbiter.conf

 

五、开放端口

直接配置会报错:No route to host


因此需先开放防火墙端口:2700

  • 01
  • 02
firewall-cmd --zone=public --add-port=27000/tcp --permanent sudo firewall-cmd --reload

 

六、配置主节点、副节点、仲裁节点

随便挑一台机器连接mongodb,这里我通过A主机连接了192.168.147.131节点

  • 01
  • 02
  • 03
  • 04
  • 05
# mongo 192.168.147.131:27000 >use admin >config={ _id:"test", members:[ {_id:0,host:'192.168.147.131:27000',priority:2}, {_id:1,host:'192.168.147.131:27000',priority:1}, {_id:2,host:'192.168.147.131:27000',arbiterOnly:true}] }; >rs.initiate(config) #使配置生效

_id:"test"中的test是刚才配置的replica set的名字,
priority为优先级,优先级最高的为主节点
arbiterOnly:true表示该节点是仲裁节点

通过rs.status()命令可以实时看到集群的变化。

 

七、通过副节点读取数据

先增加副节点可读权限

  • 01
  • 02
  • 03
vi ~/.mongorc.js 在文件中增加: rs.slaveOk();

然后重新连接副节点即可正常查询。
 

八、测试

1.主节点挂掉

  先用 rs.status() 查看当前各节点状态,可以看到master节点状态为PRIMARY,slaver节点状态为SECONDARY。

在A机关闭master服务

  • 01
# mongod --shutdown --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log/master.log --port=27000 --logappend --fork

  在B机mongo连接slaver节点,rs.status() 查看当前各节点状态,可以看到此时slaver节点状态为PRIMARY。说明在master节点挂掉后,slaver节点自动成为新的主节点。