zoukankan      html  css  js  c++  java
  • mongo分片集群部署

    测试环境192.168.56.101-213

    前期准备:

    openssl rand -base64 756 > /home/software/mongodb/mongodbkey

    chmod  600 /home/software/mongodb/mongodbkey

    sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinx/config

    setenforce 0

    systemctl stop firewalld

    systemctl disable firewalld

    tar  -zxvf mongodb-linux-x86_64-rhel70-4.0.7.tgz

    mv mongodb-linux-x86_64-rhel70-4.0.7  mongodb

    cd /home/software/mongodb

    mkdir conf mongos config-server shard1 shard2 shard3

    mkdir mongos/{log,data}

    mkdir shard1/{log,data}

    mkdir shard2/{log,data}

    mkdir shard3/{log,data}

    mkdir config-server/{log,data}

    环境变量设置,如下

    cat /etc/profile.d/mongodb.sh

    # 内容

    export MONGODB_HOME=/home/software/mongodb4

    export PATH=$MONGODB_HOME/bin:$PATH

    # 使立即生效

    source /etc/profile.d/mongodb.sh

    mongodb的启动顺序是,先启动配置服务器,在启动分片,最后启动mongos

    安全关闭mongodb方法一

    kill -2 `ps -ef | grep mongod| awk 'NR==1 {print $2}'`

    安全关闭mongodb方法二

    /home/software/mongodb4/bin/mongo -host 127.0.0.1 -port 30000

    > use admin;                     --使用管理员数据库

    > db.shutdownServer();           --安全关闭MongoDB

    配置服务器是一个普通的mongod进程,所以只需要新开一个实例即可。配置服务器必须开启1个或则3个,开启2个则会报错:

     主机ip及服务

    192.168.56.101:configsvr服务,shard1服务,shard2服务,shard3服务,mongos服务

    192.168.56.102:configsvr服务,shard1服务,shard2服务,shard3服务,mongos服务

    192.168.56.102:configsvr服务,shard1服务,shard2服务,shard3服务,mongos服务

    分布:每个机子起3个shard实例,从shard1到shard3的端口号为27001 , 27002 , 27003

               每个机子都有config实例,端口号21000

               每个机子都有mongs实例,端口号27017 

    三台服务器目录机构一样,mongo的配置文件在/home/software/mongodb/conf目录下

    配置文件基本三台机子通用,但是初始化的时候要注意ip及端口是否正确

    -------------config-server.conf的配置文件-----------

    systemLog:

      destination: file

      logAppend: true

      path: /home/software/mongodb/config-server/log/congigsrv.log

    storage:

      dbPath: /home/software/mongodb/config-server/data

      journal:

        enabled: true

      wiredTiger:

        engineConfig:

          directoryForIndexes: true

    processManagement:

      fork: true  # fork and run in background

      pidFilePath: /home/software/mongodb/config-server/log/configsrv.pid  # location of pidfile

      

    net:

      port: 21000

      #bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

      bindIpAll: true

      maxIncomingConnections: 65535

      unixDomainSocket:

        enabled: true

        ##pathPrefix: /tmp/mongod1

        filePermissions: 0700

    security:

      keyFile: /home/software/mongodb/mongodbkey

      authorization: enabled

    replication:

      replSetName: configs

    sharding:

      clusterRole: configsvr

      

    3台都启动:mongod -f /home/software/mongodb/conf/config-server.conf

    --------------初始化configsrv副本集群 -------------

    mongo --port 21000

    rs.initiate(

    ... {

    ...     _id: "configs",

    ...     version: 1,

    ...   protocolVersion: 1,

    ...   writeConcernMajorityJournalDefault: true,

    ...   configsvr: true,

    ...   members: [

    ...     {

    ...       _id: 0,

    ...       host: "192.168.56.101:21000",

    ...       arbiterOnly: false,

    ...       buildIndexes: true,

    ...       hidden: false,

    ...       priority: 66,

    ...       tags: {

    ...         BigBoss: "YES"

    ...       },

    ...       slaveDelay: 0,

    ...       votes: 1

    ...     },

    ...     {

    ...       _id: 1,

    ...     host: "192.168.56.102:21000",

    ...     arbiterOnly: false,

    ...       buildIndexes: true,

    ...       hidden: false,

    ...       priority: 55,

    ...       tags: {

    ...         BigBoss: "NO"

    ...      },

    ...       slaveDelay: 0,

    ...       votes: 1

    ...     },

    ...     {

    ...       _id: 2,

    ...       host: "192.168.56.103:21000",

    ...       arbiterOnly: false,

    ...       buildIndexes: true,

    ...       hidden: false,

    ...       priority: 33,

    ...       tags: {

    ...         BigBoss: "YES"

    ...       },

    ...       slaveDelay: 0,

    ...       votes: 1

    ...     }

    ...   ],

    ...   settings: {

    ...     chainingAllowed : true,

    ...   }

    ... }

    ... )

    ----------shard1的配置文件------

    systemLog:

      destination: file

      logAppend: true

      path: /home/software/mongodb/shard1/log/shard1.log

    storage:

      dbPath: /home/software/mongodb/shard1/data

      journal:

        enabled: true

      wiredTiger:

        engineConfig:

          directoryForIndexes: true     

    processManagement:

      fork: true  # fork and run in background

      pidFilePath:  /home/software/mongodb/config-server/log/configsrv.pid  # location of pidfile

      ##timeZoneInfo: /usr/share/zoneinfo

    net:

      port: 27001

      #bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

      bindIpAll: true

      maxIncomingConnections: 65535

      unixDomainSocket:

        enabled: true

        ##pathPrefix: /tmp/mongod1

        filePermissions: 0700

    security:

      keyFile: /home/software/mongodb/mongodbkey

      authorization: enabled

    replication:

      replSetName: shard1

    sharding:

      clusterRole: shardsvr

    3台启动:mongod -f /home/software/mongodb/conf/shard1.conf

    mongo --port 27001

    初始化shard1副本集

    rs.initiate(

    ... {

    ...   _id: "shard1",

    ...   version: 1,

    ...   protocolVersion: 1,

    ...   writeConcernMajorityJournalDefault: true,

    ...   members: [

    ...     {

    ...       _id: 0,

    ...       host: "192.168.56.101:27001",

    ...       arbiterOnly: false,

    ...       buildIndexes: true,

    ...       hidden: false,

    ...       priority: 66,

    ...       tags: {

    ...         BigBoss: "YES"

    ...       },

    ...       slaveDelay: 0,

    ...       votes: 1

    ...     },

    ...     {

    ...       _id: 1,

    ...       host: "192.168.56.102:27001",

    ...       arbiterOnly: false,

    ...       buildIndexes: true,

    ...       hidden: false,

    ...       priority: 55,

    ...       tags: {

    ...         BigBoss: "NO"

    ...       },

    ...       slaveDelay: 0,

    ...       votes: 1

    ...     },

    ...     {

    ...       _id: 2,

    ...       host: "192.168.56.103:27001",

    ...       arbiterOnly: false,

    ...       buildIndexes: true,

    ...       hidden: false,

    ...       priority: 33,

    ...       tags: {

    ...         BigBoss: "NO"

    ...       },

    ...       slaveDelay: 0,

    ...       votes: 1

    ...     }

    ...   ],

    ...   settings: {

    ...     chainingAllowed : true,

    ...   }

    ... }

    ... )

    ------------------------shard2的配置文件---------------

    systemLog:

      destination: file

      logAppend: true

      path: /home/software/mongodb/shard2/log/shard2.log

    storage:

      dbPath: /home/software/mongodb/shard2/data

      journal:

        enabled: true

      wiredTiger:

        engineConfig:

          directoryForIndexes: true     

    processManagement:

      fork: true  # fork and run in background

      pidFilePath:  /home/software/mongodb/config-server/log/configsrv.pid  # location of pidfile

      ##timeZoneInfo: /usr/share/zoneinfo

    net:

      port: 27002

      #bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

      bindIpAll: true

      maxIncomingConnections: 65535

      unixDomainSocket:

        enabled: true

        ##pathPrefix: /tmp/mongod1

        filePermissions: 0700

    security:

      keyFile: /home/software/mongodb/mongodbkey

      authorization: enabled

    replication:

      replSetName: shard2

    sharding:

      clusterRole: shardsvr

    3台启动:mongod -f /home/software/mongodb/conf/shard2.conf

    mongo --port 27002

    初始化shard2副本集

     rs.initiate(

    {

      _id: "shard2",

      version: 1,

      protocolVersion: 1,

      writeConcernMajorityJournalDefault: true,

      members: [

        {

          _id: 0,

          host: "192.168.56.101:27002",

          arbiterOnly: false,

          buildIndexes: true,

          hidden: false,

          priority: 66,

          tags: {

            BigBoss: "YES"

          },

          slaveDelay: 0,

          votes: 1

        },

        {

          _id: 1,

          host: "192.168.56.102:27002",

          arbiterOnly: false,

          buildIndexes: true,

          hidden: false,

          priority: 55,

          tags: {

            BigBoss: "NO"

          },

          slaveDelay: 0,

          votes: 1

        },

        {

          _id: 2,

          host: "192.168.56.103:27002",

          arbiterOnly: false,

          buildIndexes: true,

          hidden: false,

          priority: 33,

          tags: {

            BigBoss: "NO"

          },

          slaveDelay: 0,

          votes: 1

        }

      ],

      settings: {

        chainingAllowed : true,

      }

    }

    )

    -------------------shard3的配置文件----------

    systemLog:

      destination: file

      logAppend: true

      path: /home/software/mongodb/shard3/log/shard3.log

    storage:

      dbPath: /home/software/mongodb/shard3/data

      journal:

        enabled: true

      wiredTiger:

        engineConfig:

          directoryForIndexes: true     

    processManagement:

      fork: true  # fork and run in background

      pidFilePath:  /home/software/mongodb/config-server/log/configsrv.pid  # location of pidfile

      ##timeZoneInfo: /usr/share/zoneinfo

    net:

      port: 27003

      #bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

      bindIpAll: true

      maxIncomingConnections: 65535

      unixDomainSocket:

        enabled: true

        ##pathPrefix: /tmp/mongod1

        filePermissions: 0700

    security:

      keyFile: /home/software/mongodb/mongodbkey

      authorization: enabled

    replication:

      replSetName: shard3

    sharding:

      clusterRole: shardsvr

      

    3台启动:mongod -f /home/software/mongodb/conf/shard3.conf

    mongo --port 27003

    初始化shard3副本集

    rs.initiate(

    {

      _id: "shard3",

      version: 1,

      protocolVersion: 1,

      writeConcernMajorityJournalDefault: true,

      members: [

        {

          _id: 0,

          host: "192.168.56.101:27003",

          arbiterOnly: false,

          buildIndexes: true,

          hidden: false,

          priority: 66,

          tags: {

            BigBoss: "YES"

          },

          slaveDelay: 0,

          votes: 1

        },

        {

          _id: 1,

          host: "192.168.56.102:27003",

          arbiterOnly: false,

          buildIndexes: true,

          hidden: false,

          priority: 55,

          tags: {

            BigBoss: "NO"

          },

          slaveDelay: 0,

          votes: 1

        },

        {

          _id: 2,

          host: "192.168.56.103:27003",

          arbiterOnly: false,

          buildIndexes: true,

          hidden: false,

          priority: 33,

          tags: {

            BigBoss: "NO"

          },

          slaveDelay: 0,

          votes: 1

        }

      ],

      settings: {

        chainingAllowed : true,

      }

    }

    )

    -----------配置Route------

    创建mongos配置文件如下:

    systemLog:

      destination: file

      logAppend: true

      path: /home/software/mongodb/mongos/log/mongos.log

    processManagement:

      fork: true  # fork and run in background

      pidFilePath: /home/software/mongodb/mongos/log/mongos.pid # location of pidfile

      #timeZoneInfo: /usr/share/zoneinfo

    net:

      bindIpAll: true

      maxIncomingConnections: 500

      unixDomainSocket:

        enabled: true

        #pathPrefix: /tmp

        filePermissions: 0700

    security:

      keyFile: /home/software/mongodb/mongodbkey

    #  authorization: enabled

    #replication:

    sharding:

      configDB: configs/192.168.56.101:21000,192.168.56.102:21000,192.168.56.103:21000

      

    启动mongos并设置一个连接的账号密码

    #启动

    mongos -f /home/software/mongodb/conf/mongos.conf

    #连接

    mongo

    #设置管理员账号密码

    use admin

    db.createUser(

    {

        user: "root",

        pwd: "123456",

        roles: [ { role: "__system", db: "admin" } ]

      }

    )

    重连至mongodb

    mongo -uroot -p123456  --authenticationDatabase admin

    #添加分片主机至集群中

    sh.addShard("shard1/192.168.56.101:27001,192.168.56.102:27001,192.168.56.103:27001");

    sh.addShard("shard2/192.168.56.101:27002,192.168.56.102:27002,192.168.56.103:27002");

    sh.addShard("shard3/192.168.56.101:27003,192.168.56.102:27003,192.168.56.103:27003");

    #查看状态

    sh.status()

    ####为了展示出效果,修改一下默认的chunksize大小,这里修改为1M

    #默认的chunksize大小为64M,示例修改命令如下:

    #use config

    #db.settings.save( { _id:"chunksize", value: <sizeInMB> } )

    use config

    db.settings.save( { _id:"chunksize", value: 1 } )

    #test数据库开启分片

    #选择一个片键age并指定一个集合mycoll对其进行分片

    sh.enableSharding("test")

    sh.shardCollection("test.mycoll", {"age": 1})

    #测试分片,写入数据到数据库中

    use test

    for (i = 1; i <= 10000; i++) db.mycoll.insert({age:(i%100), name:"bigboss_user"+i, address:i+", Some Road, Zhengzhou, Henan", country:"China", course:"cousre"+"(i%12)"})

    #写入完成之后就可以查看分片信息了

    sh.status()

  • 相关阅读:
    iOS之POST与GET的优缺点
    iOS之设置头像(访问系统相册、本地上传)
    iOS之清除缓存
    iOS之自动调节输入文本框的高度
    iOS之隐藏键盘的方式
    iOS之关于 srand() 和rand()
    Android Studio移除模块
    Android 弹出输入框
    webApi添加视图出现/Index.cshtml”处的视图必须派生自 WebViewPage 或 WebViewPage<TModel>。
    JSON Web Tokens简单学习
  • 原文地址:https://www.cnblogs.com/fatyao/p/10664331.html
Copyright © 2011-2022 走看看