美文网首页ProMonkey Lab
Linux下MongoDB集群环境搭建

Linux下MongoDB集群环境搭建

作者: ProMonkey_LAIN | 来源:发表于2018-07-02 09:41 被阅读0次

    一.介绍

    • MongoDB是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式。
    • 集群方式有三种:Replica Set、Sharding、Master-Slaver三种方式。

    二.集群模式搭建

    • Replica Set模式

      image
    • Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。

    • 默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设置叫做Read Preference Modes,同时Java客户端提供了简单的配置方式,可以不必直接对数据库进行操作。

    • 仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。

    • 安装MongoDB

      1.下载MongoDB

        wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.4.tgz
      

      2.解压文件并创建目录

        mkdir /soft
        cd  /soft
        tar -xf mongodb-linux-x86_64-rhel62-3.2.4.tgz
        mv mongodb-linux-x86_64-rhel62-3.2.4 /home/worker/opt/mongodb
      

      3.创建date目录,此处根据节点角色不同,分别创建不同目录

        mkdir -p /home/worker/mongodb/date/master
        mkdir -p /home/worker/mongodb/date/slaver
        mkdir -p /home/worker/mongodb/date/arbiter
      

      4.创建日志目录和配置文件目录

        mkdir -p /home/worker/opt/mongodb/conf
        mkdir -p /home/worker/mongodb/log/
      

      5.建立配置文件

        #master.conf
        dbpath=/home/worker/mongodb/data/master
        logpath=/home/worker/mongodb/log/master.log
        pidfilepath=/home/worker/mongodb/master.pid
        directoryperdb=true
        logappend=true
        replSet=test
        bind_ip=10.10.24.38
        port=27017
        oplogSize=10000
        fork=true
        noprealloc=true
      
        #slaver.conf
        dbpath=/home/worker/mongodb/data/slaver
        logpath=/home/worker/mongodb/log/slaver.log
        pidfilepath=/home/worker/mongodb/slaver.pid
        directoryperdb=true
        logappend=true
        replSet=test
        bind_ip=10.10.24.39
        port=27017
        oplogSize=10000
        fork=true
        noprealloc=true
      
        #arbiter.conf
        dbpath=/home/worker/mongodb_arbiter/data/arbiter
        logpath=/home/worker/mongodb_arbiter/log/arbiter.log
        pidfilepath=/home/worker/mongodb_arbiter/arbiter.pid
        directoryperdb=true
        logappend=true
        replSet=test
        bind_ip=10.10.24.39
        port=27018
        oplogSize=10000
        fork=true
        noprealloc=true
      
        参数解释:
        dbpath:数据存放目录
        logpath:日志存放路径
        pidfilepath:进程文件,方便停止mongodb
        directoryperdb:为每一个数据库按照数据库名建立文件夹存放
        logappend:以追加的方式记录日志
        replSet:replica set的名字
        bind_ip:mongodb所绑定的ip地址
        port:mongodb进程所使用的端口号,默认为27017
        oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%
        fork:以后台方式运行进程
        noprealloc:不预先分配存储
      

      6.启动MongoDB

        /home/worker/opt/mongondb/bin/mongod -f /home/worker/opt/mongodb/conf/master.conf
        /home/worker/opt/mongondb/bin/mongod -f /home/worker/opt/mongodb/conf/slaver.conf
        /home/worker/opt/mongondb/bin/mongod -f /home/worker/opt/mongodb/conf/arbiter.conf
        *配置文件的路径一定要保证正确,可以是相对路径也可以是绝对路径.
      

      7.配置主、备、仲裁节点

        #连接到节点
        ./mongo 10.10.24.28:27017
        >use admin
        >cfg={ _id:"test", members:[ {_id:0,host:'10.10.24.38:27017',priority:2}, {_id:1,host:'10.10.24.39:27017',priority:1}, {_id:2,host:'10.10.24.39:27018',arbiterOnly:true}] };
        >rs.initiate(cfg)
        >rs.status()
        >{
        "set" : "test",
        "date" : ISODate("2016-03-29T16:47:12.395Z"),
        "myState" : 1,
        "term" : NumberLong(5),
        "heartbeatIntervalMillis" : NumberLong(2000),
        "members" : [
            {
                "_id" : 0,
                "name" : "10.10.24.38:27017",
                "health" : 1,
                "state" : 1,
                "stateStr" : "PRIMARY",
                "uptime" : 44,
                "optime" : {
                    "ts" : Timestamp(1459269999, 2),
                    "t" : NumberLong(5)
                },
                "optimeDate" : ISODate("2016-03-29T16:46:39Z"),
                "electionTime" : Timestamp(1459269999, 1),
                "electionDate" : ISODate("2016-03-29T16:46:39Z"),
                "configVersion" : 1,
                "self" : true
            },
            {
                "_id" : 1,
                "name" : "10.10.24.39:27017",
                "health" : 1,
                "state" : 2,
                "stateStr" : "SECONDARY",
                "uptime" : 42,
                "optime" : {
                    "ts" : Timestamp(1459269999, 2),
                    "t" : NumberLong(5)
                },
                "optimeDate" : ISODate("2016-03-29T16:46:39Z"),
                "lastHeartbeat" : ISODate("2016-03-29T16:47:11.726Z"),
                "lastHeartbeatRecv" : ISODate("2016-03-29T16:47:10.637Z"),
                "pingMs" : NumberLong(0),
                "syncingTo" : "10.10.24.38:27017",
                "configVersion" : 1
            },
            {
                "_id" : 2,
                "name" : "10.10.24.39:27018",
                "health" : 1,
                "state" : 7,
                "stateStr" : "ARBITER",
                "uptime" : 42,
                "lastHeartbeat" : ISODate("2016-03-29T16:47:11.697Z"),
                "lastHeartbeatRecv" : ISODate("2016-03-29T16:47:11.258Z"),
                "pingMs" : NumberLong(0),
                "configVersion" : 1
            }
        ],
        "ok" : 1
        }

    相关文章

      网友评论

        本文标题:Linux下MongoDB集群环境搭建

        本文链接:https://www.haomeiwen.com/subject/caekuftx.html