记录一下安装过程,以下在Centos7中完成
一.安装准备
##准备三台机器,本次为在一台机器上安装故采用不同端口27017 27018 27019,采用普通用户localuser
##集群目录/data/mongodb
mkdir -p /data/mongodb && cd /data
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.6.tgz ##下载Mongodb
tar xf mongodb-linux-x86_64-rhel70-4.2.6.tgz && mv mongodb-linux-x86_64-rhel70-4.2.6 mongodbsoft ##解压重命名
cd /data/mongodbsoft/ && cp bin/* /usr/local/bin && cd /data/mongodb && mkdir -p 27017/conf 27017/data 27017/log 27018/conf 27018/data 27018/log 27019/conf 27019/data 27019/log ##如果不想移到local/bin目录下也可以加入环境变量,这里图方便
###环境变量 export PATH=$PATH:/data/mongodb/bin
二.创建配置文件初始化副本集
##创建配置文件,mongo的配置文件采用yaml语法,mongod.conf如下systemLog:
destination: file
path: /data/mongodb/27017/log/mongodb.log
logAppend: true
storage:
journal:
enabled: true
dbPath: /data/mongodb/27017/data
directoryPerDB: true
wiredTiger:
engineConfig:
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
net:
port: 27017
bindIp: 192.168.0.1
replication:
oplogSizeMB: 2048
replSetName: rep001
#security:
#keyFile: "/data/mongodb/27017/conf/mongo.key"
#authorization: enabled
#clusterAuthMode: keyFile
将以上配置文件分别拷贝到27017/conf/ 27018/conf 27019/conf 目录下,然后将27018 27019目录下的配置端口修改成相应的,同时因为是同一台Ip不用修改,如果是3台分别改成对应的IP即可,端口可相同,修改完启动副本集群,这里security先注释后面创建用户再开启
mongod -f 27017/conf/mongod.conf
mongod -f 27018/conf/mongod.conf
mongod -f 27019/conf/mongod.conf
启动如果没有报错则进入终端配置副本集
mongo --port 27017
##初始化副本集
config = {_id: 'rep1', members: [
{_id: 0, host: '192.168.0.1:27017'},
{_id: 1, host: '192.168.0.1:27018'},
{_id: 2, host: '192.168.0.1:27019'}]
}
rs.initiate(config)
如果中途没有报错则可以使用
use admin
rs.status() #查看状态是不是3个角色分别为Primary/Secondary,记录下为Primary角色的端口号
三.新建用户分别建立管理员/集群管理员/普通用户(按需指定db上的权限)
##在主节点执行 仅在主节点执行,进入Primary角色命令行
mongo 192.168.0.1:27017
use admin
##管理员
db.createUser(
{
user:"admin",
pwd:"yyss2020",
roles:[{role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"}]
}
)
##集群管理员
db.createUser(
{
user:"clusteradmin",
pwd:"yyss2020",
roles:[{role:"clusterAdmin",db:"admin"},{role:"clusterManager",db:"admin"},{role:"clusterMonitor",db:"admin"}]
}
)
##普通使用用户
use testdb
db.createUser(
{
user:"dev",
pwd:"devmm2020",
roles:[{role:"readWrite",db:"testdb"},{role:"dbAdmin",db:"testdb"},{role:"userAdmin",db:"testdb"}]
}
)
如果要建只读用户只需将role改成只读read即可
这时可以查看建立的用户是否成功
use admin
db.system.users.find()
四.关闭现有集群并开启认证
mongo 192.168.0.1:27017
use admin
db.shutdownServer()
mongo 192.168.0.1:27018
use admin
db.shutdownServer()
mongo 192.168.0.1:27017
use admin
db.shutdownServer()
生成集群通讯的keyfile文件,配置里面写的是/data/mongodb/27017/conf/mongo.key
cd /data/mongodb/27017/conf
openssl rand -base64 2048 > mongo.key #如果是不同机器分别拷到相应目录
将配置文件中的security注释的4行去掉#号然后重新启动,首先启动要作为Primary的,正常后再启动余下2台
mongod -f 27017/conf/mongod.conf
mongod -f 27018/conf/mongod.conf
mongod -f 27019/conf/mongod.conf
都启动后进入命令端查看副本集状态,切换成集群管理员查看
mongo --port 27017
use admin
db.auth('clusteradmint','yyss2020');
rs.status()
至此副本集可正常使用了