最近在做一个关于车险的项目,由于数据量较大,实验室的Boss决定采用HBase+ES/MongoDB这两种方案,并做性能对比,本人负责MongoDB方案。为了满足海量数据的存储要求,需要搭建一个分布式MongoDB集群。在搭建整过集群的过程中,可谓是各种坑,多次无奈得想放弃,然而在最后一次居然成功了!下面就是MongoDB集群搭建过程的详细步骤:

一、准备6个节点,每个节点的系统都为Ubantu 12.04,内存16G,硬盘500G,节点IP分别为

59.77.236.113 (mongo1),59.77.236.16(mongo2),59.77.236.19(mongo3),218.193.126.107(mongo4),218.193.126.118(mongo5),218.193.126.29(mongo6)

二、mongodb安装包下载

到https://www.mongodb.org/dl/linux/x86_64下载mongodb-linux-x86_64-v3.2-latest.gz
三、建数据存储目录
    (1)在59.77.236.113 ,59.77.236.16,59.77.236.19三个节点上建立mongos日志存储目录
         sudo mkdir -p /data/data1/mongodb/mongos/log

sudo chown -R mongo:mongo /data

(2)在59.77.236.113 ,59.77.236.16,59.77.236.19三个节点上建立config server 数据文件和日志文件存放目录

sudo mkdir -p /data/data1/mongodb/configServer/db
           sudo chown -R mongo:mongo /data
           sudo mkdir -p /data/data1/mongodb/configServer/log
           sudo chown -R mongo:mongo /data
      (3)在59.77.236.16,59.77.236.19,218.193.126.107三个节点上建立shard1 数据文件和日志文件存放目录
           mkdir -p /data/data1/mongodb/shard1/db
           mkdir -p /data/data1/mongodb/shard1/log
      (4)在59.77.236.19,218.193.126.107,218.193.126.118三个节点上建立shard2 数据文件和日志文件存放目录
           mkdir -p /data/data1/mongodb/shard2/db
           mkdir -p /data/data1/mongodb/shard2/log
      (5)在218.193.126.107,218.193.126.118,218.193.126.29三个节点上建立shard3 数据文件和日志文件存放目录
           mkdir -p /data/data1/mongodb/shard3/db
           mkdir -p /data/data1/mongodb/shard3/log
      (6)在218.193.126.118,218.193.126.29,59.77.236.19三个节点上建立shard4数据文件和日志文件存放目录
           mkdir -p /data/data1/mongodb/shard4/db
           mkdir -p /data/data1/mongodb/shard4/log
四、在每一台服务器分别启动配置服务器(集群分3个config服务器[113/16/19],3个mongos服务器[113/16/19],4个分片,每个分片:主+副+仲裁)(3.2 config要采用replset 部署 --directoryperdb)
      (1)config服务器副本集
          /home/mongodb-3.2/bin/mongod --configsvr --replSet cfgRepset --port 26100 --fork --storageEngine wiredTiger --wiredTigerCacheSizeGB 4 --            directoryperdb --dbpath /data/data1/mongodb/configServer/db --logpath /data/data1/mongodb/configServer/log/mongodb.log 
      (2)分片服务器
           /home/mongodb-3.2/bin/mongod --shardsvr --replSet shard1 --port 26001 --dbpath /data/data1/mongodb/shard1/db  --logpath                       /data/data1/mongodb/shard1/log/mongodb.log --fork --storageEngine wiredTiger --wiredTigerCacheSizeGB 4 --directoryperdb

/home/mongodb-3.2/bin/mongod --shardsvr --replSet shard2 --port 26002 --dbpath /data/data1/mongodb/shard2/db  --               logpath/data/data1/mongodb/shard2/log/mongodb.log --fork --storageEngine wiredTiger --wiredTigerCacheSizeGB 4 --directoryperdb

/home/mongodb-3.2/bin/mongod --shardsvr --replSet shard3 --port 26003 --dbpath /data/data1/mongodb/shard3/db  -     -  logpath/data/data1/mongodb/shard3/log/mongodb.log --fork --storageEngine wiredTiger --wiredTigerCacheSizeGB 4 --directoryperdb

/home/mongodb-3.2/bin/mongod --shardsvr --replSet shard4 --port 26004 --dbpath /data/data1/mongodb/shard4/db  --l       logpath/data/data1/mongodb/shard4/log/mongodb.log --fork --storageEngine wiredTiger --wiredTigerCacheSizeGB 4 --directoryperdb

注意:--storageEngine wiredTiger --wiredTigerCacheSizeGB 4 :此处存储大小设置应根据节点的内存大小和副本集的分布情况具体配置。

(3)mongos服务器
          /home/mongodb-3.2/bin/mongos --configdb mongodb1:26100,mongodb2:26100,mongodb3:26100  --port 26000   --         logpath /data/data1/mongodb/mongos/log/mongos.log --fork

配置文件方式启动(就是把上面步骤(1),(2),(3)中的配置参数写到指定的文件中,然后启动对应的文件):
/home/mongodb-3.2/bin/mongod  -f /data/data1/mongodb/configServer/configServer.conf
/home/mongodb-3.2/bin/mongos   -f /data/data1/mongodb/mongos/mongos.conf
/home/mongodb-3.2/bin/mongod  -f /data/data1/mongodb/shard1/mongodb.conf
/home/mongodb-3.2/bin/mongod  -f /data/data1/mongodb/shard2/mongodb.conf
/home/mongodb-3.2/bin/mongod  -f /data/data1/mongodb/shard3/mongodb.conf
/home/mongodb-3.2/bin/mongod  -f /data/data1/mongodb/shard4/mongodb.conf

四、为每个分片配置主、副本、仲裁

(1)./mongo admin --port 26100 --eval "rs.status()"

(2)为config服务器配置副本
        rs.initiate({ _id:"cfgRepset", members:[
   {_id:0,host:"hadoop238:26100"},
   {_id:1,host:"hadoop239:26100"},
     {_id:2,host:"hadoop240:26100"}]
  });
       rs.status();

(3)设置第一个分片副本集  // 59.77.236.16:26001,59.77.236.19:26001,218.193.126.107:26001
       /home/mongodb-3.2/bin/mongo 59.77.236.16:26001
        use admin
       rs.initiate(
            { _id:"shard1", members:[
                     {_id:0,host:"59.77.236.16:26001"},
                     {_id:1,host:"59.77.236.19:26001"},
                     {_id:2,host:"218.193.126.107:26001",arbiterOnly:true}
                ]
           }
        );
       rs.status();

(4)设置第二个分片副本集//59.77.236.19:26002,218.193.126.107:26002,218.193.126.118:26002
           /home/mongodb-3.2/bin/mongo 59.77.236.19:26002
           rs.initiate({ _id:"shard2", members:[
                     {_id:0,host:"59.77.236.19:26002"},
                     {_id:1,host:"218.193.126.107:26002"},
                     {_id:2,host:"218.193.126.118:26002",arbiterOnly:true}
                ]
          });

rs.status();

(5)设置第三个分片副本集//218.193.126.107:26003,218.193.126.118:26003,218.193.126.29:26003
            /home/mongodb-3.2/bin/mongo 218.193.126.107:26003 
           rs.initiate({ _id:"shard3", members:[
                     {_id:0,host:"218.193.126.107:26003"},
                     {_id:1,host:"218.193.126.118:26003"},
                     {_id:2,host:"218.193.126.29:26003",arbiterOnly:true}
                ]
         });

(6)设置第四个分片副本集//218.193.126.118:26004,218.193.126.29:26004,59.77.236.19:26004
           /home/mongodb-3.2/bin/mongo 218.193.126.118:26004
           rs.initiate({ _id:"shard4", members:[
                     {_id:0,host:"218.193.126.118:26004"},
                     {_id:1,host:"218.193.126.29:26004"},
                     {_id:2,host:"59.77.236.19:26004",arbiterOnly:true}
                ]

});

(7)连接mongos //59.77.236.113:26100 ,59.77.236.16:26100,59.77.236.19:26100,在59.77.236.113上启动
           /home/mongodb-3.2/bin/mongo  59.77.236.113:26000

use  admin

(8)串联路由服务器与分配副本集1,2,3,4
           db.runCommand( { addshard : "shard1/59.77.236.16:26001,59.77.236.19:26001,218.193.126.107:26001"});
           db.runCommand( { addshard : "shard2/59.77.236.19:26002,218.193.126.107:26002,218.193.126.118:26002"});
           db.runCommand( { addshard : "shard3/218.193.126.107:26003,218.193.126.118:26003,218.193.126.29:26003"});
           db.runCommand( { addshard : "shard4/218.193.126.118:26004,218.193.126.29:26004,59.77.236.19:26004"});
           db.runCommand( { listshards : 1 } );
          ./mongo admin --port 26000 --eval "db.runCommand( { listshards : 1 } );"
五、测试 
       (1)激活数据库分片,指定testdb分片生效,即表示testdb中的不同集可以放到不同的shard中。叫sharded db
           db.runCommand( { enablesharding :"testdb"});   或 sh.enableSharding("wis")
       (2)激活数据库里Collecton分片,指定分片的集合和片键,即表示集合内数据可以放不同shard,不然只能放一个shard中。叫 sharded collection
            db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } ) 或 sh.shardCollection('wis.test',{id:1}
       (3)连接mongos服务器
            /home/mongodb-3.2/bin/mongo  59.77.236.113:26000
      (4)使用testdb
          use  testdb;
      (5)插入测试数据
           for (var i = 1; i <= 100000; i++) db.table1.save({id:i,"test1":"testval1"});
      (6)查看分片情况如下,部分无关信息省掉了
          db.table1.stats();

MongoDB分布式集群搭建的更多相关文章

  1. mongodb分布式集群搭建手记

    一.架构简介 目标单机搭建mongodb分布式集群(副本集 + 分片集群),演示mongodb分布式集群的安装部署.简单操作. 说明在同一个vm启动由两个分片组成的分布式集群,每个分片都是一个PSS( ...

  2. MongoDB分布式集群搭建(分片加副本集)

    # 环境准备 服务器 # 环境搭建 文件配置和目录添加 新建目录的操作要在三台机器中进行,为配置服务器新建数据目录和日志目录 mkdir -p $MONGODB_HOME/config/data mk ...

  3. mongo分布式集群搭建手记

    一.架构简介 目标 单机搭建mongodb分布式集群(副本集 + 分片集群),演示mongodb分布式集群的安装部署.简单操作. 说明 在同一个vm启动由两个分片组成的分布式集群,每个分片都是一个PS ...

  4. Hadoop上路-01_Hadoop2.3.0的分布式集群搭建

    一.配置虚拟机软件 下载地址:https://www.virtualbox.org/wiki/downloads 1.虚拟机软件设定 1)进入全集设定 2)常规设定 2.Linux安装配置 1)名称类 ...

  5. hadoop伪分布式集群搭建与安装(ubuntu系统)

    1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...

  6. Hadoop分布式集群搭建

    layout: "post" title: "Hadoop分布式集群搭建" date: "2017-08-17 10:23" catalog ...

  7. hbase分布式集群搭建

    hbase和hadoop一样也分为单机版.伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建. hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop ...

  8. 分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建

    一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行 ...

  9. kafka系列二:多节点分布式集群搭建

    上一篇分享了单节点伪分布式集群搭建方法,本篇来分享一下多节点分布式集群搭建方法.多节点分布式集群结构如下图所示: 为了方便查阅,本篇将和上一篇一样从零开始一步一步进行集群搭建. 一.安装Jdk 具体安 ...

随机推荐

  1. 用T-SQL命令附加数据库时,出现如下异常信息

    用T-SQL命令附加数据库时,出现如下异常信息: 无法打开物理文件 XXX.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server ...

  2. Solr——Windows下部署Solr7.5.0至jetty、Tomcat

    Solr6用默认的Jetty启动 需要的软件支持 JDK1.8以上 Solr6的安装包(solr-7.5.0.zip ) Solr自带一个Jetty环境,可以很方便的运行Solr. 直接到解压缩的so ...

  3. WPF 去除系统窗体边框,自定义移动窗体

    方法一: 去除系统窗体边框: <Window x:Class="PracticeProject.MainWindow" xmlns="http://schemas. ...

  4. (转)3款优秀的移动webAPP网站在线测试工具

    原文:原文地址 目前适配各个终端的需求越来越强烈呢?比如我们APP项目上线之后,需要一个宣传推广专题页,这个页面当然最好是采取响应式布局来完成.因为需要来推广和下载我们的APP. 无论用户是电脑打开, ...

  5. django-BaseCommand自带的权限分组

    note:  应该是这样的结构,并且commands名字是固定的. 执行: python manage.py  initgroup initgroup.py # -*- coding: utf-8 - ...

  6. css:蓝环章鱼

    许多海洋生物色彩艳丽,这次用css仿制一下蓝环章鱼的蓝环 <script type="text/javascript" src="http://cdn.bootcs ...

  7. 12纯 CSS 创作一种文字断开的交互特效

    原文地址:https://segmentfault.com/a/1190000014719591 总结:三部分组成,原文透明,左右都与原文重叠(绝对定位),但左右各取相应一部分. HTML代码: &l ...

  8. 《算法》第四章部分程序 part 5

    ▶ 书中第四章部分程序,加上自己补充的代码,图的深度优先遍历 ● 无向图的广度优先遍历,有向 / 无向图代码仅若干方法名不同 package package01; import edu.princet ...

  9. 省市区联动JS脚本

    省市区联动JS脚本 /* ***说明:省市区联动JS脚本 ***作者:Jerry Yuan  */ var province=[{id:0,name:'选择省'},{id:11,name:" ...

  10. python中的swapcase

    swapcase()将字符串中的字母小写变大写.大写变小写,举个例子: 1 a = "hELLO wORLD" 2 a1 = a.swapcase() 3 print(a1) 输出 ...