Docker----基于docker搭建mongodb集群

docker搭建mongodb集群

三台服务器地址

服务名称 IP地址 端口
mongo1 172.17.3.135 27017
mongo2 172.17.3.123 27017
mongo3 172.17.3.99 27017

建立配置文件


  • 在135服务器建立配置文件/qj/mongo1/conf/mongod.conf

  • 在123服务器建立配置文件/qj/mongo2/conf/mongod.conf

  • 在99服务器建立配置文件/qj/mongo3/conf/mongod.conf


mongo1服务配置文件/qj/mongo1/conf/mongod.conf

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
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:

建立keyfile文件

生成keyfile:

openssl rand -base64 756 >  keyfile
# 阿里的服务器上可能用不了这条命令,建议在本地生成这个文件

然后将生成的代码放入135服务器的/qj/mongo1/data/db/keyfile,修改权限为600

chmod 600 /qj/mongo1/data/db/keyfile

建立日志文件

sudo mkdir /qj/mongo1/log/
sudo touch /qj/mongo1/log/mongod.log
chmod 777 /qj/mongo1/log/mongod.log
# 这个容器,如果你启动失败,看不了日志文件,所以把它映射出来,方便查看问题。

135节点mongo1启动容器命令


 docker run -d --name mongo1 --restart=always \
-p 27017:27017 \
-v /qj/mongo1/conf/mongod.conf:/etc/mongod.conf:ro \
-v /qj/mongo1/data/db:/data/db:rw \
-v /qj/mongo1/log/mongod.log:/var/log/mongodb/mongod.log \
-v /etc/localtime:/etc/localtime:ro \
 registry-vpc.cn-beijing.aliyuncs.com/qianjia_public/mongo:4.0.5 \
 --replSet "rs0" --config /etc/mongod.conf

mongo2服务配置文件/qj/mongo2/conf/mongod.conf

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /data/db
  journal:
    enabled: true
  directoryPerDB: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2

#  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:

建立keyfile文件

生成keyfile:

openssl rand -base64 756 >  keyfile

然后将生成的代码放入123服务器的/qj/mongo2/data/db/keyfile,修改权限为600

chmod 600 /qj/mongo2/data/db/keyfile

建立日志文件

sudo mkdir /qj/mongo2/log/
sudo touch /qj/mongo2/log/mongod.log
chmod 777 /qj/mongo2/log/mongod.log

123节点mongo2启动容器命令

 docker run -d --name mongo2 --restart=always \
-p 27017:27017 \
-v /qj/mongo2/conf/mongod.conf:/etc/mongod.conf:ro \
-v /qj/mongo2/data/db:/data/db:rw \
-v /qj/mongo2/log/mongod.log:/var/log/mongodb/mongod.log \
-v /etc/localtime:/etc/localtime:ro \
 registry-vpc.cn-beijing.aliyuncs.com/qianjia_public/mongo:4.0.5 \
 --replSet "rs0" --config /etc/mongod.conf

mongo3服务配置文件/qj/mongo3/conf/mongod.conf

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
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:

建立keyfile文件

生成keyfile:

openssl rand -base64 756 >  keyfile

然后将生成的代码放入99服务器的/qj/mongo3/data/db/keyfile,修改权限为600

chmod 600 /qj/mongo3/data/db/keyfile

建立日志文件

sudo mkdir /qj/mongo3/log/
sudo touch /qj/mongo3/log/mongod.log
chmod 777 /qj/mongo3/log/mongod.log

99节点mongo3启动容器命令

  docker run -d --name mongo3 --restart=always \
-p 27017:27017 \
-v /qj/mongo3/conf/mongod.conf:/etc/mongod.conf:ro \
-v /qj/mongo3/data/db:/data/db:rw \
-v /qj/mongo3/log/mongod.log:/var/log/mongodb/mongod.log \
-v /etc/localtime:/etc/localtime:ro \
 registry-vpc.cn-beijing.aliyuncs.com/qianjia_public/mongo:4.0.5 \
 --replSet "rs0" --config /etc/mongod.conf

建立集群

进入135主机的容器,启动mongo

docker exec -it mongo1 bash
mongo

建立集群

config = {
    
     _id:"rs0", members:[{
    
    _id:0,host:"172.17.3.135:27017"},{
    
    _id:1,host:"172.17.3.123:27017"},{
    
    _id:2,host:"172.17.3.99:27017"}]}

集群初始化

rs.initiate(config)

确定master

rs.isMaster()

查看集群状态

rs.status()

另外两台主机上,需要先确定slave,才能继续查看,进入容器启动mongo后

rs.slaveOk()

建立超级管理员用户

在master节点

use admin

db.createUser({user: "admin", pwd: "admin", roles:[{role:"root", db:"admin"}] })

超级用户建立完成,此时启动或连接mongo后直接show dbs将不能显示数据库,需要先登录

db.auth("admin","admin")
再次
show dbs
即可显示所有数据库

猜你喜欢

转载自blog.csdn.net/weixin_44006354/article/details/105579019