zoukankan      html  css  js  c++  java
  • Mongodb副本集集群搭建

    一、环境准备

    1.1.主机信息(机器配置要求见硬件及开发标准规范文档V1.0)

    序号

    主机名

    IP

    1

    DB_01

    10.202.105.52

    2

    DB_02

    10.202.105.53

    3

    DB_03

    10.202.105.54

    4

    DB_04

    10.202.105.181

     

     

     

     

    服务器52(DB_01)

    服务器53(DB_02)

    服务器54(DB_03)

    服务器55DB_04

    primary

    secondry

    secondry

    hidden(阿里云一般都是主  备  Hidden三节点)  这里暂时忽略异常情况选举   其实和zk选举一样的道理

    端口分配:(端口可以根据实际情况进行更改)

    mongos:20000

    1.2.软件版本

    组件

    版本

    备注

    MongoDB

    3.4.X

    1.3.软件下载

    https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.7.tgz

    二、软件部署

    2.1软件安装

    useradd  mongodb

    passwd  mongodb

    chown -R  mongodb:mongodb /app/mongodb/

    chown -R  mongodb:mongodb /data/mongodb/

    并用mongo用户在一台机器上生成集群间验证文件并同步文件到其余两台机器相应位置赋予同样权限

    openssl rand -base64 100 > /data/keyFile/keyFilers0.key

    chmod 600 /data/keyFile/keyFilers0.key

    1、新建目录(四台机器均操作)

    mkdir -p /data/mongodb/conf

    mkdir -p /data/mongodb/data

    mkdir -p /data/mongodb/log

    2、安装Mongodb(三台机器均操作,目录为/app/mongo/…<mongo为超链接>)

    tar –zxvf mongodb-linux-x86_64-rhel70-3.4.7 tar.gz

    然后配置环境变量

    vim /etc/profile

    # 内容

    export MONGODB_HOME=…

    export PATH=$MONGODB_HOME/bin:$PATH

    # 使立即生效

    source /etc/profile

    2.2配置文件

    1、打开mongod.conf,修改以下配置项:(四台机器均操作)

    vi /data/mongodb/conf/mongod.conf

    systemLog:

      destination: file

      logAppend: true

      logRotate: reopen

      path: /data/mongodb/log/mongod.log

    # Where and howto store data.

    ##########operationProfilingOptions

    storage:

      dbPath: /data/mongodb/data

      journal:

        enabled: true

      directoryPerDB: true

      engine: wiredTiger

    #########storage.wiredTigerOptions

      wiredTiger:

        engineConfig:

           cacheSizeGB: 2

           directoryForIndexes: true

        collectionConfig:

           blockCompressor: zlib

        indexConfig:

           prefixCompression: true

    operationProfiling:

       slowOpThresholdMs: 100

       mode: "all"

    processManagement:

      fork: true

      pidFilePath: /data/mongodb/log/mongod.pid

    net:

      port: 20000

      bindIp: 0.0.0.0

      maxIncomingConnections: 20000

    security:

        #authorization: enabled

        #clusterAuthMode: keyFile

        #keyFile: /data/keyFile/keyFilers0.key

        #keyFile: /srv/mongodb/keyfile

        javascriptEnabled: true

    setParameter:

        enableLocalhostAuthBypass: false

        authenticationMechanisms: SCRAM-SHA-1

    replication:

    ##oplog大小

      oplogSizeMB: 10000

      replSetName: repl

    sharding:

      clusterRole: configsvr

     #configsvr or shardsvr

    2.3初始化服务及副本集

    1.启动四台服务器的mongod server并配置副本集(四台均启动)

    mongod -f /data/mongodb/conf/mongod.conf

     

    登录任意一台配置服务器,初始化配置副本集

    #连接

    mongo --port 20000

    use admin

    #config变量

    cfg={_id:"repl",members:[

    {_id:0,host:"10.202.105.52:20000",priority:2},

    {_id:1,host:"10.202.105.53:20000",priority:1},

    {_id:2,host:"10.202.105.54:20000",priority:1},

    {_id:3,host:"10.202.105.181:20000",priority:0,hidden:true}]}

    #初始化副本集

    rs.initiate(cfg)

    其中,"_id" : "cfg"应与配置文件中配置的 replicaction.replSetName 一致,"members" 中的 "host" 为四个节点的 ip 和 port

    2.4增加安全机制

    http://blog.csdn.net/u011191463/article/details/68485529   //mongo用户类型引导

    http://www.jianshu.com/p/f585f71acbf2    //用户添加步骤

     

    1)在Router下,切换到admin库,用db.createUser(用户名,密码)添加好认证帐号,再切换到目标数据库做类似的帐号添加操作。步骤如下

    创建用户

    use admin

    db.createUser( 

        user: "admin", 

        pwd: "123456", 

        roles: 

        [ 

          {role: "userAdminAnyDatabase",db: "admin"},

          { role: "readAnyDatabase", db:"admin" },

          { role: "dbOwner", db:"admin" },

          { role: "userAdmin", db:"admin" },

          { role: "root", db: "admin"},

          { role: "clusterMonitor", db:"admin" },

          { role: "dbAdmin", db:"admin" },

        ] 

      } 

    )

    用户名为admin,密码为123456

    验证用户db.auth("admin","123456");    出现1则为验证成功

    再切换到zhaobo此数据库,添加用户

    db.createUser( 

        user: "zhaobo", 

        pwd: "123456", 

        roles: 

        [ 

          { role: "dbOwner", db:"zhaobo" },

          { role: "userAdmin", db:"zhaobo" },

          { role: "dbAdmin", db:"zhaobo" },

        ] 

      } 

    )

    验证用户db.auth("zhaobo","123456");    出现1则为验证成功

    2)生成keyfile,可以使用如下命令:(在开始安装之前已经生成就不需要此步骤了)

    openssl rand -base64 100 > /data/keyFile/keyFilers0.key

    将keyfile文件复制到各服务器备用,注意:需要给keyfile设置好权限,权限必须为600。

    chmod 600 /data/keyFile/keyFilers0.key

    3)杀掉所有的mongod进程。去掉配置文件的sectury下面的注释,本文以配置文件方式设置启动参数,启动各服务器

     

    5)完成以后就可以使用上面配置的帐号密码访问Router了。在客户端Robo 3T测试成功

    本地登陆数据库之后验证db.auth("admin","123456");  即可正常使用

    mongodb的启动顺序是,

    mongos -f /data/mongodb/conf/mongos.conf

    关闭mongos

    use admin

    db.shutdownServer()

  • 相关阅读:
    Codeforces Beta Round #92 (Div. 2 Only) B. Permutations 模拟
    POJ 3281 Dining 最大流 Dinic算法
    POJ 2441 Arrange the BUlls 状压DP
    URAL 1152 Faise Mirrors 状压DP 简单题
    URAL 1039 Anniversary Party 树形DP 水题
    URAL 1018 Binary Apple Tree 树形DP 好题 经典
    pytorch中的forward前向传播机制
    .data()与.detach()的区别
    Argparse模块
    pytorch代码调试工具
  • 原文地址:https://www.cnblogs.com/hit-zb/p/8394864.html
Copyright © 2011-2022 走看看