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 &
- 现在将整个文件夹打包,可以准备在服务其上进行部署。
部署
- 解压【部署程序包.zip】获得mongodb-3.2.20,上传到指定服务器上,我上传到/data目录下
- 每台服务器上执行命令,分别启动各个实例
1. cd /data/mongodb-3.2.20/sh
nohup sh mongodb_auth.sh >/dev/null 2>&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. use admin
db.createUser({user:”admin”,pwd:”admin”,roles:[“root”]})
这样创建的是顶级权限用户,为了数据安全,一般不适用,程序中使用指定低等级的用户进行数据操作,可和运维实施人员或管理人员确认创建。
有需要可以参考我的:
打包示例-百度云 密码:hwqs