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

]

});

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

测试副本集的高可用性

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

use testDB

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

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

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

连接到 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();

相关推荐
Escalating_xu5 小时前
【Linux 网络编程】手写序列化与反序列化:从 x op y 到能校验的文本协议
linux·运维·网络
润滑卫士5 小时前
油液多参数融合故障诊断:数据级融合与决策级融合方法
运维
李纲明7 小时前
WordPress 后台登录马上被踢回登录页:Cookie 域、HTTPS、盐值和页面缓存怎么查
运维·缓存·https·php·wordpress·cookie
todoitbo7 小时前
在 Ubuntu ARM64 上运行 Q1 V3.0 MuJoCo 模型:加载、步进和单执行器响应
linux·运维·ubuntu·ai·机器人·仿真教程·启元
AR-26710-7 小时前
Linux Day26——传输层与三次握手
linux·运维
额额额对了8 小时前
嵌入式 Linux 实战:i.MX6ULL 上的 CAN 通信与摄像头采集
linux·运维·服务器
RFID科技的魅力9 小时前
2026 年 RFID 资产标签批量制作怎么做?RFID 标签打印机实操指南
运维·人工智能·嵌入式硬件·物联网
灯澜忆梦9 小时前
【Linux】#10 | Linux 终端实用快捷键 + 安装应用
linux·运维·服务器
OnlyEasyCode11 小时前
IIS开放端口转发后端
运维·服务器
合合技术团队12 小时前
合合信息旗下TextIn面向全球市场推出文档处理自动化公有云服务
运维·自动化