mongodb两台服务器搭建 replica set 配置

以下是搭建配置的过程:

1. 两台服务器分别启动相应的Mongod 进程:

10.1.1.1
./mongod --fork --shardsvr --port 27017 --replSet mySet --dbpath

/data/shard11 --logpath /data/shard11/shard11.log --rest

./mongod --fork --shardsvr --port 27018 --replSet mySet --dbpath

/data/shard12 --logpath /data/shard12/shard12.log --rest

10.1.1.2

./mongod --fork --shardsvr --port 27017 --replSet mySet --dbpath

/data/shard2 --logpath /data/shard2/shard2.log --rest

2. 初始化replica set

用mongo 连接其中一个mongod,执行:

>config = {_id: 'mySet', members: [

{_id: 0, host: '10.1.1.1:27017'},

{_id: 1, host: '10.1.1.2:27017'},
{_id: 2, host: '10.1.1.1:27018', arbiterOnly: true}

]}

>rs.initiate(config)

>rs.status()
注意:Server 上的27018 对应的Mongod,它们只负责在某个node down 掉后,进行
vote 选举新的master,它们本身并不存储数据备份

3. 配置1 台Config Servers:

10.1.1.1

./mongod --fork --configsvr --port 20000 --dbpath /data/config --logpath
/data/config/config.log --rest

4. 配置1 台Route Server:

10.1.1.2

./mongos --fork --port 30000 --chunkSize 1 --configdb "10.1.1.1:20000"
--logpath /data/mongos/mongos.log
chunkSize 参数用来设置chunk 块的大小,这里为了测试,设置成1M

5. Configuring the Shard Cluster
连接到mongos 进程,并切换到admin 数据库做以下配置

10.1.1.2

>mongo 10.1.1.2:30000

>use admin

>db.runCommand({addshard:'mySet/10.1.1.1:27017,10.1.1.2:27017'})

>db.runCommand({enablesharding:'test'})
>db.runCommand({listshards:1})

>printShardingStatus()

>db.runCommand({shardcollection:'test.test', key:{_id:1}, unique : true})

6. 测试

连接到mongos

>for(var i=1;i<=2011;i++)

db.test.save({id:i,value1:"1234567890",value2:"1234567890",value3:"12345

67890",value4:"1234567890"});
然后,进入mongo 的命令行,可以在shard 中分别查看count 值。

下面,我们再来测试一下automated failover:

将10.1.1.1 的mongod 进程kill -2 杀掉后,在10.1.1.2 的log 中,可以看到:

Tue Jan 25 10:51:04 [ReplSetHealthPollTask] replSet info 10.1.1.2:27017 is
now down (or slow to respond)

Tue Jan 25 10:51:04 [rs Manager] replSet info electSelf 1

Tue Jan 25 10:51:04 [rs Manager] replSet PRIMARY
说明,新的vote 已经完成,10.1.1.2 变成了新的primary master 了

此时,我们再往db 中继续写入数据,然后启动10.1.1.1,会发现:

Tue Jan 25 10:52:56 [ReplSetHealthPollTask] replSet 10.1.1.1:27017

SECONDARY
说明,10.1.1.1 此时又作为secondary 来运行了

同时,在10.1.1.1 down 掉时,10.1.1.2 上写入的数据也会继续同步到10.1.1.1 上

 

posted on 2012-07-29 23:57  larryle  阅读(708)  评论(0)    收藏  举报