mongodb副本集搭建
参考网址
MongoDB安装目录:/usr/local/mongodb
MongoDB数据库目录:/home/data/mongodb/mongodb_data
MongoDB日志目录:/home/data/mongodb/mongodb_log
MongoDB配置文件:/usr/local/mongodb/mongodb.conf
三台服务器IP地址:
192.168.0.8
192.168.0.9
192.168.0.10
实现目的:
对三台服务器进行部署,实现副本集功能。
具体操作:
一、确定副本集名称、主从节点、配置文件、启动脚本信息
1、定义副本集名称为:osyunwei
2、主节点为:192.168.0.8
3、两台从节点为:
192.168.0.9
192.168.0.10
4、确保三台副本集服务器上的配置文件完全相同,如下:
第一种写法:官方推荐、适合2.6以后的版本
vi /usr/local/mongodb/mongodb.conf #编辑
systemLog:
destination: "file"
path: "/home/data/mongodb/mongodb_log/mongodb.log"
logAppend: true
storage:
journal:
enabled: true
dbPath: "/home/data/mongodb/mongodb_data/"
directoryPerDB: true
processManagement:
fork: true
pidFilePath: "/usr/local/mongodb/mongo.pid"
net:
port: 27017
http:
enabled: true
RESTInterfaceEnabled: true
security:
keyFile: "/usr/local/mongodb/keyfile"
clusterAuthMode: "keyFile"
authorization: "enabled"
replication:
replSetName: "osyunwei"
:wq! #保存退出
第二种写法:适用所有版本
vi /usr/local/mongodb/mongodb.conf #编辑
port=27017
dbpath=/home/data/mongodb/mongodb_data/
logpath=/home/data/mongodb/mongodb_log/mongodb.log
pidfilepath=/usr/local/mongodb/mongo.pid
fork=true
logappend=true
shardsvr=true
directoryperdb=true
auth=true
keyFile =/usr/local/mongodb/keyfile
replSet =osyunwei
:wq! #保存退出
注意:以上两种配置文件的写法都可以。
5、确保三台副本集服务器上的启动脚本完全相同,如下:
vi /etc/init.d/mongod
ulimit -SHn 655350
!/bin/sh
chkconfig: - 64 36
description:mongod
case $1 in
start)
/usr/local/mongodb/bin/mongod --maxConns 20000 --config /usr/local/mongodb/mongodb.conf
;;
stop)
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()"
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.auth('system', '123456');db.shutdownServer()"
;;
status)
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()"
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.auth('system', '123456');db.stats()"
;;
esac
:wq! #保存退出
二、对主节点进行配置
1、/usr/local/mongodb/bin/mongo #进入主节点192.168.0.8
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接
rs.initiate()
rs.conf()
初始化副本集,设置本机为主节点PRIMARY
2、添加副本集从节点
rs.add("192.168.0.9:27017")
rs.add("192.168.0.10:27017")
3、设置节点优先级
cfg = rs.conf() #查看节点顺序
cfg.members[0].priority = 1
cfg.members[1].priority = 1
cfg.members[2].priority = 2 #设置_ID为2的节点为主节点
rs.reconfig(cfg) #使配置生效
exit #退出控制台
说明:
MongoDB副本集通过设置priority决定优先级,默认优先级为1,priority值是0到100之间的数字,数字越大优先级越高,priority=0,则此节点永远不能成为主节点primay。
cfg.members[0].priority =1参数,中括号里的数字是执行rs.conf()查看到的节点顺序,第一个节点是0,第二个节点是1,第三个节点是2,以此类推。
三、分别对两台从节点进行配置
/usr/local/mongodb/bin/mongo #进入从节点192.168.0.9/10
db.getMongo().setSlaveOk() #设置从节点为只读数据库
exit #退出控制台
四、设置数据库账号,开启登录验证
1、设置数据库账号
在主节点服务器192.168.0.8上面操作
/usr/local/mongodb/bin/mongo #进入主节点192.168.0.8
show dbs #列出所有数据库
use admin #切换到admin数据库,添加的账号才是管理员账号。
show collections
db.system.users.find()
添加两个管理员账号,一个系统管理员:system 一个数据库管理员:administrator
db.createUser({user:"system",pwd:"123456",roles:[{role:"root",db:"admin"}]}) #
添加系统管理员账号,用来管理用户
db.auth('system','123456') #添加管理员用户认证,认证之后才能管理所有数据库
db.createUser({user:"administrator",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) #添加数据库管理员,用来管理所有数据库
db.auth('administrator','123456') #添加管理员用户认证,认证之后才能管理所有数据库
exit #退出
用刚才创建的账号进行登录
/usr/local/mongodb/bin/mongo -u system -p 123456 --authenticationDatabase admin
exit #退出
/usr/local/mongodb/bin/mongo -u administrator -p 123456 --authenticationDatabase admin
exit #退出
2、开启登录验证
在主节点服务器192.168.0.8上面操作
cd /usr/local/mongodb #进入mongodb安装目录
openssl rand -base64 21 > keyfile #创建一个keyfile(使用openssl生成21位base64加密的字符串)
chmod 600 /usr/local/mongodb/keyfile #修改文件权限为600
cat /usr/local/mongodb/keyfile #查看刚才生成的字符串,做记录,后面要用到。
注意:上面的数字21,最好是3的倍数,否则生成的字符串可能含有非法字符,认证失败。
3、设置配置文件
分别在所有节点上面操作
192.168.0.8/9/10
配置文件/usr/local/mongodb/mongodb.conf取消注释
第一种写法:
security:
keyFile: "/usr/local/mongodb/keyfile"
clusterAuthMode: "keyFile"
authorization: "enabled"
第二种写法:
auth=true
keyFile =/usr/local/mongodb/keyfile
启动脚本使用下面的代码(注释原来的,启用之前注释掉的)
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.auth('system', '123456');db.shutdownServer()"
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.auth('system', '123456');db.stats()"
4、设置权限验证文件
先进入主节点服务器192.168.0.8,查看cat /usr/local/mongodb/keyfile #查看刚才生成的字符串,做记录
再分别进入两台从节点服务器192.168.0.9/10
vi /usr/local/mongodb/keyfile #输入上一步查看到的字符串
:wq! #保存退出
chmod 600 /usr/local/mongodb/keyfile #修改文件权限为600
五、验证副本集
分别重启三台副本集服务器
/usr/local/mongodb/bin/mongo -u system -p 123456 --authenticationDatabase admin #登录到控制台
rs.status() #副本集状态查看
exit #退出
当主节点出现故障的时候,在两个从节点上会选举出一个新的主节点,故障恢复之后,之前的主节点会变为从节点。