MongoDB支持分布式部署,分布式部署的各节点可配置keyFile认证。MongoDB支持登陆用户身份认证,通过用户的角色设置分配操作权限。当然,默认情况下是不开启身份认证的,集群中各节点也是不进行keyFile认证的,需要增加一些配置以开启,提高安全级别。默认的部署方式在使用上很简单,但是在生产环境中有很大的安全隐患。

经过简单学习和演练,提前准备好部署程序和文件来使用。

准备

  • 从官网下载linux版的部署压缩包并解压tar -zxvf mongo-v3.2.tar,我使用的是3.2.20版本。
  • 解压出来的文件夹只有一个bin和几个文件,这些都不用动,创建几个bin同级的文件夹。分别存放keyFile认证文件,集群日志,编写好的启动脚本和数据文件位置。
mkdir key
        mkdir logs
        mkdir sh
        mkdir data
  • 生成keyFile文件并放置到key文件下。可使用openssl生成,部署在服务器上的keyFile文件的访问权限要求是600的,部署启动时候要注意下这个权限问题。
openssl rand -base64 745 > mdb-keyfile-1.jks
    chmod 600 mdb-keyfile-1.jks
  • 编写一个启动脚本,名字可以是mongo_auth.sh,放在刚才创建的sh文件中。
## 指定了数据文件路径是之前创建的data文件夹,给集群命名叫mdbset,
## 日志存放在创建的logs文件夹中,指定了使用哪个keyFile。--auth开启身份认证
## --fork开启后台执行
../bin/mongod --dbpath=../data --port 32017 --replSet mdbset --logpath=../logs/mdb.log --keyFile ../key/mdb-keyfile-1.jks --auth --fork &
  • 现在将整个文件夹打包,可以准备在服务其上进行部署。

部署

  1. 解压【部署程序包.zip】获得mongodb-3.2.20,上传到指定服务器上,我上传到/data目录下
  2. 每台服务器上执行命令,分别启动各个实例
1.  cd /data/mongodb-3.2.20/sh 
 nohup sh mongodb_auth.sh >/dev/null 2>&1 &
  1. 构建集群,在选择的主实例服务器上执行
1.  ../bin/mongo -port 32017 
 rs.initiate({_id:”mdbset”,members:[ 
 {_id:0,host:”ip1:32017”,priority:100}, 
 {_id:1,host:”ip2:32017”,priority:99}, 
 {_id:2,host:”ip2:32017”,priority:98}, 
 ]})
  1. 创建身份认证用户
1.  use admin 
 db.createUser({user:”admin”,pwd:”admin”,roles:[“root”]})

这样创建的是顶级权限用户,为了数据安全,一般不适用,程序中使用指定低等级的用户进行数据操作,可和运维实施人员或管理人员确认创建。

有需要可以参考我的:
打包示例-百度云 密码:hwqs