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"
}
]
}
)