文档章节

Mongodb的cluster搭建细则

HelloEric
 HelloEric
发布于 2015/05/03 18:35
字数 1237
阅读 22
收藏 0
简介: 此生产环境的Cluster模式,采用3台Server搭建完成。 Cluster中包括3种服务,最前端的mongos服务,提供router服务和负载均衡;然后是config服务,只要是保存数据服务的片信息和副本集信息;最后是每一个副本集服务。 应用访问的mongodb流程: 应用程序调用mongos服务 -> mongos服务去调用config服务(一个mongos服务可以绑定多个congfig服务)-> config服务查询自身已经存储的片信息,然后返回可以使用的数据副本集服务的IP及端口 -> 获取到信息
Cluster搭建细则 OS: ubuntu 11.04 Server 64bit MongodbVer: 2.20 Server:hy0603, hy0701, hy0702 注:Cluster中采用最低3台独立Server设计完成。为保证数据的安全和负载均衡,Mongodb完整数据采用切割3份(3片Mongod服务),每片数据采用2份副本集构成,且2份副本集分布在不同独立Server中。前端mongos访问接口并行开放3个,如有应用程序调用,可以一一对应,如应用程序只能是唯一绑定,可在中间加入负载均衡中间层,进行轮询访问mongos接口。 Mongodb Cluster逻辑架构图 搭建步骤: 1. 安装mongodb,直接下载二进制的文件,解压直接可以使用,本例是安装在/usr/local/mongodb 2. 创建数据存储文件(登陆到相应的服务器执行如下指令)
hy0603: mkdir -p /data/mongodb/{config,node01,node12}
hy0701: mkdir -p /data/mongodb/{config,node02,node13}
hy0702: mkdir -p /data/mongodb/{config,node03,node11}
3. 数据安装分片3份,每个片由2个副本集完成 hy0603
/usr/local/mongodb/bin/mongod --dbpath /data/mongodb/node01 --port 10001 --replSet xserver01/hy0702:10002 --syslog --fork
/usr/local/mongodb/bin/mongod --dbpath /data/mongodb/node12 --port 10002 --replSet xserver02/hy0701:10001 --syslog --fork
hy0701
/usr/local/mongodb/bin/mongod --dbpath /data/mongodb/node02 --port 10001 --replSet xserver02/hy0603:10002 --syslog --fork
/usr/local/mongodb/bin/mongod --dbpath /data/mongodb/node13 --port 10002 --replSet xserver03/hy0702:10001 --syslog --fork
hy0702
/usr/local/mongodb/bin/mongod --dbpath /data/mongodb/node03 --port 10001 --replSet xserver03/hy0701:10002 --syslog --fork
/usr/local/mongodb/bin/mongod --dbpath /data/mongodb/node11 --port 10002 --replSet xserver01/hy0603:10001 --syslog --fork
注:启动之后会报错,因为没有进行初始化定义,最好按照副本集一个一个进行启动,启动完成一个副本集就进行一次初始化操作。 4. 初始化操作 登陆到每一个副本集的服务端,初始化只能做一次,只需要登陆到一个副本集的一台server里面,进行配置,他会自动同步到所有的本副本集的所有服务器。 hy0603
/usr/local/mongodb/bin/mongo hy0603:10001/admin config = { _id:"xserver01",members:[ { _id:1, host:"hy0603:10001"}, {_id:2,host:"hy0702:10002"} ] } rs.initiate(config);
hy0701
/usr/local/mongodb/bin/mongo hy0701:10001/admin
config = { _id:"xserver02",members:[ { _id:1, host:"hy0701:10001"}, {_id:2,host:"hy0603:10002"} ] }
rs.initiate(config);
hy0702
/usr/local/mongodb/bin/mongo hy0702:10001/admin
config = { _id:"xserver03",members:[ { _id:1, host:"hy0702:10001"}, {_id:2,host:"hy0701:10002"} ] }
rs.initiate(config);
检查成功:
Rs.status();
成功会有如下显示:
xserver03:PRIMARY> rs.status();
{
"set" : "xserver03",
"date" : ISODate("2012-10-09T08:40:57Z"),
"myState" : 1,
"members" : [
{
"_id" : 1,
"name" : "hy0702:10001",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 9324,
"optime" : Timestamp(1349763004000, 1),
"optimeDate" : ISODate("2012-10-09T06:10:04Z"),
"self" : true
},
{
"_id" : 2,
"name" : "hy0701:10002",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 9044,
"optime" : Timestamp(1349763004000, 1),
"optimeDate" : ISODate("2012-10-09T06:10:04Z"),
"lastHeartbeat" : ISODate("2012-10-09T08:40:56Z"),
"pingMs" : 1
}
],
"ok" : 1
}
5. 启动config服务 登陆到每一个服务器上,执行如下指令:
/usr/local/mongodb/bin/mongod --dbpath /data/mongodb/config --port 20000
6. 启动前端mongos服务 登陆到每一个服务器上,执行如下指令:
/usr/local/mongodb/bin/mongos --configdb hy0603:20000,hy0701:20000,hy0702:20000
7. 配置config服务 mongodb服务的配置和其他服务不一样,他的config配置也是以数据库的形式保存起来的,所有修改config服务的配置,就和执行数据库操作一样,一条一条添加。 而且不能登陆到config服务的服务器端进行配置,需要登录到mongos服务端,所以需要先把mongos服务启动起来之后再配置,而且这样陪着好处就是只需要新增一次,在mongos绑定的所有config服务端都会同步更新此操作。
db.runCommand({"addshard":"xserver01/hy0702:10002"});
db.runCommand({"addshard":"xserver02/hy0701:10001"});
db.runCommand({"addshard":"xserver03/hy0702:10001"});
新增片,如有副本集的情况,只需添加一次,不需要把每一个副本集节点都添加进去。 检查是否已经将所有片进入config服务:
use config
db.shards.find();
如果成功,会显示如下:
{ "_id" : "xserver01", "host" : "xserver01/hy0603:10001,hy0702:10002" }
{ "_id" : "xserver02", "host" : "xserver02/hy0603:10002,hy0701:10001" }
{ "_id" : "xserver03", "host" : "xserver03/hy0701:10002,hy0702:10001" }
以上显示已经完成3个片(副本集)的搭建,每个片有2个副本集。 启动分片服务:
db.runCommand({"enablesharding":"dataname"})
#dataname就是你需要分片的数据库的名字 以上的操作必须在admin的用户下才能执行,而且成功之后可以通过db.printShardingStatus()来进行查询,如果出现partitioned的值是true,表示切片是成功的。

© 著作权归作者所有

HelloEric

HelloEric

粉丝 8
博文 80
码字总数 75627
作品 0
成都
私信 提问
免费试用MongoDB云数据库 (MongoDB Atlas)教程

  众所周知,MongoDB包括社区版和企业版,但不止如此,MongoDB公司还有MongoDB Atlas:Database as a Service.   MongoDB Atlas delivers the world’s leading database for modern app...

xybaby
2018/08/13
0
0
21.36 mongodb分片介绍

21.36 mongodb分片介绍 分片就是将数据库进行拆分,将大型集合分隔到不同服务器上。比如,本来100G的数据,可以分割成10份存储到10台服务器上,这样每台机器只有10G的数据。 通过一个mongos的...

脑洞老湿_
2017/10/20
30
0
MongoDB Enterprise Operator for Kubernetes and OpenShift

Today more DevOps teams are leveraging the power of containerization, and technologies like Kubernetes and Red Hat OpenShift, to manage containerized database clusters. To suppo......

openthings
2019/03/01
32
0
21.38 mongodb分片搭建(中)

21.38 mongodb分片搭建(中) 分片搭建–分片配置 添加配置文件shard1.conf(三台机器都操作) 添加配置文件shard2.conf(三台机器都操作) 添加配置文件shard3.conf(三台机器都操作) 启动shard...

脑洞老湿_
2017/10/20
14
0
84.mongodb分片介绍 搭建 测试 及mongodb备份与恢复

21.36 mongodb分片介绍 21.37/21.38/21.39 mongodb分片搭建 21.40 mongodb分片测试 21.41 mongodb备份恢复 21.36 mongodb分片介绍 分片是由一个一个的副本集组成的 1.分片就是将数据库进行拆...

axin-linux
2019/04/01
21
0

没有更多内容

加载失败,请刷新页面

加载更多

如何为MVC-3转换为4应用程序添加对System.Web.Optimization的引用

我正在最近从MVC 3转换为MVC 4 beta的项目中尝试使用新的捆绑功能。 它需要global.asax中的一行代码, BundleTable.Bundles.RegisterTemplateBundles(); ,这需要using System.Web.Optimiza...

技术盛宴
今天
61
0
Kettle自定义jar包供javascript使用

我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:https://www...

CREATE_17
昨天
106
0
处理CSV文件中的逗号

我正在寻找有关如何处理正在创建的csv文件的建议,然后由我们的客户上传,并且该值可能带有逗号(例如公司名称)。 我们正在研究的一些想法是:带引号的标识符(值“,”值“,”等)或使用|...

javail
昨天
79
0
计算一个数的数位之和

计算一个数的数位之和 例如:128 :1+2+8 = 11 public int numSum(int num) { int sum = 0; do { sum += num % 10; } while ((num = num / 10) > 0); return sum;......

SongAlone
昨天
128
0
为什么图片反复压缩后普遍会变绿,而不是其他颜色?

作者:Lion Yang 链接:https://www.zhihu.com/question/29355920/answer/119088684 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 业余版概要:安卓的...

shzwork
昨天
85
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部