zoukankan      html  css  js  c++  java
  • Mongodb集群搭建之 Sharding+ Replica Sets集群架构

    1.本例使用1台Linux主机,通过Docker 启动三个容器 IP地址如下:

    docker run -d -v `pwd`/data/master:/mongodb -p 27017:27017 docker.io/mongodb:3.6.3 /usr/sbin/init
    docker run -d -v `pwd`/data/slaver:/mongodb -p 27018:27017 docker.io/mongodb:3.6.3 /usr/sbin/init
    docker run -d -v `pwd`/data/arbiter:/mongodb -p 27019:27017 docker.io/mongodb:3.6.3 /usr/sbin/init

    Server A: 172.17.0.2
    Server B: 172.17.0.3
    Server C: 172.17.0.4

    2.搭建分布式集群

    运用MongoDB的复制集(Replica Sets)+分片(Sharding)就能实现MongoDB分布式高可用的集群。 

    分片(sharding)能够增加更多的机器来应对不断增加的负载和数据,也不影响应用。 

    复制集(Replica Sets)能确保每个分片节点都具有自动备份、自动故障恢复能力。

    1.集群的环境

    架构图:


    主机设计:

    2.配置shard1的Replica Sets
    ./mongod -shardsvr -replSet shard1 -port 27017 -dbpath /mongodb/mongodb/bin/datas/shard11 -oplogSize 100 -logpath /mongodb/mongodb/bin/logs/shard11.log -bind_ip 172.17.0.2 -logappend -fork
    ./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /mongodb/mongodb/bin/datas/shard12 --oplogSize 100 --logpath /mongodb/mongodb/bin/logs/shard12.log -bind_ip 172.17.0.3  --logappend --fork
    ./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /mongodb/mongodb/bin/datas/shard13 --oplogSize 100 --logpath /mongodb/mongodb/bin/logs/shard13.log -bind_ip 172.17.0.4  --logappend --fork
    ############################################################################################################
    ./mongo 172.17.0.2:27017
     config = {_id: 'shard1', members: [{_id: 0, host: '172.17.0.2:27017'},{_id: 1, host: '172.17.0.3:27017'},{_id: 2, host: '172.17.0.4:27017'}]}
     rs.initiate(config);
    -----------------------------------------------------------------------------------------------------------------------------------
    3.配置shard2的Replica Sets
    ./mongod -shardsvr -replSet shard2 -port 27018 -dbpath /mongodb/mongodb/bin/datas/shard21 -oplogSize 100 -logpath /mongodb/mongodb/bin/logs/shard21.log -bind_ip 172.17.0.2 -logappend -fork
    ./mongod -shardsvr -replSet shard2 -port 27018 -dbpath /mongodb/mongodb/bin/datas/shard22 -oplogSize 100 -logpath /mongodb/mongodb/bin/logs/shard22.log -bind_ip 172.17.0.3  -logappend -fork
    ./mongod -shardsvr -replSet shard2 -port 27018 -dbpath /mongodb/mongodb/bin/datas/shard23 -oplogSize 100 -logpath /mongodb/mongodb/bin/logs/shard23.log -bind_ip 172.17.0.4  -logappend -fork
    ############################################################################################################
     ./mongo 172.17.0.2:27017
     config = {_id: 'shard2', members: [{_id: 0, host: '172.17.0.2:27018'},{_id: 1, host: '172.17.0.3:27018'},{_id: 2, host: '172.17.0.4:27018'}]}
     rs.initiate(config);
    -----------------------------------------------------------------------------------------------------------------------------------
    4.配置config server
    ./mongod -configsvr -dbpath /mongodb/mongodb/bin/config -port 20000 -logpath /mongodb/mongodb/bin/logs/config.log -replSet configdb -bind_ip 172.17.0.2 -logappend -fork   #config server也需要dbpath
    ./mongod -configsvr -dbpath /mongodb/mongodb/bin/config -port 20000 -logpath /mongodb/mongodb/bin/logs/config.log -replSet configdb -bind_ip 172.17.0.3 -logappend -fork 
    ./mongod -configsvr -dbpath /mongodb/mongodb/bin/config -port 20000 -logpath /mongodb/mongodb/bin/logs/config.log -replSet configdb -bind_ip 172.17.0.4 -logappend -fork 
    ############################################################################################################
    ./mongo --host 172.17.0.2 --port 20000
    configdb1={_id:'configdb',members:[{_id:0,host:'172.17.0.2:20000',priority:3},{_id:1,host:'172.17.0.3:20000',priority:1},{_id:2,host:'172.17.0.4:20000',priority:2}]}
    rs.initiate(configdb1)
    -----------------------------------------------------------------------------------------------------------------------------------
    5.配置router server
    在3台主机中分别运行mongos服务:
    ./mongos -configdb configdb/172.17.0.2:20000,172.17.0.3:20000,172.17.0.4:20000 -port 27020 -logpath /mongodb/mongodb/bin/logs/mongos.log -bind_ip 172.17.0.2 -logappend -fork
    ./mongos -configdb configdb/172.17.0.2:20000,172.17.0.3:20000,172.17.0.4:20000 -port 27020 -logpath /mongodb/mongodb/bin/logs/mongos.log -bind_ip 172.17.0.3 -logappend -fork
    ./mongos -configdb configdb/172.17.0.2:20000,172.17.0.3:20000,172.17.0.4:20000 -port 27020 -logpath /mongodb/mongodb/bin/logs/mongos.log -bind_ip 172.17.0.4 -logappend -fork
    -----------------------------------------------------------------------------------------------------------------------------------
    6.配置分片(shard cluster)
    #连接到其中一台机器的端口27017的mongos进程,并切换到admin数据库添加分片shard1和shard2:
     ./mongo 172.17.0.2:27020
    use admin
    db.runCommand({addshard:"shard1/172.17.0.2:27017,172.17.0.3:27017,172.17.0.4:27017"})
    db.runCommand({addshard:"shard2/172.17.0.2:27018,172.17.0.3:27018,172.17.0.4:27018"})
    db.runCommand({enablesharding:"work"})
    db.runCommand({shardcollection:"work.status",key:{_id:1}})
    -----------------------------------------------------------------------------------------------------------------------------------
    7.验证
    其它命令:
    db.dropDatabase() --删除db
  • 相关阅读:
    MongoDB repair on Ubuntu
    java后台图形相关代码,weblogic报错
    weblogic配置达梦数据源
    详解JavaScript中的this
    web app指南之构建html5离线应用
    android中的跨进程通信的实现(一)——远程调用过程和aidl
    android应用开发全程实录出版
    android窗口管理框架解析
    BizTalk调用SAP系统RFC含多个参数以及DateTime类型参数
    plsql连接64位oracle在windows 764下连接设置方法
  • 原文地址:https://www.cnblogs.com/EikiXu/p/9439021.html
Copyright © 2011-2022 走看看