MongoDB Replicate Set 复制集安装与配置

总览

共三台机器:

172.17.10.227 
172.17.10.228 
172.17.10.229 

每台起两个mongod到23021、23022端口,如下:

程序端口说明
mongod27021/27022Shard Server,两套,用于存储实际的数据块
mongo config20000config server,存储了整个 Cluster Metadata,其中包括 chunk 信息
mongos30000Route Server,前端路由,客户端由此接入,且让整个集群看上去像单一数据库

安装

yum install mongo-10gen

准备并启动两个mongod实例

创建目录
mkdir -p /data/mongodb/{db,logs}
mkdir -p /data/mongodb/db/{shard11,shard21,config}

mkdir -p /data/mongodb/{db,logs}
mkdir -p /data/mongodb/db/{shard12,shard22,config}

mkdir -p /data/mongodb/{db,logs}
mkdir -p /data/mongodb/db/{shard13,shard23,config}
运行mongod

每台机器启动两个mongod,分别在27021和27022端口,直接用脚本,因为都类似就贴一个

# 脚本
/opt/mongodb/bin/mongod -shardsvr -replSet shard1 -port 27021 -dbpath /data/mongodb/db/shard11 -oplogSize 1000 -logpath /data/mongodb/logs/shard11.log -logappend  --maxConns 10000 --quiet -fork --directoryperdb 
sleep 2 

/opt/mongodb/bin/mongod -shardsvr -replSet shard2 -port 27022 -dbpath /data/mongodb/db/shard21 -oplogSize 1000 -logpath /data/mongodb/logs/shard21.log -logappend  --maxConns 10000 --quiet -fork --directoryperdb
sleep 2 

ps aux | grep mongo 

配置出两个replicate set(Shard Server)

上面启动的6个mongod分两组配置
第一组:

[root@kevin~]# mongo 172.17.10.227:27021

> config = {_id: 'shard1', members: [ 
    {_id: 0, host: '172.17.10.227:27021'}, 
    {_id: 1, host: '172.17.10.228:27021'}, 
    {_id: 2, host: '172.17.10.229:27021'}] 
  }

> rs.initiate(config)
{ 
    "info" : "Config now saved locally.  Should come online in about a minute.", 
    "ok" : 1 
}
# 则成功
『>』 马上变为 『shard1:PRIMARY>』
此时执行:
shard1:PRIMARY> rs.status()
{
    "set" : "shard1",
    "date" : ISODate("2016-07-21T17:21:10Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "172.17.10.227:27021",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 286905,
            "optime" : Timestamp(1469121563, 170),
            "optimeDate" : ISODate("2016-07-21T17:19:23Z"),
            "electionTime" : Timestamp(1468837010, 1),
            "electionDate" : ISODate("2016-07-18T10:16:50Z"),
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "172.17.10.228:27021",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 284670,
            "optime" : Timestamp(1469121563, 170),
            "optimeDate" : ISODate("2016-07-21T17:19:23Z"),
            "lastHeartbeat" : ISODate("2016-07-21T17:21:10Z"),
            "lastHeartbeatRecv" : ISODate("2016-07-21T17:21:10Z"),
            "pingMs" : 0,
            "syncingTo" : "172.17.10.227:27021"
        },
        {
            "_id" : 2,
            "name" : "172.17.10.229:27021",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 284668,
            "optime" : Timestamp(1469121563, 170),
            "optimeDate" : ISODate("2016-07-21T17:19:23Z"),
            "lastHeartbeat" : ISODate("2016-07-21T17:21:10Z"),
            "lastHeartbeatRecv" : ISODate("2016-07-21T17:21:10Z"),
            "pingMs" : 0,
            "lastHeartbeatMessage" : "syncing to: 172.17.10.227:27021",
            "syncingTo" : "172.17.10.227:27021"
        }
    ],
    "ok" : 1
}

第二组类似:略

配置三台配置服务器(config server)

/opt/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/db/config --port 20000 --logpath /data/mongodb/logs/config.log --logappend --fork --directoryperdb

配置mongos(路由进程)

因为rs的特性,可以决策并切换primary,所以需要一个router来统一访问入口,当然也可以启动多个mongos

/opt/mongodb/bin/mongos -configdb 172.17.10.227:20000,172.17.10.228:20000,172.17.10.229:20000 -port 30000 -chunkSize 50 -logpath /data0/mongodb/logs/mongos.log -logappend -fork

如上20000端口是config server,所以路由进程必须在config server进程都成功启动的状态下才可以启动到30000端口

配置shared集群

连接路由
[root@kevin ~]# mongo 172.17.10.227:30000/admin
加入shards
mongos> db.runCommand({ addshard : "shard1/172.17.10.227:27021,172.17.10.228:27021,172.17.10.229:27021",name:"shard1",maxSize:20480}) 
{ "shardAdded" : "shard1", "ok" : 1 } 
mongos> db.runCommand({ addshard : "shard2/172.17.10.227:27022,172.17.10.228:27022,172.17.10.229:27022",name:"shard2",maxSize:20480}) 
{ "shardAdded" : "shard2", "ok" : 1 } 

上张图:
这里写图片描述

shards已经配置成功。
如果primary挂了,其它两个节点中某个会成为主节点,mongos会自动连接到主节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值