最简单的Docker创建MongoDB副本集

一:前提

Ubuntu系统 LTS16+ Docker部署完成 外部网络支持

当前IP:172.168.20.42

二:终端操作 1.创建一个Docker网络

docker network create mongo-cluster

2.启动容器(带有客户端的版本)

docker run --name mongo1 -p 37071:27017 --net mongo-cluster -d mongo:4.4-bionic mongod --replSet rs1

docker run --name mongo2 -p 37072:27017 --net mongo-cluster -d mongo:4.4-bionic mongod --replSet rs1

docker run --name mongo3 -p 37073:27017 --net mongo-cluster -d mongo:4.4-bionic mongod --replSet rs1

 

docker ps -a

 

 

3.进入mongo1容器 docker exec -it mongo1 mongo

 

 

4.配置conf

说明:

37071、37072为主备节点

37073为仲裁节点

rs.initiate({_id: "rs1", members: [ { _id: 0, host: "172.168.20.42:37071" }, { _id: 1, host: "172.168.20.42:37072" }, { _id: 2, host: "172.168.20.42:37073",arbiterOnly:true } ]})

 

 

代码连接:

复制代码
class Program
    { 
        static void Main(string[] args)
        {
            try
            {
                 var settings = MongoClientSettings.FromUrl(new MongoUrl("mongodb://172.168.20.42:37071,172.168.20.42:37072/?replicaSet=rs1"));
                var client = new MongoClient(settings); 
                var _mongodb = client.GetDatabase("testdb1"); 
                // 获取集合
                var collection = _mongodb.GetCollection<BsonDocument>("t1");
                // 在集合中插入文档
                var document = new BsonDocument{{ "name", "John Doe" },{ "age", 42 },{ "isStudent", false }};
                collection.InsertOne(document);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            } 
        } 
复制代码

测试:

1.调用完成后。在查看两个节点 数据是否同步。

2.关闭一个节点,继续写入第二条,查看程序是否正常运行

3.启动关闭的节点,查看第二条数据是否同步

posted @   后跳  阅读(174)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示