MongoDB4.0搭建分布式集群

搭建之前先了解一下MongoDB分片群集主要有如下三个组件:

  • Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server 角色可以由几台服务器组成一个Peplica Set 承担,防止主机单点故障。
  • Config Server:配置服务器,存储了整个分片群集的配置信息,其中包括chunk信息。
  • Routers:前端路由,客户端由此接入,且让整个群集看上去像单一数据库,前端应用可以透明使用。

系统环境

Centos7.5、MongoDB4.0.2、关闭防火墙。

IP 路由服务端口 配置服务端口 分片1端口 分片2端口 分片3端口
10.211.55.3 27017 27018 27001 27002 27003
10.211.55.4 27017 27018 27001 27002 27003
10.211.55.5 27017 27018 27001 27002 27003

三台机器的配置服务(27018)形成复制集,分片1、2、3也在各机器都部署一个实例,它们之间形成复制集,客户端直接连接3个路由服务与之交互,配置服务和分片服务对客户端是透明的。

服务器的安装及配置(3台服务器执行相同操作)

1、下载解压MongoDB

到MongoDB官网下载:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.2.tgz

解压到/home/mongodb,设置环境变量:

export PATH=$PATH:/home/mongodb/bin

保存后执行:

srouce /etc/profile

2、创建路由、配置、分片等的相关目录与文件

启动配置文件存放的文件夹:mkdir -p /home/mongodb/conf
配置服务数据存放目录:mkdir -p /home/mongodb/data/config
分片1服务数据存放目录:mkdir -p /home/mongodb/data/shard1
分片2服务数据存放目录:mkdir -p /home/mongodb/data/shard2
分片3服务数据存放目录:mkdir -p /home/mongodb/data/shard3
配置服务日志存放文件:mkdir -p /home/mongodb/log/config.log
路由服务日志存放文件:mkdir -p /home/mongodb/log/mongos.log
分片1服务日志存放文件:mkdir -p /home/mongodb/log/shard1.log
分片2服务日志存放文件:mkdir -p /home/mongodb/log/shard2.log
分片3服务日志存放文件:mkdir -p /home/mongodb/log/shard3.log

配置服务器部署(3台服务器执行相同操作)

1、在/home/mongodb/conf目录创建config.conf:

dbpath=/home/mongodb/data/config
logpath=/home/mongodb/log/config.log
port=27018
logappend=true
fork=true
maxConns=5000
#复制集名称
replSet=configs
#置参数为true
configsvr=true
#允许任意机器连接
bind_ip=0.0.0.0

2、配置复制集

分别启动三台服务器的配置服务:

mongod -f /home/mongodb/conf/config.conf

连接mongo,只需在任意一台机器执行即可:

mongo --host 10.211.55.3 --port 27018

切换数据库:

use admin

初始化复制集:

rs.initiate({_id:"configs",members:[{_id:0,host:"10.211.55.3:27018"},{_id:1,host:"10.211.55.4:27018"}, {_id:2,host:"10.211.55.5:27018"}]})

其中_id:"configs"的configs是上面config.conf配置文件里的复制集名称,把三台服务器的配置服务组成复制集。

查看状态:

rs.status()

等几十秒左右,执行上面的命令查看状态,三台机器的配置服务就已形成复制集,其中1台为PRIMARY,其他2台为SECONDARY。

分片服务部署(3台服务器执行相同操作)

1、在/home/mongodb/conf目录创建shard1.conf、shard2.conf、shard3.conf,内容如下:

dbpath=/home/mongodb/data/shard1 #其他2个分片对应修改为shard2、shard3文件夹
logpath=/home/mongodb/log/shard1.log #其他2个分片对应修改为shard2.log、shard3.log
port=27001 #其他2个分片对应修改为27002、27003
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true
replSet=shard1 #其他2个分片对应修改为shard2、shard3
bind_ip=0.0.0.0

端口分别是27001、27002、27003,分别对应shard1.conf、shard2.conf、shard3.conf。

还有数据存放目录、日志文件这几个地方都需要对应修改。

在3台机器的相同端口形成一个分片的复制集,由于3台机器都需要这3个文件,所以根据这9个配置文件分别启动分片服务:

mongod -f /home/mongodb/conf/shard{1/2/3}.conf

2、将分片配置为复制集

连接mongo,只需在任意一台机器执行即可:

mongo --host 10.211.55.3 --port 27001 //这里以shard1为例,其他两个分片则再需对应连接到27002、27003的端口进行操作即可

切换数据库:

use admin

初始化复制集:

rs.initiate({_id:"shard1",members:[{_id:0,host:"10.211.55.3:27001"},{_id:1,host:"10.211.55.4:27001"},{_id:2,host:"10.211.55.5:27001"}]})

以上是基于分片1来操作,同理,其他2个分片也要连到各自的端口来执行一遍上述的操作,让3个分片各自形成1主2从的复制集,注意端口及仲裁节点的问题即可,操作完成后3个分片都启动完成,并完成复制集模式。

路由服务部署(3台服务器执行相同操作)

1、在/home/mongodb/conf目录创建mongos.conf,内容如下:

logpath=/home/mongodb/log/mongos.log
logappend = true
port = 27017
fork = true
configdb = configs/10.211.55.3:27018,10.211.55.4:27018,10.211.55.5:27018
maxConns=20000
bind_ip=0.0.0.0

2、启动mongos

分别在三台服务器启动:

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

3、启动分片功能

连接mongo:

mongo --host 10.211.55.3 --port 27017

切换数据库:

use admin

添加分片,只需在一台机器执行即可:

sh.addShard("shard1/10.211.55.3:27001,10.211.55.4:27001,10.211.55.5:27001")
sh.addShard("shard2/10.211.55.3:27002,10.211.55.4:27002,10.211.55.5:27002")
sh.addShard("shard3/10.211.55.3:27003,10.211.55.4:27003,10.211.55.5:27003")

查看集群状态:

sh.status()

4、实现分片功能

设置分片chunk大小

use config
db.setting.save({"_id":"chunksize","value":1}) # 设置块大小为1M是方便实验,不然需要插入海量数据

5、模拟写入数据

use calon
for(i=1;i<=50000;i++){db.user.insert({"id":i,"name":"jack"+i})} #模拟往calon数据库的user表写入5万数据

7、启用数据库分片

sh.enableSharding("calon")

8、创建索引,对表进行分片

db.user.createIndex({"id":1}) # 以"id"作为索引
sh.shardCollection(calon.user",{"id":1}) # 根据"id"对user表进行分片
sh.status() # 查看分片情况

到此,MongoDB分布式集群就搭建完毕。

原文地址:https://www.cnblogs.com/calon/p/9650368.html

时间: 2024-10-04 02:18:40

MongoDB4.0搭建分布式集群的相关文章

redis3.0.2 分布式集群安装详细步骤

redis3.0.2 分布式集群安装详细步骤 --(centos5.8 X64系统) 版本历史 时间 版本 说明 编写者 2015-06-5 1.0 redis3.0.2 分布式集群安装详细步骤 csc 一: redis cluster介绍篇 1:redis cluster的现状 目前redis支持的cluster特性(已亲测): 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot resharding:在线分片 4):进群管理:cluster xxx 5):基于

GaussDB T 1.0.2分布式集群部署故障总结

之前安装GaussDB T 1.0.2分布式集群的时候,安装过程中会报segmentation fault错误,如下: [[email protected] ~]$ gs_install -X /mnt/Huawei/db/clusterconfig.xml Parsing the configuration file. Check preinstall on every node. Successfully checked preinstall on every node. Creating

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

一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务.因此,它可以容错地存储海量稀疏的数据.HBase在列上实现了BigTable论文提到的压缩算法.内存操作和布隆过滤器.HBase的表能够作为MapReduce任务的输入和输出,可以通过Java API来存取数据,也可以

Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程

1.选取三台服务器(CentOS系统64位) 114.55.246.88 主节点 114.55.246.77 从节点 114.55.246.93 从节点 之后的操作如果是用普通用户操作的话也必须知道root用户的密码,因为有些操作是得用root用户操作.如果是用root用户操作的话就不存在以上问题. 我是用root用户操作的. 2.修改hosts文件 修改三台服务器的hosts文件. vi /etc/hosts 在原文件的基础最后面加上: 114.55.246.88 Master 114.55.

hadoop-2.7.1+zookeeper-3.4.8+hbase-1.2.1+apache-hive-2.0.0完全分布式集群

网上有的hadoop,zookeeper,hbase,apache-hive相关文档,具体大家可以百度具体了解,本文不多做介绍,本文从最基本的环境搭建入手,纯环境搭建. 搭建次环境唯一要考虑就是软件相互之间的兼容性,及服务器内存(最好大点,虚拟机2G以上),当然也可以通过调启动参数,调小启动内存大小.具体文章会适当介绍. 一.环境准备 1.查看系统版本 cat /etc/issue CentOS release 6.8 (Final) 2.软件准备 软件自行官网下载,但自己要统一规划方便后面操作

VMware 虚拟机安装 hadoop 2.6.0 完全分布式集群

最近连着搭了两次hadoop的集群,搭建的时候也碰到了一些问题,因为之前对linux 不熟悉,经常遇到各种问题和命令忘记写,幸亏有度娘谷哥,这里做一个记录 下次使用的时候用的上 计算机的配置 计算机: G3440 3.3G 双核 8G内存 虚拟机: vmware workstation 12 pro 系统: centos6.5 节点: 192.168.133.33 master.hadoop 192.168.1.151 slave1.hadoop 192.168.1.151 slave2.had

利用vmware 搭建分布式集群

前言: 我们需要至少3台服务器来实现分布式,鉴于没那么多钱买真机器,从学习和开发的角度看,只有虚拟机一条路了. 软件选择: 虚拟机使用VMware软件,因为主流而且资料比较多,学习成本较低.软件在[ 链接:http://pan.baidu.com/s/1jI4pppc  密码:zvtt ]下,破解文件也在里面. 虚拟OS毫无疑问是linux,鉴于centos开源,下载方便又不需要破解,故而采用之.[?CentOS-7-x86_64-Everything-1511.iso] 此外还有redhat版

tomcat7.0+zookeeper+sola5.0.0搭建solr集群

solrCloud的搭建可以有两种方式:使用solr内嵌的jetty来搭建:使用外部web容器tomcat来搭建.对于使用jett来搭建参考solr官方的手册照着做就ok了,非常简单,下面我主要讲的是如何使用tomcat来搭建solrCloud. 因最新版本solr5.0.0较4.x版本文件结构上有一些变化,网上大多是以前版本的安装,特在此记录一下. 准备工作 solr5.0.0 apache-tomcat-7.0.42 zookeeper3.4.6 1.搭建tomcat单机版solr 可参照h

Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6搭建分布式集群环境

一.环境说明 个人理解:zookeeper可以独立搭建集群,hbase本身不能独立搭建集群需要和hadoop和hdfs整合 集群环境至少需要3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面举例说明,配置节点IP分配如下: IP     角色10.10.50.133 master10.10.125.156 slave110.10.114.112 slave2 三个节点均使用CentOS 6.5系统,为了便于维护,集群环境配置项最好使用