zoukankan      html  css  js  c++  java
  • docker 安装mongodb集群==一台服务器

    https://blog.csdn.net/vincerom/article/details/81145938


    镜像

    docker pull mongo:4.2.7

    网络

    docker network create --subnet=10.20.0.0/24 mongodbnet

    文件夹

    mkdir -p /home/soft/mongodbone/configsvr
    mkdir -p /home/soft/mongodbone/shard1
    mkdir -p /home/soft/mongodbone/shard2
    mkdir -p /home/soft/mongodbone/shard3
    mkdir -p /home/soft/mongodbone/mongos

    Config-Server 配置文件
    路径:vi /home/soft/mongodbone/configsvr/mongod.conf

    storage:
      dbPath: /data/db
      journal:
        enabled: true
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    net:
      bindIp: 0.0.0.0
    processManagement:
      timeZoneInfo: /usr/share/zoneinfo
    replication:
      replSetName: cfg
    sharding:
      clusterRole: configsvr



    Mongos 配置文件
    路径:vi /home/soft/mongodbone/mongos/mongos.conf

    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongos.log
    net:
      port: 27020
      bindIp: 0.0.0.0
    processManagement:
      fork: true
      timeZoneInfo: /usr/share/zoneinfo
    sharding:
      configDB: cfg/10.20.0.2:27019,10.20.0.3:27019,10.20.0.4:27019

    Shard-Server 配置文件1
    路径:vi /home/soft/mongodbone/shard1/mongod.conf

    storage:
      dbPath: /data/db
      journal:
        enabled: true
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    net:
      bindIp: 0.0.0.0
    processManagement:
      timeZoneInfo: /usr/share/zoneinfo
    replication:
      replSetName: shard1
    sharding:
      clusterRole: shardsvr

    Shard-Server 配置文件2
    路径:vi /home/soft/mongodbone/shard2/mongod.conf

    storage:
      dbPath: /data/db
      journal:
        enabled: true
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    net:
      bindIp: 0.0.0.0
    processManagement:
      timeZoneInfo: /usr/share/zoneinfo
    replication:
      replSetName: shard2
    sharding:
      clusterRole: shardsvr

    Shard-Server 配置文件3
    路径:vi /home/soft/mongodbone/shard3/mongod.conf

    storage:
      dbPath: /data/db
      journal:
        enabled: true
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    net:
      bindIp: 0.0.0.0
    processManagement:
      timeZoneInfo: /usr/share/zoneinfo
    replication:
      replSetName: shard3
    sharding:
      clusterRole: shardsvr



    启动Docker容器 启动3个Config-Server容器:

    docker run -d --restart=always --name=cfg_1 --network=mongodbnet --ip=10.20.0.2 -v /home/soft/mongodbone/configsvr:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    docker run -d --restart=always --name=cfg_2 --network=mongodbnet --ip=10.20.0.3 -v /home/soft/mongodbone/configsvr:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    docker run -d --restart=always --name=cfg_3 --network=mongodbnet --ip=10.20.0.4 -v /home/soft/mongodbone/configsvr:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf


    进入其中一个容器配置Config-Server副本集:

    # 宿主机
    docker exec -it cfg_1 bash
    # 容器中
    mongo --port 27019
    # Mongo Shell中
    rs.initiate({
    "_id":"cfg",
    "members":[
    {
    "_id":0,
    "host":"10.20.0.2:27019"
    },
    {
    "_id":1,
    "host":"10.20.0.3:27019"
    },
    {
    "_id":2,
    "host":"10.20.0.4:27019"
    }
    ]
    })


    启动3*3个Shard-Server容器:说明:分片服务器启动后默认是以27018作为端口。
    # 启动第一个分片 - shard1

    docker run -d --restart=always --name=shard1_1 --network=mongodbnet --ip=10.20.0.5 -v /home/soft/mongodbone/shard1:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    docker run -d --restart=always --name=shard1_2 --network=mongodbnet --ip=10.20.0.6 -v /home/soft/mongodbone/shard1:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    docker run -d --restart=always --name=shard1_3 --network=mongodbnet --ip=10.20.0.7 -v /home/soft/mongodbone/shard1:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf

    进入其中一个容器配置Shard-Server副本集:

    # 宿主机
    docker exec -it shard1_1 bash
    # 容器中
    mongo --port 27018
    # Mongo Shell中
    rs.initiate({
    "_id":"shard1",
    "members":[
    {
    "_id":0,
    "host":"10.20.0.5:27018"
    },
    {
    "_id":1,
    "host":"10.20.0.6:27018"
    },
    {
    "_id":2,
    "host":"10.20.0.7:27018"
    }
    ]
    })

    # 启动第二个分片 - shard2

    docker run -d --restart=always --name=shard2_1 --network=mongodbnet --ip=10.20.0.8 -v /home/soft/mongodbone/shard2:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    docker run -d --restart=always --name=shard2_2 --network=mongodbnet --ip=10.20.0.9 -v /home/soft/mongodbone/shard2:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    docker run -d --restart=always --name=shard2_3 --network=mongodbnet --ip=10.20.0.10 -v /home/soft/mongodbone/shard2:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    
    进入其中一个容器配置Shard-Server副本集:
    # 宿主机
    docker exec -it shard2_1 bash
    # 容器中
    mongo --port 27018
    # Mongo Shell中
    rs.initiate({
    "_id":"shard2",
    "members":[
    {
    "_id":0,
    "host":"10.20.0.8:27018"
    },
    {
    "_id":1,
    "host":"10.20.0.9:27018"
    },
    {
    "_id":2,
    "host":"10.20.0.10:27018"
    }
    ]
    })

    # 启动第三个分片 - shard3

    docker run -d --restart=always --name=shard3_1 --network=mongodbnet --ip=10.20.0.11 -v /home/soft/mongodbone/shard3:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    docker run -d --restart=always --name=shard3_2 --network=mongodbnet --ip=10.20.0.12 -v /home/soft/mongodbone/shard3:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    docker run -d --restart=always --name=shard3_3 --network=mongodbnet --ip=10.20.0.13 -v /home/soft/mongodbone/shard3:/etc/mongodb mongo:4.2.7 -f /etc/mongodb/mongod.conf
    
    进入其中一个容器配置Shard-Server副本集:
    # 宿主机
    docker exec -it shard3_1 bash
    # 容器中
    mongo --port 27018
    # Mongo Shell中
    rs.initiate({
    "_id":"shard3",
    "members":[
    {
    "_id":0,
    "host":"10.20.0.11:27018"
    },
    {
    "_id":1,
    "host":"10.20.0.12:27018"
    },
    {
    "_id":2,
    "host":"10.20.0.13:27018"
    }
    ]
    })

    启动3个mongos服务器 说明:这里也使用了mongo镜像,但是需要开启mongos进程,mongod进程并不需要用到。

    docker run -d --restart=always --name=mongos_1 --network=mongodbnet --ip=10.20.0.14 -v /home/soft/mongodbone/mongos:/etc/mongodb mongo:4.2.7
    docker run -d --restart=always --name=mongos_2 --network=mongodbnet --ip=10.20.0.15 -v /home/soft/mongodbone/mongos:/etc/mongodb mongo:4.2.7
    docker run -d --restart=always --name=mongos_3 --network=mongodbnet --ip=10.20.0.16 -v /home/soft/mongodbone/mongos:/etc/mongodb mongo:4.2.7
    
    进入每个容器中,启动mongos进程(此处可以改进一下,自动运行mongos进程)
    # 宿主机
    docker exec -it mongos_1 bash
    # 容器中
    mongos -f /etc/mongodb/mongos.conf
    
    可以就在其中一个mongos容器中使用mongo shell连接mongos进程配置分片集群
    # 连接mongos,端口号与mongos配置文件中设定一致
    mongo -port 27020
    # 将分片加入集群
    sh.addShard("shard1/10.20.0.5:27018,10.20.0.6:27018,10.20.0.7:27018")
    sh.addShard("shard2/10.20.0.8:27018,10.20.0.9:27018,10.20.0.10:27018")
    sh.addShard("shard3/10.20.0.11:27018,10.20.0.12:27018,10.20.0.13:27018")

    # 对数据库开启分片功能

    sh.enableSharding("mydbtest")

    # 对数据库中集合开启分片,并指定片键
    sh.shardCollection("[dbName.collectionName]",{[keyName]:1})

    sh.shardCollection("mydbtest.chenIndex",{"age":1})

    6. 尝试写入数据观察数据分块

    # 插入3000个简单的文档,耐心等待插入结束这个文档5个字段name,age,score1,score2,score3,score4,score5
    for(var i=1;i<=3000;i++){
    db.chenIndex.insert({
    name:i,
    age:Math.round(Math.random() * 100),
    score1:Math.round(Math.random() * 100),
    score2:Math.round(Math.random() * 100),
    score3:Math.round(Math.random() * 100),
    score4:Math.round(Math.random() * 100),
    score5:Math.round(Math.random() * 100)
    });
    }

    查询数据数量

    // 查询茶树数据数量
    db.chenIndex.find().count()
    // 查询一条数据
    db.chenIndex.find().limit(1)

    # 查看分片状态

    sh.status()
  • 相关阅读:
    JQuery封装的ajax
    DOM节点操作
    ES6中的let和const
    CSS cursor 属性
    ui-router 视图嵌套时指定二级视图显示默认页面
    数组去重的几种方法
    basic_consume() got multiple values for keyword argument 'queue'
    perl改造成bash---结果写入xml
    springmvc 启动报 java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.resolveTypeArguments(Ljava/lang/Class;Ljava/lang/Class;)[Ljava/lang/Class;
    web项目部署名和项目名不一致
  • 原文地址:https://www.cnblogs.com/a393060727/p/13656038.html
Copyright © 2011-2022 走看看