centos7-mongodb3.4.6集群的搭建
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集群的搭建的更多相关文章
- Centos7环境下etcd集群的搭建
Centos7环境下etcd集群的搭建 一.简介 "A highly-available key value store for shared configuration and servi ...
- centos7下安装zookeeper&zookeeper集群的搭建
一.centos7下安装zookeeper 1.zookeeper 下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 2.安装步骤 ...
- 初试 Centos7 上 Ceph 存储集群搭建
转载自:https://cloud.tencent.com/developer/article/1010539 1.Ceph 介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统 ...
- centos7 zookeeper集群的搭建
说明:该集群的搭建是为了服务于solr集群,请参考我的关于solr集群搭建的博客. 1.创建solr-cloud目录 mkdir /usr/local/solr-cloud 2.将解压的apache- ...
- MongoDB集群的搭建
一.环境准备 1.Centos7 2.mongodb3.4.10 3.三台机器IP分别是:192.168.1.100.192.168.1.135.192.168.1.136 二.mongdb数据库的安 ...
- zookeeper集群的搭建以及hadoop ha的相关配置
1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十二)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网。
Centos7出现异常:Failed to start LSB: Bring up/down networking. 按照<Kafka:ZK+Kafka+Spark Streaming集群环境搭 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- 在CentOS7上部署Kubernetes集群
在CentOS7上部署Kubernetes集群 文/FCBusquest 2015-12-22 18:36:00 简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文 ...
- 大数据 -- Hadoop集群环境搭建
首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.它其实是将一个大文件分成若干块保存在不同服务器的多个节点中.通过联网 ...
随机推荐
- html-超链接标签
链接资源 - <a href="01-hello.html">只是一个超链接1</a> ** href:链接的资源的地址 ** target:设置打开的方式 ...
- html和css命名-望文生义
HTML+CSS命名规则 在一个内容较多的HTML页面中,需要设计许多不同的框架,再为这些不同的框架及内容进行分类,给予相应的名称,从而使得网页结构更加清晰,也为工作提供了方便.许多新手朋友在设计一个 ...
- 003Angular2中使用ng-bootstrap
1.检查@angular/cli版本 命令行ng -v ,版本号必须大于1.0.0-beta.24 2.新建工程 工程所在目录,命令行ng new my-app --style=scss 带style ...
- 在Eclipse安装Genymotion插件的经验心得
个人心得分享,不当之处还请指正. Eclipse自带的Android模拟器已经无力吐槽了,新手刚上手时或许配置完环境已经精疲力尽了,或许还沉浸在开发成功的喜悦当中,对AVD模拟器的运行情况关注不大,渐 ...
- C++中char*与wchar_t*之间的转换
http://blog.163.com/tianshi_17th/blog/static/4856418920085209414977/ 关于C++中的char*与wchar_t*这两种类型的相互转换 ...
- Linux c获取时间
linux c获得时间和设置时间 #include<time.h> //C语言的头文件 #include<stdio.h> //C语言的I/O void main() { ti ...
- adb工具包使用方法
ADB工具包总共有四个文件,两个exe后缀,两个dll后缀.里面还带有fastboot.exe下载后在PC上安装,如安装到D:\adb_tools-2.0目录,确认目录中带有fastboot.exe文 ...
- 生产环境rac无法启动
节点二crs无法启动,查看启动日志:ohasd.log位置在/u01/app/11.2.0/grid/log/host01/ohasd/ohasd.log另外root.sh的log在rootcrs_X ...
- Oracle 11.1.0.6 导入导出bug
实验环境: 11.1.0.6.0 对ANONYMOUSUSER_ALL表中分区进行备份 SQL> select TABLE_NAME,PARTITION_NAME,HIGH_VALUE,PA ...
- 插上翅膀,让Excel飞起来——xlwings(四)
前言 当年看<别怕,Excel VBA其实很简单>相见恨晚,看了第一版电子版之后,买了纸质版,然后将其送人.而后,发现出了第二版,买之收藏.之后,发现Python这一编程语言,简直是逆天, ...