君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

Replica Set 节点类型分为三种:

  • standard:常规节点,它存储一份完整的数据副本,参与选举投票,有可能成为primary节点;
  • passive:存储了完整的数据副本,参与投票,不能成为primary节点;
  • arbiter:仲裁节点,只参与投票,不接收复制的数据,也不能成为primary节点。

本文配置使用2个常规节点和一个arbiter节点,arbiter节点由于不同步数据,所以负载会很小,部署对硬件没有太大的要求。

假设192.168.1.211、192.168.1.212为常规节点,192.168.1.68为arbiter节点。三个节点上的mongodb都是用下面的配置文件,文件存放在/etc/mongodb.cnf:

dbpath = /data/db/
logpath = /data/log/m.log
logappend = true
port = 27017
fork = true
directoryperdb = true
journal = true
replSet = test
rest = true

其中replSet 的 Id 为 test,这个值对应initiate中的”_id”,使用rest参数后可以在web管理界面中显示Replica Set中其他mongodb实例的信息。

使用命令

/usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf

分别启动三个机器上的mongodb实例,使用mongodb客户端登陆两个常规节点中的任何一个,执行如下命令:

rs.initiate(
	{"_id" : "test",
	 "members" : [
		{"_id" : 1, "host" : "192.168.1.211"},
		{"_id" : 2, "host" : "192.168.1.212"},
		{"_id" : 3, "host" : "192.168.1.68", "arbiterOnly" : true}
	]
});

或

rs.initiate(
	{"_id" : "test",
	 "members" : [
		{"_id" : 1, "host" : "192.168.1.211"},
		{"_id" : 2, "host" : "192.168.1.212"}
	]
});

rs.addArb('192.168.1.68');

可以使用rs.conf()查看配置情况,rs.status()查看各个节点的状态,经过一小段时间后,他们会选一台作为PRIMARY,其他的常规节点为SECONDARY,同时在js shell中看到提示符从“>”变为对应的 “PRIMARY>” 或 “SECONDARY>” 或 “ARBITER>”。可以在PRIMARY是通过rs.stepDown()来切换PRIMARY,执行此命令后会在剩余的常规节点选一个来充当PRIMARY。

关于初始化中配置members的其他可选参数,可以到官网上查看,地址:http://www.mongodb.org/display/DOCS/Replica+Set+Configuration

posted on 2012-12-24 14:45  刺猬的温驯  阅读(296)  评论(0编辑  收藏  举报