当先锋百科网

首页 1 2 3 4 5 6 7

一、准备工作

        本次安装在同一台虚拟机上安装,端口分别是27017、27018、27019。这里假设你的服务器或者虚拟机上已经安装了Docker。

1、创建挂载目录

 mkdir -p /data/mongo1/{conf,db,key}
 mkdir -p /data/mongo2/{conf,db,key}
 mkdir -p /data/mongo3/{conf,db,key}

2、创建配置文件mongod.conf

在/data/mongo1/conf创建mongod.conf配置文件,内容如下

storage:
  dbPath: /data/db/
  journal:
    enabled: true
net:
  port: 27017
  bindIp: 0.0.0.0
replication:
  replSetName: mycluster
security:
  authorization: enabled
  keyFile: /data/key/mongo.keyfile

在/data/mongo2/conf创建mongod.conf配置文件,内容如下

storage:
  dbPath: /data/db/
  journal:
    enabled: true
net:
  port: 27018
  bindIp: 0.0.0.0
replication:
  replSetName: mycluster
security:
  authorization: enabled
  keyFile: /data/key/mongo.keyfile

在/data/mongo3/conf创建mongod.conf配置文件,内容如下 

storage:
  dbPath: /data/db/
  journal:
    enabled: true
net:
  port: 27019
  bindIp: 0.0.0.0
replication:
  replSetName: mycluster
security:
  authorization: enabled
  keyFile: /data/key/mongo.keyfile

 keyFile对应容器内的路径,不是宿主机的路径。

3、创建mongo.keyfile

openssl rand -base64 753 > /data/mongo1/key/mongo.keyfile

然后将上面生成的key复制到mongo2、mongo3对应的key目录下

 cp /data/mongo1/key/mongo.keyfile /data/mongo2/key/
 cp /data/mongo1/key/mongo.keyfile /data/mongo3/key/

然后授权文件

chmod 600 /data/mongo1/key/mongo.keyfile 
chmod 600 /data/mongo2/key/mongo.keyfile  
chmod 600 /data/mongo3/key/mongo.keyfile


#这个一定要执行,不然启动容器的时候,读取不到keyfile文件时会提示bad file
chown 999 /data/mongo1/key/mongo.keyfile 
chown 999 /data/mongo2/key/mongo.keyfile  
chown 999 /data/mongo3/key/mongo.keyfile

 二、创建mongo容器

 docker run -di  --name=mongo1 -p 27017:27017 \
 -v /data/mongo1/conf:/data/configdb/ \
 -v /data/mongo1/db:/data/db/ \
 -v /data/mongo1/key/mongo.keyfile:/data/key/mongo.keyfile \
 mongo:6.0.8 \
 --replSet mycluster --bind_ip_all --keyFile /data/key/mongo.keyfile 
 
 
 
 docker run -di  --name=mongo2 -p 27018:27017 \
 -v /data/mongo2/conf:/data/configdb/ \
 -v /data/mongo2/db:/data/db/ \
 -v /data/mongo2/key/mongo.keyfile:/data/key/mongo.keyfile \
 mongo:6.0.8 \
 --replSet mycluster --bind_ip_all --keyFile /data/key/mongo.keyfile 
 
 
 
 docker run -di  --name=mongo3 -p 27019:27017 \
 -v /data/mongo3/conf:/data/configdb/ \
 -v /data/mongo3/db:/data/db/ \
 -v /data/mongo3/key/mongo.keyfile:/data/key/mongo.keyfile \
 mongo:6.0.8 \
 --replSet mycluster --bind_ip_all --keyFile /data/key/mongo.keyfile 

三、初始化集群

# 进入容器
 docker exec -it mongo1 mongosh admin
# 配置节点
rs.initiate({_id:"mycluster", members:[{_id:0, host:"192.168.139.184:27017"}, {_id:1, host:"192.168.139.184:27018"}, {_id:2, host:"192.168.139.184:27019"}]});

#查看状态
rs.status();


#创建账号
db.createUser({
  user: 'root',
  pwd: '123456',
  roles: [
 { role: "root", db: "admin" }
  ]
});

 连接前请关闭防火墙