1.创建容器卷目录
####mongo01
mkdir -p /data/mongo01/log
touch /data/mongo01/log/mongod.log
chmod 777 /data/mongo01/log/mongod.log
####mongo02
mkdir -p /data/mongo02/log
touch /data/mongo02/log/mongod.log
chmod 777 /data/mongo02/log/mongod.log
####mongo03
mkdir -p /data/mongo03/log
touch /data/mongo03/log/mongod.log
chmod 777 /data/mongo03/log/mongod.log
2.创建密匙
cd /data/mongo01
openssl rand -base64 756 > keyfile
chmod 600 keyfile
scp -r keyfile 10.0.0.81:/data/mongo02/
scp -r keyfile 10.0.0.70:/data/mongo03/
3.创建mongod.conf
vim /data/mongo01/mongod.conf
storage:
dbPath: /data/db
journal:
enabled: true
directoryPerDB: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security:
keyFile: /data/db/keyfile
#operationProfiling:
replication:
replSetName: rs0
oplogSizeMB: 10000
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
######mongo limit#######
net.maxIncomingConnections: 8000
scp -r mongod.conf 10.0.0.81:/data/mongo02/
scp -r mongod.conf 10.0.0.70:/data/mongo03/
4.创建运行容器
docker run -d --name mongo01 -p 27017:27017 -v /data/mongo01/:/data/db:rw -v /data/mongo01/mongod.conf:/etc/mongod.conf:ro -v /data/mongo01/log/mongod.log:/var/log/mongodb/mongod.log -v /etc/localtime:/etc/localtime:ro --restart=always mongo:4.2 --replSet "rs0" --config /etc/mongod.conf
docker run -d --name mongo02 -p 27017:27017 -v /data/mongo02/:/data/db:rw -v /data/mongo02/mongod.conf:/etc/mongod.conf:ro -v /data/mongo02/log/mongod.log:/var/log/mongodb/mongod.log -v /etc/localtime:/etc/localtime:ro --restart=always mongo:4.2 --replSet "rs0" --config /etc/mongod.conf
docker run -d --name mongo03 -p 27017:27017 -v /data/mongo03/:/data/db:rw -v /data/mongo03/mongod.conf:/etc/mongod.conf:ro -v /data/mongo03/log/mongod.log:/var/log/mongodb/mongod.log -v /etc/localtime:/etc/localtime:ro --restart=always mongo:4.2 --replSet "rs0" --config /etc/mongod.conf
5.集群初始化
docker exec -it mongo01 bash
mongo 127.0.0.1:27017
config = { _id:"rs0", members:[{_id:0,host:"10.0.0.80:27017"},{_id:1,host:"10.0.0.81:27017"},{_id:2,host:"10.0.0.70:27017"}]}
rs.initiate(config)
#系统返回:{ "ok" : 1 } 说明初始化成功
6.查看集群状态
rs0:SECONDARY> rs.status()
7.在主节点上创建用户
rs0:PRIMARY> use admin
rs0:PRIMARY> db.createUser({ user: 'adminuser', pwd: '12345678', roles: [ { role: "root", db: "admin" } ] })
在从库执行show dbs报错
rs0:SECONDARY> rs.secondaryOk()
8. 从库连接mongo
mongo --username adminuser --password 12345678 --authenticationDatabase admin