MongoDB 副本模式集群搭建

# 架构图

MongoDB 副本模式集群搭建

 

#主服务器:master 负责读和写

#副本节点:slave1 负责读

#仲裁节点:slave1 负责投票选主

# 1. 安装

tar zxvf mongodb-linux-x86_64-3.6.3.tgz

# 2.启动主节点

master:

mkdir data

mkdir logs

touch logs/mongo-replset1.log

bin/mongod --dbpath=./data --logpath=./logs/mongo-replset1.log --logappend --port=27017 --fork --bind_ip 0.0.0.0 --replSet repset 

# 3. 启动从节点和仲裁节点

slave1:

mkdir data/1

mkdir data/2

mkdir conf

mkdir logs

touch logs/mongo-replset1.log

touch logs/mongo-replset2.log

bin/mongod --dbpath=./data/1 --logpath=./logs/mongo-replset1.log --logappend --port=27017 --fork --bind_ip 0.0.0.0 --replSet repset 

bin/mongod --dbpath=./data/2 --logpath=./logs/mongo-replset2.log --logappend --port=27018 --fork --bind_ip 0.0.0.0 --replSet repset 

# 4. 配置副本集

## 在集群master节点执行以下命令:

bin/mongo

use admin

## 定义副本集配置变量

config = {

_id:"repset", members:[

{_id:0,host:"master:27017"},

{_id:1,host:"slave1:27017"},

{_id:2,host:"slave1:27018",arbiterOnly:true}

]

}

## 初始化副本集配置

rs.initiate(config)

## 查看集群节点的状态

rs.status()

## 允许从slave读(只对当前连接有效),在slave节点执行:

db.getMongo().setSlaveOk();

# 5.集群认证

## 在集群master节点执行如下操作:

##生成key

##在/home/jboss/mongodb/mongodb-linux-x86_64-4.0/conf目录下:

openssl rand -base64 745 >keyfile

chmod 600 keyfile

##将keyfile文件拷贝到slave1节点/home/jboss/mongodb/mongodb-linux-x86_64-4.0.5 conf目录下。

# 6.重启各个节点服务

ps -ef|grep mongo

Kill -9 pid

##master主节点

mkdir conf

vi mongo.cfg

processManagement:

  fork: true

net:

  port: 27017

  bindIp: 0.0.0.0

storage:

  dbPath:data

replication:

  replSetName:repset

systemLog:

  destination: file

  logAppend: true

  path:logs/mongo-replset1.log

security:

  keyFile:keyfile

bin/mongod -f conf/mongo.cfg

 

##slave1从节点和仲裁节点

mkdir conf

vi mongo-1.cfg

processManagement:

  fork: true

net:

  port: 27017

  bindIp: 0.0.0.0

storage:

  dbPath:data/1

replication:

  replSetName:repset

systemLog:

  destination: file

  logAppend: true

  path:logs/mongo-replset1.log

security:

  keyFile:keyfile

bin/mongod -f conf/mongo-1.cfg    #启动1

vi mongo-2.cfg

processManagement:

  fork: true

net:

  port: 27018

  bindIp: 0.0.0.0

storage:

  dbPath:data/2

replication:

  replSetName:repset

systemLog:

  destination: file

  logAppend: true

  path:logs/mongo-replset2.log

security:

  keyFile:keyfile

bin/mongod -f conf/mongo-2.cfg   #启动2

# 7.在集群master节点新增用户授权

cd /home/jboss/mongodb/mongodb-linux-x86_64-3.4.18

bin/mongo

> use admin

switched to db admin

>

db.createUser(

{

user:"admin",

pwd:"admin",

roles:[

{

role:"root",

db:"admin"

}

]

}

)

 

use admin

db.auth("admin","admin")

 

use erh

 

switched to db erh

>

db.createUser(

{

user:"erh",

pwd:"erh",

roles:[

{

role:"readWrite",

db:"erh"

}

]

}

)