准备安装的机器
m1,m2,m3
配置三台机器的登录互信
cd ~/.ssh ssh-keygen -t rsa -P ""
三个机器产生的id_rsa.pub[都]追加到机器的authorized_keys,这样机器就有了互信的凭证
cat id_rsa.pub >> authorized_keys 不要忘记权限设定chmod 600 authorized_keys 不要忘记home目录的权限设置为755 .ssh目录设置为700
下载安装包
在官网下载安装包
最新稳定版本 解压
tar -zxvf mongodb-linux-x86_64-4.0.1.tgz mv mongodb-linux-x86_64-4.0.1 mongodb
设置环境
vi ~/.bash_profile #注意别设置错了 PATH=$PATH:$HOME/bin:/home/work/mongodb/bin source ~/.bash_profile cd mongodb 建立必要目录 mkdir data logs etc cd etc
vi mongodb.conf #配置文件说明(见参考资料)
# 日志路径 logpath=/home/work/mongodb/logs/mongod.log # 是否日志追加 logappend=true # 后台启动 fork=true # 端口 port=27017 # 数据目录 dbpath=/home/work/mongodb/data # pid pidfilepath=/home/work/mongodb/data/mongod.pid # 设置oplog的大小 oplogSize=4096 # 最大同时连接数 默认2000 maxConns=2000 # 设置每个数据库将被保存在一个单独的目录 directoryperdb=true #启用日志文件,默认启用 journal=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false quiet=true # 监听 bind_ip=0.0.0.0 # 监听 replSet=rs0
分别启动mongo数据库
./bin/mongod -f ./etc/mongodb.conf
在其中一台登录mongo执行 ./bin/mongo命令进入命令行
初始化mongo环境
rs.initiate( { _id: "rs0", version: 1, members: [ { _id: 0, host : "m1:27017" }, { _id: 1, host : "m2:27017" }, { _id: 2, host : "m3:27017" } ] } )
通过rs.status()命令可以查看链接状态
验证数据库可用性
use test db.col.save({a:'dongge'}); db.col.find(); { "_id" : ObjectId("5bd162cd6158e0f4ea9ae9a2"), "a" : dongge }
看起来成功,然后在所有的SECONDARY机器执行rs.slaveOk(),把SECONDARY机器设置为只读(主要)
db.col.find();
验证故障转移
停掉Primary,关闭mongo服务器
use admin; db.shutdownServer(); #或以下命令关闭 mongod --shutdown --dbpath /home/work/mongodb/data
查看rs.status() 看看是否转移成功
账号和授权配置,并配置验证
- 创建超级用户root use admin db.createUser({user:"root",pwd:"your password",roles:["root"]})
- 创建所有数据库只读角色 db.createUser({user:"nr",pwd:"your password",roles:["readAnyDatabase"]})
- 创建线上运行用户 db.createUser({user:"nw",pwd:"your password",roles:["readWriteAnyDatabase"]})
- 创建线上集群监控角色 db.createUser({user:"monitor",pwd:"your password",roles:["clusterMonitor"]})
- 查看系统所有用户 db.system.users.find().pretty()
- 关闭集群,修改mongodb.conf配置文件开启用户认证模式,配置完毕后重启集群,如下,开启认证,生成认证文件
openssl rand -base64 756 > energy-rc.key chmod 400 energy-rc.key
然后拷贝到每一个机器mongodb/etc下
修改mongo.conf文件,增加如下内容:
# 开启认证模式 auth=true # 安全认证机制 keyFile=/home/work/mongodb/etc/energy-rc.key
重启机器
mongod --shutdown --dbpath /home/work/mongodb/data mongod -f /home/work/mongodb/etc/mongodb.conf
- 验证开启认证效果
use admin db.auth("uanme_nr_rd","your pwd") db.auth("uanme_nw","your pwd") db.auth("root","your pwd") db.auth("monitor","your pwd")
参考资料
- mongodb4.0.2 复制集主从部署
- MongoDB高级应用(二):集群复制
- MongoDB用户角色配置
- mongodb配置文件配置
- mongodb配置文件配置-官方