一、背景
创建高可用、高性能、可扩展、易伸缩的Mongodb集群需创建具有3个Shard(每个包含1 Primary,1 Secondary,1 Arbiter),3个Config Servers,3个Router。
在单台服务上搭建,各个端口都不相同:
Shard1 |
Shard2 |
Shard3 |
Config |
Router |
27011 |
27012 |
27013 |
27014 |
27015 |
27021 |
27022 |
27023 |
27024 |
27025 |
27031 |
27023 |
27033 |
27034 |
27035 |
如果有多台服务器,可安装下图指定端口,三台情况:
|
Shard1 |
Shard2 |
Shard3 |
Config |
Router |
第一台 |
27011 |
27012 |
27013 |
27014 |
27015 |
第二台 |
27011 |
27012 |
27013 |
27014 |
27015 |
第三台 |
27011 |
27012 |
27013 |
27014 |
27015 |
注意:以下步骤均是采用单台服务上部署。
二、环境搭建
1.下载Mongodb最新安装包: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。
2.创建数据文件:mkdir -p /data/mongodb/27011 /data/mongodb/27021/data/mongodb/27031进入mongodb安装目录创建配置文件目录mkdir clusting。
3.创建shard文件配置: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文件,与上面内容相同,只需要修改有配置的位置。
4.启动服务mongod -f clusting/27011.conf,同时启动27021,27031端口数据服务。
5.执行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()
6.重复(2)(3)(4)(5)步骤,创建shard2、shard3,注意需要将replSet、_id设置为相应的rs002、rs003。至此,数据接口创建完成。
7.创建confing server数据目录,mkdir /data/mongodb/27014 /data/mongodb/27024 /data/mongodb/27034
8.配置confing server节点,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配置服务文件,内容一致,修改指定位置。
9.启动配置服务mongod -f clusting/27014.conf,同时启动27024、27034配置服务。
10.执行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配置成功。
11.创建Router,mkdir /data/mongodb/27015 /data/mongodb/27025 /data/mongodb/27035
12.编写Router配置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配置服务。
13.启动27015 Router服务:mongos -f clusting/27015.conf,同时启动27025、27035服务。
14.登录Routers服务,mongo --port 27015 --host 192.168.190.128
15.在Router服务中添加分片信息,顺序执行:
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" } ) ,对collection的分配规则
执行: sh.shardCollection( "transport.lixin", {"_id": "hashed" } ) ,对collection的分配规则。
至此,Mongodb集群搭建完成。
执行sh.status()查看搭建状态,其中是没有显示出Arbiter节点,因为这个节点只用于投票,不存储副本数据。
注意:推荐使用3台服务器以上搭建。