docker部署MongoDB集群

docker部署MongoDB集群

参考链接

1.创建mongo.conf配置文件
net:
  port: 27017 # 这是启动端口
  bindIp: 0.0.0.0  # 允许哪些ip连接(好像和下面的命令参数 --bind_ip_all 相类似的作用)
systemLog:
  logAppend: true #  重新启动的mongodb的时候日志拼接在以前的日志文件上,不用新建
security:
  keyFile: /data/configdb/mongodbKeyfile.key  # 这个路径很重要(注意这个路径是下面容器映射过的路径),不要写宿主机的绝对路径,容器是访问不到宿主机的,应该写容器中的路径。
  authorization: "enabled" # 开启客户端连接验证
replication:
  replSetName: "rs"  # 副本集的名称

2.在宿主机创建数据文件和目录
#!/usr/bin

mkdir -p /opt/mongodb/{/m0/data,/m0/conf,/m0/logs,/m1/conf,/m1/logs,/m2/data,/m2/data,/m2/conf,/m2/logs}

#mkdir -p /opt/mongodb/m0/data
#mkdir -p /opt/mongodb/m0/conf
#mkdir -p /opt/mongodb/m0/logs
#mkdir -p /opt/mongodb/m1/data
#mkdir -p /opt/mongodb/m1/conf
#mkdir -p /opt/mongodb/m2/data
#mkdir -p /opt/mongodb/m2/conf

openssl rand -base64 756 > /opt/mongodb/mongodbKeyfile.key
chmod 400 /opt/mongodb/mongodbKeyfile.key

cp /opt/mongodb/mongodbKeyfile.key /opt/mongodb/m0/conf
cp /opt/mongodb/mongodbKeyfile.key /opt/mongodb/m1/conf
cp /opt/mongodb/mongodbKeyfile.key /opt/mongodb/m2/conf

cp mongo.conf /opt/mongodb/m0/conf
cp mongo.conf /opt/mongodb/m1/conf
cp mongo.conf /opt/mongodb/m2/conf


3.编写docker-compose.yml文件
version: '3.8'

services:
  mongnoM0:
    image: mongo:latest
    container_name: mognoM0
    ports:
      - "37017:27017"
    volumes:
      - /opt/mongodb/m0/data:/data/db
      - /opt/mongodb/m0/conf:/data/configdb
      - /opt/mongodb/m0/logs:/data/log
    command: ["--replSet", "rs"]

  mongnoM1:
    image: mongo:latest
    container_name: mognoM1
    ports:
      - "47017:27017"
    volumes:
      - /opt/mongodb/m1/data:/data/db
      - /opt/mongodb/m1/conf:/data/configdb
      - /opt/mongodb/m1/logs:/data/log
    command: ["--replSet", "rs"]

  mongnoM2:
    image: mongo:latest
    container_name: mognoM2
    ports:
      - "57017:27017"
    volumes:
      - /opt/mongodb/m2/data:/data/db
      - /opt/mongodb/m2/conf:/data/configdb
      - /opt/mongodb/m2/logs:/data/log
    command: ["--replSet", "rs"]
4.启动容器 && 进入容器 配置副本集
docker-compose up -d
# 进入到其中一个容器
docker exec -it mognoM0 /bin/bash
# 连接mongo数据库
mongosh

# 配置副本集
var config={
     _id:"rs",
     members:[
         {_id:0,host:"宿主机IP:37017"},
         {_id:1,host:"宿主机IP:47017"},
         {_id:2,host:"宿主机IP:57017"}
]};
rs.initiate(config)

# 查看副本集配置信息
rs.conf()
5.插入数据测试
# 创建账号
use admin
db.createUser({
  user: "jianjian",
  pwd: "jianjian",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})

# 切换并新建数据库
use jianjian

# 创建并插入表数据 (集合)
db.user.insertOne({
     name: "jianjian",
     age: 25,
     email: "706978182@qq.com",
     createdAt: new Date()
 })

 # 查询表数据
 db.user.find().pretty()  # pretty表示格式化输出

6.通过可视化工具连接数据库查看

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值