初探Replica set副本集的搭建 By Test模式

Replica set Deployment On Test Mode为啥是测试模式

标题写的比较含糊。配置副本集就配置吧,干嘛还要在一个测试Mode下呢。 其实是这样的,配置一个副本集集群按说应该在几个不同的节点上面配置,但是,一般情况下我们可能会首先在一个模拟环境下去试验,跑一些程序跑一些设置后,再在真正的多节点环境上铺开。所以我们首先先在一个简单的测试模式的基础上去感受一下mongoDB的Replica是个虾米东东。

实战先絮叨絮叨操作系统

当下,windows系统基本上快从开发OS的第一阵营跌落了。很多的开源产品直接不提供windows的编译命令,比如Flume从2.0开始已经告别windows。而Hadoop从2.X开始也对windows的支持基本上say goodbye了。我去客户现场出差的时候米国和印度的哥们发过来的所有架构和代码都是基于Ubuntu的,我们这边用windows一个个去实验。。。结果啥都打不开。然后就用Cygwin,结果还是很多新版的东西根本不能支持,本想是否可以自己编译windows的命令包,我靠,除非搞研究行了,累死了。最后想想,人家的原生就是Linux你为啥非得移植到windows啊,乖乖的也扔掉windows完了。后来,我以windows要衰败的名义去Ginza还买了一台15寸的mac,嘿嘿嘿,然后没几天就用一个chown命令搞死了机器,当晚重装了mac的系统,觉得这系统太不健壮了,重装居然耗费了一宿也太tm夸张了吧。。。现在mac还躺在柜子里,啥时候想玩swift的时候再拿出来吧。 那,说到这个,mongoDB对于windows的命令支持真的是很不错yeah,业内良心,不打压寡头。呵呵。所以基本上现在我的操作都是windows的命令操作。

在一台机器上创建模拟5个节点

mongoDB的命令有shell命令,还有被封装的javascript命令,当然,自己也可以封装各种各样的javascript,这个没有尽头的东西,只能靠学用结合了。我的例子是权威指南书中的一个例子,当然,如果按照书中直接跑可能会有疑问,通过我的操作干掉这些疑问吧。

进入非db连接模式C:\MongoDB\bin>mongo –nodb

这个命令不已连接或者创建DB为目的,而进入mongoDB的shell编辑环境

C:\MongoDB\bin>mongo –nodbMongoDB >

可以看出,我用的是2.6.5的版本,现在最新的是2.6.6?还是2.6.7来着。。。嗯。说到这里,提个题外话,之前我还在mongoDB的jira系统给mongo提了个bug,结果人家回复说,你的系统不支持Linux命令。唉,丢人丢大了。哈哈。

建立5个节点的test scriptC:\MongoDB\bin>mongo –nodbMongoDB > rep = new ReplSetTest({“nodes”:5})

输入rep = new ReplSetTest({“nodes”:5}) 这个命令后

“removePartitionDelay” : function (from, to, bidirectional) {this.addPartitionDelay(from, to, 0, bidirectional);},”addOneWayPartitionDelay” : function (from, to, delay) {this.addPartitionDelay(from, to, delay, false);},”removeOneWayPartitionDelay” : function (from, to) {this.addPartitionDelay(from, to, 0, false);}}>

如果出现了以下错误的话,请先做成一个C:\data\db 的文件夹,至于为什么下一节06的时候再说。

ERROR: dbpath (\data\db) does not exist.

屏幕像发疯了一样进行了一堆操作,这个都是在执行创建5个节点这个script后执行的一些后台操作,不用管啥意思了,除非你有兴趣看看屏幕这堆javascript代码

启动所有的节点”removePartitionDelay” : function (from, to, bidirectional) {this.addPartitionDelay(from, to, 0, bidirectional);},”addOneWayPartitionDelay” : function (from, to, delay) {this.addPartitionDelay(from, to, delay, false);},”removeOneWayPartitionDelay” : function (from, to) {this.addPartitionDelay(from, to, 0, false);}}> rep.startSet()

然后输入rep.startSet()后 图1

屏幕不是一直固定成上面这个样子哦,你会发现屏幕一直在滚啊滚啊滚啊滚( ̄Q ̄)╯ 如下面这样 图2

我第一次玩的时候觉得,完蛋了出错了,但是是完全按照书上执行的啊,还得执行一个什么initiate呢啊,屏幕这么滚怎么执行啊。 其实是这样的,这个时候其实相当于你在5台机器上面每个机器都大开了一个mongod的实例,但是这5个实例都属于无组织无纪律的状态,他们之间也不知道互相的关系,所以,下一步需要把他们整合到一起,配置成一个可以管理的集群Replica。

配置节点

是酱紫的。这个Test模式呢,是使用已经Wrapped的script进行启动的,每个节点的端口号是从31000开始依次分配的(配置真正replica的时候port和ip之类都可以指定),所以,我们的hostname就是:

那么,如果要配置节点呢,就要从上门的某一个节点入手即可,用一个节点来配置真个集群。说到这里可能会有疑问,这5个节点为啥就知道他们5个是一个Replica的集群呢?mongoDB的mongod启动命令中是有一个–replSet 的参数选项的,如果你希望把几个节点设置成一组集群那么就把这个参数设置成一样的,比如–replSet rs001,那么所有被设置成rs001的节点在下面的操作中就都会被召唤到一起。我们使用的test模式系统自动写死给这个集群的–replSet定义为:“TestReplSet”。在图1中可以找到”replSet”:”TestReplSet”这个定义。

进入一个节点

选择使用31000这个节点配置咯,,注意,新开一个命令窗口,刚才那个狂滚动的窗口不要管咯~:

C:\MongoDB\bin>mongo localhost:31000活在当下,别在怀念过去或者憧憬未来中浪费掉你现在的生活。

初探Replica set副本集的搭建 By Test模式

相关文章:

你感兴趣的文章:

标签云: