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 #退出

当主节点出现故障的时候,在两个从节点上会选举出一个新的主节点,故障恢复之后,之前的主节点会变为从节点。

posted @ 2021-02-24 16:00  woaibaobei  阅读(234)  评论(0编辑  收藏  举报