当前位置: 首页 > article >正文

mongodb高可用副本集 docker版

现在有三台主机 192.168.122.174 docker1
                          192.168.122.136 docker2

                          192.168.122.115 docker 3

docker容器默认的是bridge网络   同主机的容器可以互通  我们下面得用overlay网络

创建overlay网络

docker network create --driver overlay --attachable mongo555

初始化docker swarm

docker1作为主节点初始化

docker swarm init --advertise-addr 192.168.122.174

在主节点上创建 MongoDB 服务

在主节点上创建第一个 MongoDB 服务,并将其配置为副本集的主节点:

docker service create --name mongo1 --network mongo555 \
    --constraint 'node.hostname == docker1' \
    --publish published=27017,target=27017 \
    mongo:4.4.29 mongod --replSet rs0

主节点继续操作

docker service create --name mongo2 --network mongo555 \
    --constraint 'node.hostname == docker2' \
    --publish published=27018,target=27017 \
    mongo:4.4.29 mongod --replSet rs0

docker service create --name mongo3 --network mongo555 \
    --constraint 'node.hostname == docker3' \
    --publish published=27019,target=27017 \
    mongo:4.4.29 mongod --replSet rs0

初始化副本集

连接到 MongoDB 主节点 mongo1,然后初始化副本集:

docker exec -it $(docker ps -q -f name=mongo1) mongo

在 MongoDB shell 中,执行以下命令以添加副本集成员:

rs.initiate({
    _id: "rs0",
    members: [
        { _id: 0, host: "192.168.122.174:27017" }, // mongo1
        { _id: 1, host: "192.168.122.136:27018" }, // mongo2
        { _id: 2, host: "192.168.122.115:27019" }  // mongo3
    ]
});

这里 mongo2mongo3 的主机地址与端口需要与创建服务时的端口一致。

测试副本集的高可用性

连接到 mongo1,插入测试数据:

use testDB
db.testCollection.insert({ name: "MongoDB Test", createdAt: new Date() });
 

验证数据在副本集中的同步

可以通过连接到其他节点(mongo2mongo3)来验证数据的同步情况:

连接到 docker2

docker exec -it $(docker ps -q -f name=mongo2) mongo --host 192.168.122.136 --port 27017

use testDB
db.testCollection.find();

连接到docker3

docker exec -it $(docker ps -q -f name=mongo3) mongo --host 192.168.122.115 --port 27017

use testDB
db.testCollection.find();
 


http://www.kler.cn/news/365855.html

相关文章:

  • 深度学习技术演进:从 CNN、RNN 到 Transformer 的发展与原理解析
  • JavaScript网页设计案例教程:从零开始构建一个响应式网页
  • mac nwjs程序签名公证(其他mac程序也一样适用)
  • 计算机网络基本架构示例2
  • 金融工程--pine-script 入门
  • oracle数据库---PL/SQL、存储函数、存储过程、触发器、定时器job、备份
  • linux下的进程等待(wait、waitpid)
  • Vue 3项目的性能监测和优化
  • 日常记录:es TransportClient添加证书处理
  • vscode 配置构建、调试QT项目
  • uniapp renderjs页面传值
  • 【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (七):MongoDB的设置
  • 虚拟化基础
  • java List<Map<String, Object>> 转 List<JSONObject> 的几种方式
  • Log4j和SLF4J在Java中打印日志的区别
  • Node.js是什么? 能做什么?
  • Harmony 开发与H5进行交互
  • OneNote不能拖动页面解决方案
  • docker-compose安装sentinel
  • Springcloud健身小程序-计算机毕业设计源码27368
  • linux中级wed服务器(https搭建加密服务器)
  • Spring Boot 中应用单元测试(UT):结合 Mock 和 H2 讲解和案例示范
  • (11)(2.1.7) FETtec OneWire ESCs(一)
  • idea git 一些日常操作解决办法(Git撤销回滚操作)
  • 【C语言】控制台学生成绩管理系统
  • 关系型数据库(1)----MySQL(初阶)