创建高可用、高性能、可扩展、易伸缩的Mongodb集群需创建具有3个Shard(1 Primary,1 Secondary,1 Arbiter),3个Config Servers,3个Router。
在单台服务上搭建,各个端口都不相同:
如果有多台服务器,可安装下图指定端口,三台情况:
如 mongodb-linux-x86_64-rhel62-3.2.10.tgz 到临时目录,
解压:tar -zxv -f mongodb-linux-x86_64-rhel62-3.2.10.tgz -C /home/mongodb
。
重命名:mv mongodb-linux-x86_64-rhel62-3.2.10 mongodb3.2
。
修改/etc/profile文件:export /home/mongodb/mongodb3.2/bin
,并重新生效 source /ect/profile
。
mkdir -p /data/mongodb/27011 /data/mongodb/27021/data/mongodb/27031
进入mongodb安装目录创建配置文件目录:mkdir clusting
。
vi clusting/27011.conf
port=27011
bind_ip=192.168.190.128
logpath=/data/mongodb/27011/l.log
logappend=true
pidfilepath=/data/mongodb/27011/l.pid
dbpath=/data/mongodb/27011
replSet=rs001
fork=true
创建27021.conf 27031.conf文件,与上面内容相同,只需要修改有配置的位置。
mongod -f clusting/27011.conf,同时启动27021,27031端口数据服务。
mongo --port 27011 --host 192.168.190.128
登录mongo服务编写配置,并初始化配置:
cfg={ _id:"rs001", members:[ {_id:0,host:'192.168.190.128:27011',priority:2}, {_id:1,host:'192.168.190.128:27021',priority:1},{_id:2,host:'192.168.190.128:27031',arbiterOnly:true}] };
rs.initiate(cfg)
执行rs.status()
; 查看状态。如果出现error,执行:rs.slaveOk()
重复(2)(3)(4)(5)步骤,创建shard2、shard3,注意需要将replSet、_id设置为相应的rs002、rs003。至此,数据接口创建完成。
mkdir /data/mongodb/27014 /data/mongodb/27024 /data/mongodb/27034
vi clusting/27014.conf
如下:
port=27014
bind_ip=192.168.190.128
logpath=/data/mongodb/27014/l.log
logappend=true
pidfilepath=/data/mongodb/27014/l.pid
dbpath=/data/mongodb/27014
replSet=configReplSet
fork=true
configsvr=true
创建27024.conf、27034.conf配置服务文件,内容一致,修改指定位置。
mongod -f clusting/27014.conf
,同时启动27024、27034配置服务。
mongo --port 27014 --host 192.168.190.128
登录mongo服务
在mongo中执行
rs.initiate( {_id: "configReplSet",configsvr: true,members: [{ _id: 0, host: "192.168.190.128:27014"},{ _id: 1, host: "192.168.190.128:27024"},{ _id: 2, host: "192.168.190.128:27034"}]} )
至此,mongodb的config server配置成功。
mkdir /data/mongodb/27015 /data/mongodb/27025 /data/mongodb/27035
vi clusting/27015.conf:
port=27015
logpath=/data/mongodb/27015/l.log
pidfilepath=/data/mongodb/27015/l.pid
configdb=configReplSet/192.168.190.128:27014,192.168.190.128:27024,192.168.190.128:27034
fork=true
创建27025.conf、27035.conf的Router配置服务。
mongos -f clusting/27015.conf
,同时启动27025、27035服务。
mongo --port 27015 --host 192.168.190.128
sh.addShard("rs001/192.168.190.128:27011,192.168.190.128:27021,192.168.190.128:27031")
sh.addShard("rs002/192.168.190.128:27012,192.168.190.128:27022,192.168.190.128:27032")
sh.addShard("rs003/192.168.190.128:27013,192.168.190.128:27023,192.168.190.128:27033")
如果出现错误,请排查/etc/hosts或其他问题。
执行: sh.enableSharding("transport")
对数据库transport进行分片操作。
执行: sh.shardCollection( "transport.kuaixin", {"_id": "hashed" } )
,对业务1collection的分配规则
执行: sh.shardCollection( "transport.lixin", {"_id": "hashed" } )
,对业务2collection的分配规则。
至此,Mongodb集群搭建完成。
执行sh.status()
查看搭建状态,其中是没有显示出Arbiter节点,因为这个节点只用于投票,不存储副本数据。
**
注意:推荐使用3台服务器以上搭建。
**