0、需要环境

安装包:mongodb-linux-x86_64-3.4.6.tgz

安装路径:/usr/mongodb

服务器: 192.168.177.131/132/133

mongos

20000

config server

21000

shard1

20001

shard2

20002

shard3

20003

1、解压到 /usr/local

解压后重命名为mongodb,方便以后操作

2、创建目录

mkdir -p mongodb/mongos/log

mkdir -p mongodb/config-server/data

mkdir -p mongodb/config-server/log

mkdir -p mongodb/shard1/data

mkdir -p mongodb/shard1/log

mkdir -p mongodb/shard2/data

mkdir -p mongodb/shard2/log

mkdir -p mongodb/shard3/data

mkdir -p mongodb/shard3/log

其中data目录存放数据,log目录存放日志

mongos服务不存放数据,所以不需要数据目录,只需要log目录

3、配置服务器 config server

vim /usr/local/mongodb/config-server.conf

systemLog:

destination: file

path: "/usr/local/mongodb/config-server/log/config-server.log"

logAppend: true

storage:

dbPath: "/usr/local/mongodb/config-server/data"

journal:

enabled: true

directoryPerDB: true

net:

port: 21000

processManagement:

fork: true

pidFilePath: "/usr/local/mongodb/config-server/config-server.pid"

sharding:

clusterRole: configsvr

replication:

replSetName: configServer

冒号(:)和配置之间需要有空格

启动三台服务器

cd mongodb

bin/mongod -f config-server.conf

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

#连接

mongodb/bin/mongo --port 21000

config = {

_id : "configServer",

members : [

{_id : 0, host : "192.168.177.131:21000" },

{_id : 1, host : "192.168.177.132:21000" },

{_id : 2, host : "192.168.177.133:21000" }

]

}

#初始化副本集

rs.initiate(config);

#查看分区状态

rs.status();

4、分片副本集 shard

vim /usr/local/mongodb/shard1.conf

systemLog:

destination: file

path: "/usr/local/mongodb/shard1/log/shard1.log"

logAppend: true

storage:

dbPath: "/usr/local/mongodb/shard1/data"

journal:

enabled: true

directoryPerDB: true

net:

port: 20001

processManagement:

fork: true

pidFilePath: "/usr/local/mongodb/shard1/shard1.pid"

sharding:

clusterRole: shardsvr

replication:

replSetName: shard1

启动三台服务器:

cd mongodb

bin/mongod -f shard1.conf

登陆任意一台服务器,初始化副本集

mongo --port 20001

#使用admin数据库

use admin

config = {

_id : "shard1",

members : [

{_id : 0, host : "192.168.177.131:20001" },

{_id : 1, host : "192.168.177.132:20001" },

{_id : 2, host : "192.168.177.133:20001" }

]

}

#初始化副本集

rs.initiate(config);

#查看分区状态

rs.status();

配置第二,三个分片副本集,方法同第六步。 注意端口改为20002  20003

systemLog:

destination: file

path: "/usr/local/mongodb/shard2/log/shard2.log"

logAppend: true

storage:

dbPath: "/usr/local/mongodb/shard2/data"

journal:

enabled: true

directoryPerDB: true

net:

port: 20002

processManagement:

fork: true

pidFilePath: "/usr/local/mongodb/shard2/shard2.pid"

sharding:

clusterRole: shardsvr

replication:

replSetName: shard2

systemLog:

destination: file

path: "/usr/local/mongodb/shard3/log/shard3.log"

logAppend: true

storage:

dbPath: "/usr/local/mongodb/shard3/data"

journal:

enabled: true

directoryPerDB: true

net:

port: 20003

processManagement:

fork: true

pidFilePath: "/usr/local/mongodb/shard3/shard3.pid"

sharding:

clusterRole: shardsvr

replication:

replSetName: shard3

启动三台服务器:

cd mongodb

bin/mongod -f shard2.conf

bin/mongod -f shard3.conf

登陆任意一台服务器,初始化副本集

mongo --port 20002

mongo --port 20003

#使用admin数据库

use admin

config = {

_id : "shard2",

members : [

{_id : 0, host : "192.168.177.131:20002" },

{_id : 1, host : "192.168.177.132:20002" },

{_id : 2, host : "192.168.177.133:20002" }

]

}

config = {

_id : "shard3",

members : [

{_id : 0, host : "192.168.177.131:20003" },

{_id : 1, host : "192.168.177.132:20003" },

{_id : 2, host : "192.168.177.133:20003" }

]

}

#初始化副本集

rs.initiate(config);

#查看分区状态

rs.status();

5、路由服务器 mongos

vim /usr/local/mongodb/mongos.conf

systemLog:

destination: file

path: "/usr/local/mongodb/mongos/log/mongos.log"

logAppend: true

net:

port: 20000

bindIp: 0.0.0.0

processManagement:

fork: true

pidFilePath: "/usr/local/mongodb/mongos/mongos.pid"

sharding:

configDB: configReplSet/192.168.177.131:21000,192.168.177.132:21000,192.168.177.133:21000

启动三台服务器:

cd mongodb

bin/mongos -f mongos.conf

注意此处启动使用的是mongos

6、启用分片

目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。

#登陆任意一台mongos

mongo --port 20000

#使用admin数据库

use  admin

#串联路由服务器与分配副本集

sh.addShard("shard1/192.168.177.131:20001,192.168.177.132:20001,192.168.177.133:20001");

sh.addShard("shard2/192.168.177.131:20002,192.168.177.132:20002,192.168.177.133:20002");

sh.addShard("shard3/192.168.177.131:20003,192.168.177.132:20003,192.168.177.133:20003");

#查看集群状态

sh.status()

至此集群已经搭建完成。

7、测试

连接mongos

bin/mongo --port 20000

首先启动某个Database(数据库)的Sharding(分片)功能

mongos> sh.enableSharding("test")

对testDB数据库里的collection logs进行shard,shard key是sn字段,shard策略是hashed。使用hashed策略旨在让mongodb将数据均匀分布,如果使用{"sn",1}进行range shard,数据会按照大小顺序分布,就会出现某个shard数据很多,其他的很少的现象。

mongos> sh.shardCollection("testDB.logs", { "sn" : "hashed" } )

查看shard信息

mongos> sh.status()

添加测试数据

mongos> use testDB

mongos> for(var i=1; i<=100000; i++){db.log.insert({sn:i, msg:'Message ' + i});}

等待一段时间

查看log的shard信息

mongos> db.logs.stats()

可以看到三个分片几乎平均的保存了数据。

33143   33755   33102

{

"sharded" : true,

"capped" : false,

"ns" : "testDB.logs",

"count" : 100000,

"size" : 5688895,

"storageSize" : 1773568,

"totalIndexSize" : 3944448,

"indexSizes" : {

"_id_" : 983040,

"sn_hashed" : 2961408

},

"avgObjSize" : 56,

"nindexes" : 2,

"nchunks" : 6,

"shards" : {

"shard1" : {

"ns" : "testDB.logs",

"size" : 1920351,

"count" : 33755,

"avgObjSize" : 56,

"storageSize" : 634880,

"capped" : false,

...

"ok" : 1

},

"shard2" : {

"ns" : "testDB.logs",

"size" : 1885397,

"count" : 33143,

"avgObjSize" : 56,

"storageSize" : 544768,

"capped" : false,

...

"ok" : 1

},

"shard3" : {

"ns" : "testDB.logs",

"size" : 1883147,

"count" : 33102,

"avgObjSize" : 56,

"storageSize" : 593920,

"capped" : false,

...

"ok" : 1

}

},

"ok" : 1

}

8、后期运维

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

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/config-server.conf

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/shard1.conf

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/shard2.conf

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/shard3.conf

/usr/local/mongodb/bin/mongos -f /usr/local/mongodb/mongos.conf

关闭时,直接killall杀掉所有进程

killall mongod

killall mongos

没有killall命令的使用<yum install psmisc>安装

centos7-mongodb3.4.6集群的搭建的更多相关文章

  1. Centos7环境下etcd集群的搭建

    Centos7环境下etcd集群的搭建 一.简介 "A highly-available key value store for shared configuration and servi ...

  2. centos7下安装zookeeper&zookeeper集群的搭建

    一.centos7下安装zookeeper 1.zookeeper 下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 2.安装步骤 ...

  3. 初试 Centos7 上 Ceph 存储集群搭建

    转载自:https://cloud.tencent.com/developer/article/1010539 1.Ceph 介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统 ...

  4. centos7 zookeeper集群的搭建

    说明:该集群的搭建是为了服务于solr集群,请参考我的关于solr集群搭建的博客. 1.创建solr-cloud目录 mkdir /usr/local/solr-cloud 2.将解压的apache- ...

  5. MongoDB集群的搭建

    一.环境准备 1.Centos7 2.mongodb3.4.10 3.三台机器IP分别是:192.168.1.100.192.168.1.135.192.168.1.136 二.mongdb数据库的安 ...

  6. zookeeper集群的搭建以及hadoop ha的相关配置

    1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...

  7. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十二)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网。

    Centos7出现异常:Failed to start LSB: Bring up/down networking. 按照<Kafka:ZK+Kafka+Spark Streaming集群环境搭 ...

  8. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  9. 在CentOS7上部署Kubernetes集群

    在CentOS7上部署Kubernetes集群 文/FCBusquest 2015-12-22 18:36:00 简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文 ...

  10. 大数据 -- Hadoop集群环境搭建

    首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.它其实是将一个大文件分成若干块保存在不同服务器的多个节点中.通过联网 ...

随机推荐

  1. JavaScript入门几个概念

    JavaScript入门几个概念 刚刚入门JavaScript的时候,搞懂DOM.BOM以及它们的对象document和window很有必要. DOM是为了操作文档出现的API,document是它的 ...

  2. 18_Condition条件

    [简述] wait()和notify()方法是和synchronized关键字合作使用的. Condition是和重入锁相关联的,通过ReentrantLock.newCondition()生成一个与 ...

  3. SharePoint 2013 - Workflow Manager

    1. Workflow Manager可以与SharePoint 安装在同一台机器上,只是不建议这么做:由于Workflow Manager 需要使用数据库,我个人将其安装在 SQL Server机器 ...

  4. File GDB API

    bbs一问一答 https://blogs.esri.com/esri/arcgis/2010/12/13/file-geodatabase-api-details/ 下载页面 http://www. ...

  5. AJAX 学习笔记 2017_05_04

    1.使用 AJAX 修改该文本内容 <%@ page language="java" contentType="text/html; charset=UTF-8&q ...

  6. 搭建JUnit环境

    1.下载 JUnit,这里用JUnit 4.7 下载链接: http://pan.baidu.com/s/1c23n7LQ 密码: i18e 2.可以直接 build path 引入:也可以创建 Us ...

  7. windows server 2008 64位MySQL5.6免安装版本配置说明

    1 通过官网下载MySQL5.6版本压缩包,mysql-5.6.36-winx64.zip: 2 在D盘创建目录,比如D:\MySQL,将mysql-5.6.36-winx64.zip解压缩到该目录下 ...

  8. 数据库系统异常排查之DMV(转)

    来源: http://www.cnblogs.com/fygh/archive/2012/03/12.html 数据库系统异常是DBA经常要面临的情景,一名有一定从业经验的DBA,都会有自己一套故障排 ...

  9. 【转】android:windowSoftInputMode属性详解

    android:windowSoftInputMode activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性. 这个属性能影响两件事情: [一] ...

  10. Linux使用sz、rz命令下载、上传文件

    1.安装服务 yum -y install lrzsz 2.上传命令:rz 使用rz命令,会调用系统的资源管理器,选择文件进行上传即可.上传的文件默认保存linux当前所在目录 3.下载命令:sz 根 ...